Вкратце: почему эта строка работает -
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)
Дальнейшее объяснение
Я пытаюсь реализовать 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])
Полный скриншот ошибки приведен ниже
![enter image description here](https://i.stack.imgur.com/5pUxG.png)
Любая помощь приветствуется. Заранее спасибо.