我有一个香草前馈神经网络(2隐藏层和softmax输出层),做文本分类。它是用tflearn实现的。Tflearn排名文件与神经网络没有softmax输出层
softmax所做的是将输出转换为密度概率分布,以确定输入实例最可能的类别。
而不是分类,我想排名文件(每个类将有一个“分数”,而不是一个概率)。所以我的方法不是标准化输出层,而是仅使用常规图层(使用S形启动函数)。这会给我这个分数(在0和1之间)的每个文件。
我定义的模型是这样的:
tf.reset_default_graph()
# Build neural network
net = tflearn.input_data(shape=[None, x_size])
net = tflearn.fully_connected(net, self.HIDDEN_LAYER_SIZE)
net = tflearn.fully_connected(net, self.HIDDEN_LAYER_SIZE)
net = tflearn.fully_connected(net, y_size, activation='sigmoid')
net = tflearn.regression(net)
# Define model and setup tensorboard
model = tflearn.DNN(net)
return model
如果我训练模型与SOFTMAX输出,该模型是相当准确的。但是如果我改变一个S形输出激活函数,我的分数就不如我预期的那么准确(正确的分数是最高的)。在某些情况下,分数完全错误。
我的问题是:这种方法是正确的做文本排名与神经网络?为什么分数不像预期的那样(也许我在训练期间缺少一些东西,或者某些超参数需要一些调整,或者我是否需要使用此方法的更多训练数据?或者是什么与tflearn?)。
在此先感谢! Ivan