我们可以将 Keras Input 形状中的特征设为可变而不是固定的吗?
can we make no of features in Keras Input shape as variable and not fixed?
我正在实现一个链式分类器,它将 lstm 模型作为多类问题的二元分类器链。由于一个二元分类器的输出作为特征被送入下一个二元分类器,因此我们不能使输入形状固定在模型的输入层中。我的代码在这里:
def create_model():
input_size=length_long_sentence #107 in my case
embedding_size=128
lstm_size=64
output_size=len(unique_tag_set)
#----------------------------Model--------------------------------
current_input=Input(shape=(input_size,))
emb_current = Embedding(vocab_size, embedding_size, input_length=input_size)(current_input)
out_current=Bidirectional(LSTM(units=lstm_size))(emb_current )
output = Dense(units=1, activation= 'sigmoid')(out_current)
model = Model(inputs=current_input, outputs=output)
#-------------------------------compile-------------
model.compile(optimizer='Adam', loss='binary_crossentropy', metrics=['accuracy'])
return model
model = KerasClassifier(build_fn=create_model, epochs=1,batch_size=256, shuffle = True, verbose = 1,validation_split=0.2)
chain=ClassifierChain(model, order='random', random_state=42)
history=chain.fit(X_train, y_train)
在训练时,我收到链中具有不同输入形状的分类器的警告:
每次训练二元分类器时,都会在 (None,108)、(none,109) 等输入上调用它。
模型摘要在这里:
有什么方法可以在keras模型的输入层中使这个大小(none,107)可变?
使用None
表示Input
层中的可变形状。
current_input=Input(shape=(None,))
我正在实现一个链式分类器,它将 lstm 模型作为多类问题的二元分类器链。由于一个二元分类器的输出作为特征被送入下一个二元分类器,因此我们不能使输入形状固定在模型的输入层中。我的代码在这里:
def create_model():
input_size=length_long_sentence #107 in my case
embedding_size=128
lstm_size=64
output_size=len(unique_tag_set)
#----------------------------Model--------------------------------
current_input=Input(shape=(input_size,))
emb_current = Embedding(vocab_size, embedding_size, input_length=input_size)(current_input)
out_current=Bidirectional(LSTM(units=lstm_size))(emb_current )
output = Dense(units=1, activation= 'sigmoid')(out_current)
model = Model(inputs=current_input, outputs=output)
#-------------------------------compile-------------
model.compile(optimizer='Adam', loss='binary_crossentropy', metrics=['accuracy'])
return model
model = KerasClassifier(build_fn=create_model, epochs=1,batch_size=256, shuffle = True, verbose = 1,validation_split=0.2)
chain=ClassifierChain(model, order='random', random_state=42)
history=chain.fit(X_train, y_train)
在训练时,我收到链中具有不同输入形状的分类器的警告:
每次训练二元分类器时,都会在 (None,108)、(none,109) 等输入上调用它。
模型摘要在这里:
有什么方法可以在keras模型的输入层中使这个大小(none,107)可变?
使用None
表示Input
层中的可变形状。
current_input=Input(shape=(None,))