Python 3.x keras model.fit中不能有输入和输出的名称
简言之: 这条线为什么有用-Python 3.x keras model.fit中不能有输入和输出的名称,python-3.x,keras,lstm,tensorflow2.0,tf.keras,Python 3.x,Keras,Lstm,Tensorflow2.0,Tf.keras,简言之: 这条线为什么有用- model.fit(x_train, y_train, epochs=30, batch_size=40, verbose=2) 而这条线没有 model.fit({"word_input": x_train, "main_output": y_train}, epochs=30, batch_size=40, verbose=2) 进一步解释 我正在尝试用keras实现LSTM。我已经编写了以下代码 word_input
model.fit(x_train, y_train, epochs=30, batch_size=40, verbose=2)
而这条线没有
model.fit({"word_input": x_train, "main_output": y_train}, epochs=30, batch_size=40, verbose=2)
进一步解释
我正在尝试用keras实现LSTM。我已经编写了以下代码
word_input = Input(shape=(mxlen,), dtype="int32", name="word_input")
x1 = Embedding(len(vocab), 100, input_length=mxlen, weights=[embeddings], trainable=False)(word_input)
x1 = LSTM(100)(x1)
y = Dense(6, activation="softmax", name="main_output")(x1)
model = Model(inputs=[word_input], outputs=[y])
adam = optimizers.Adam(learning_rate=0.001, beta_1=0.9, beta_2=0.999, amsgrad=False)
model.compile(optimizer=adam,loss="categorical_crossentropy",metrics=["categorical_accuracy"]) # have to look into it
model.fit({"word_input": x_train, "main_output": y_train}, epochs=30, batch_size=40, verbose=2)
我在最后一行得到一个错误,说“ValueError:没有为任何变量提供梯度”。但当我把最后一行改成这行时,确切的代码就起作用了
model.fit(x_train, y_train, epochs=30, batch_size=40, verbose=2)
我希望在model.fit中为输入和输出指定名称或标签的原因是我希望有多个输入。我从下面的代码行中得到了标签的想法
model.fit(
{'main_input': X_train, 'pos_input': X_train_pos,
'aux_input': X_train_meta, 'dep_input': X_train_dep},
{'main_output': Y_train}, epochs = num_epochs, batch_size = batch_size,
validation_data = (
{'main_input': X_val, 'pos_input': X_val_pos,
'aux_input': X_val_meta, 'dep_input' : X_val_dep},
{'main_output': Y_val}
), callbacks=[csv_logger,checkpoint])
下面给出了整个错误屏幕截图
解决方案
这似乎是tensorflow的一个示例,目前正在开发中,命名输出尚未使用dict
实现
显示当前输入,x
可以使用dict
作为命名输入,但输出,y
还不接受任何dict
fit(
x=None,y=None,批处理大小=None,年代=1,详细=1,回调=None,
验证分割=0.0,验证数据=无,随机播放=真,类权重=无,
样本重量=无,初始历元=0,每个历元的步数=无,
验证步骤=无,验证频率=1,最大队列大小=10,工人数=1,
使用_multiprocessing=False,**kwargs
)
在哪里,
输入,x
=一个numpy数组/数组列表或一个张量、一个dict或一个生成器
如果模型已命名输入,则dict将输入名称映射到相应的数组/张量
输出,y
=numpy数组或张量,或者当x是生成器时未指定
供快速参考
谢谢。我得到它。@斯塔克请考虑<代码>投票。谢谢。我的投票现在被阻止了。一小时后开门。对不起,到时候我会做的。