我有一個香草前饋神經網絡(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