如何解决Keras中嵌入的输入层的尺寸
在以下示例中,我尚不清楚指定输入尺寸Input(shape=(20,))
与Input(shape=(None,))
之间是否有区别:
input_layer = Input(shape=(None,))
emb = Embedding(86,300) (input_layer)
lstm = Bidirectional(LSTM(300)) (emb)
output_layer = Dense(10,activation="softmax") (lstm)
model = Model(input_layer,output_layer)
model.compile(optimizer="rmsprop",loss="categorical_crossentropy",metrics=["acc"])
history = model.fit(my_x,my_y,epochs=1,batch_size=632,validation_split=0.1)
my_x
(形状:2000、20)包含引用字符的整数,而my_y
包含某些标签的一次性编码。使用Input(shape=(None,))
,我看到我可以使用model.predict(my_x[:,0:10])
,即我只能输入10个字符而不是20个字符:这怎么可能?我假设my_x
中的所有20个维度都需要用来预测相应的y。
解决方法
您用None
说的是,输入模型的序列的严格长度为20。虽然模型通常需要固定长度的递归神经网络(如您在此处使用的LSTM),不需要固定的序列长度。因此,LSTM不在乎您的序列是包含20个时间步还是包含100个时间步,因为它只是循环遍历它们。但是,当您将时间步长指定为20时,LSTM预期为20,如果没有得到,则会引发错误。
有关更多信息,请参见Tim {的post}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。