首页 > 解决方案 > 如何将列表列表传递给张量流?

问题描述

我正在尝试在 tensorflow 中构建一个模型,该模型使用句子来预测图像。我将所有句子转换为每个大小为 300 的列表列表。

0        [-0.22607538080774248, 0.30380163341760635, 0....
1        [-0.10856867488473654, 0.17990960367023945, 0....
2        [-0.15721752890385687, 0.1608753204345703, 0.4...
3        [-0.12894394318573177, 0.13585415855050087, 0....
4        [-0.27382510248571634, 0.22385768964886665, 0....

40449    [-0.28715573996305466, 0.2722414545714855, 0.6...
40451    [-0.04035807272884995, 0.2275269404053688, 0.3...
40452    [-0.19741788890678436, 0.3378600552678108, 0.7...
40453    [-0.10771899553947151, 0.13040382787585258, 0....
40454    [-0.07718773453962058, 0.28313175216317177, 0....
Name: Text, Length: 31978, dtype: object

如何将它作为输入提供给 tensorflow?

我试过了

model = Sequential([
Dense(2, activation="relu", input_shape = (300,)), 
Reshape((256, 256, 3), input_shape = (300,))
])

model.compile(loss='mse', optimizer='adam')
history = model.fit(x_ent, y_ent, epochs=3, batch_size=64)

但是当我编译模型时,它说

ValueError: Error when checking input: expected dense_2_input to have shape (300,) but got array with shape (1,)

此外,我使用 Reshape 图层将矢量转换为图像,但我不知道是否有更好的方法来做到这一点。

标签: tensorflow

解决方案


每张图片需要300个句子进行分类吗?还是每个句子都有一个大小为 300 的特征向量?如果您将每个句子作为一个长度为 300 的列表,并且如果您有 40454 个句子,则您的输入形状必须为 40454x300。所以你可以传递input_shape = (40454,300)给密集输入层。它应该工作。

我参考了tensorflow keras 文档

具有形状的 ND 张量:(batch_size, ..., input_dim)。最常见的情况是具有形状 (batch_size, input_dim) 的 2D 输入。


推荐阅读