为了账号安全,请及时绑定邮箱和手机立即绑定

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 关注
  • 284 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号