【发布时间】:2021-02-23 02:40:26
【问题描述】:
我对 Tensorflow input_shape 有一些困惑。
假设下面定义的“doc”中有3个文档(每行),词汇表有4个单词(每行每个子列表)。
进一步假设每个单词通过单词嵌入由 2 个数字表示。
该程序仅在我在 Dense 层下指定 input_shape=(3,4,2) 时才有效。 但是当我使用 LSTM 层时,程序仅在 input_shape=(4,2) 时有效,而在 input_shape=(3,4,2) 时无效。
那么如何为这些输入指定输入形状呢?如何理解它?
from tensorflow import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, LSTM
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.metrics import categorical_crossentropy
doc=[
[[1,0],[0,0],[0,0],[0,0]],
[[0,0],[1,0],[0,0],[0,0]],
[[0,0],[0,0],[1,0],[0,0]]
]
model=Sequential()
model.add(Dense(2,input_shape=(3,4,2))) # model.add(LSTM(2,input_shape=(4,2)))
model.compile(optimizer=Adam(learning_rate=0.0001),loss="sparse_categorical_crossentropy",metrics=("accuracy"))
model.summary()
output=model.predict(doc)
print(model.weights)
print(output)
【问题讨论】:
-
是不是因为 LSTM 一次输入一个文档中的 4 个单词?所以它不能同时提供所有 3 个文档。
标签: tensorflow deep-learning lstm tensorflow2.0