这个问题可能问得有点傻…但是…
在Keras中,当在初始的Embedding
层之后使用LSTM时(例如Keras LSTM-IMDB教程代码),Embedding
层是如何知道存在时间维度的?换句话说,Embedding
层是如何知道训练数据集中每个序列的长度的?Embedding
层如何知道我是在训练句子,而不是单个词?它是在训练过程中推断出来的吗?
回答:
Embedding
层通常是模型的第一层或第二层。如果它是第一层(通常在使用Sequential
API时),那么你需要指定它的输入形状,形状可以是(seq_len,)
或(None,)
。如果它是第二层(通常在使用Functional
API时),那么你需要指定第一层,这是一个Input
层。对于这一层,你也需要指定形状。当形状为(None,)
时,输入形状是从 feeding到模型的数据批次大小中推断出来的。