Keras中嵌入的输入层的尺寸

时间:2020-09-07 17:50:24

标签: keras embedding

在以下示例中,我尚不清楚指定输入尺寸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。

1 个答案:

答案 0 :(得分:0)

您用None说的是,输入模型的序列的严格长度为20。虽然模型通常需要固定长度的递归神经网络(如您在此处使用的LSTM),不需要固定的序列长度。因此,LSTM不在乎您的序列是包含20个时间步还是包含100个时间步,因为它只是循环遍历它们。但是,当您将时间步长指定为20时,LSTM预期为20,如果没有得到,则会引发错误。

有关更多信息,请参见Tim {的post}