我正在學習 TensorFlow 和 LSTM,我想知道為什么當我訓練它返回一個值時,我的預測輸出有多個值。我的目標是在使用數組進行情感分析訓練后獲得 0 到 1 之間的單個值。訓練輸入數據如下所示:[[59, 21, ... 118, 194], ... [12, 110, ... 231, 127]]所有輸入數組的長度相同,用 0 填充。訓練目標數據如下所示:[1.0, 0.5, 0.0, 1.0, 0.0 ...]模型:model = Sequential()model.add(Embedding(input_length, 64, mask_zero=True))model.add(LSTM(100))model.add(Dense(1, activation=tf.nn.sigmoid))為什么預測似乎一次評估每個單獨的值而不是整個數組?model.predict([192])# Returns [[0.5491102]]model.predict([192, 25])# Returns [[0.5491102, 0.4923803]]model.predict([192, 25, 651])# Returns [[0.5491102, 0.4923803, 0.53853387]]我不想取輸出的平均值,因為輸入數組中的值之間的關系對于情感分析很重要。如果我正在訓練預測單個值,我不明白為什么不輸出單個值。我是 TensorFlow、Keras 和分層神經網絡的新手,所以我確定我遺漏了一些明顯的東西。
1 回答

慕俠2389804
TA貢獻1719條經驗 獲得超6個贊
當你寫:
model.predict([192, 25, 651])
如果您為模型提供三個輸入樣本,因此作為回報,您將獲得三個輸出,每個輸入樣本一個。相反,如果[192, 25, 651]
您真的指的是一個輸入樣本,那么您可以將其包裝在兩個列表中:
model.predict([[[192, 25, 651]]])
原因:最外層的列表對應的是模型所有輸入層的所有輸入數據的列表,這里是一個。第二個列表對應第一個(也是唯一一個)輸入層的數據,第三個列表對應一個輸入樣本。列表輸入就是這種情況,因為多輸入(和多輸出)Keras 模型應該將輸入數組列表作為輸入。一種更好的方法是使用 numpy 數組:
model.predict(np.array([[192, 25, 651]]))
np.array([[192, 25, 651]])
的形狀(1,3)
意味著一個長度為 3 的樣本。
添加回答
舉報
0/150
提交
取消