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是生成器时未指定


供快速参考


谢谢。我得到它。@斯塔克请考虑<代码>投票。谢谢。我的投票现在被阻止了。一小时后开门。对不起,到时候我会做的。