В TensorFlow 2.0: ошибка обучения с optimizer.apply_gradients - PullRequest
1 голос
/ 20 марта 2019

Я пытаюсь узнать новый альфа-релиз TF 2.0.Я тренирую модель Sequential для бинарной классификации.Мой набор данных df, который является массивом.classification - это горячий кадр данных кодирования классов, которые я должен предсказать.

Определение модели понятно, так как это определение функций потерь и точности и оптимизатор (Адама).Однако в момент обучения я получаю ошибку:

loss_history = []
accuracy_history = []

for epoch in range(n_epochs):

    with tf.GradientTape() as tape:

        # compute binary crossentropy loss (bce_loss)
        current_loss = bce_loss(model(df), classification.astype(np.float64))
        loss_history.append(current_loss)

        # train the model based on the gradient of loss function
        gradients = tape.gradient(current_loss, model.trainable_variables)
        optimizer.apply_gradients([gradients, model.trainable_variables])  # optimizer = Adam


    # print the training progress
    print(str(epoch+1) + '. Train Loss: ' + str(metrics) + ', Accuracy: ' + str(current_accuracy))

print('\nTraining complete.')

В этот момент я получаю ошибку, указанную в optimizer.apply_gradients().Сообщение об ошибке гласит:

ValueError: слишком много значений для распаковки (ожидается 2)

Где моя ошибка?

Я провел небольшое исследованиеэтот тип ошибки, но я не нашел ничего полезного, связанного с этой конкретной функцией.Любая помощь приветствуется.

1 Ответ

3 голосов
/ 20 марта 2019

Попробуйте вместо этого:

optimizer.apply_gradients(zip(gradients, model.trainable_variables))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...