亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

TensorFlow Keras 返回多個預測,同時期待一個

TensorFlow Keras 返回多個預測,同時期待一個

慕娘9325324 2021-09-28 21:06:23
我正在學習 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 的樣本。


查看完整回答
反對 回復 2021-09-28
  • 1 回答
  • 0 關注
  • 305 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號