在 TensorFlow 2.0 中:optimizer.apply_gradients 的训练错误
In TensorFlow 2.0: Training error with optimizer.apply_gradients
我正在尝试学习新的 TF 2.0 alpha 版本。我正在为二元分类目的训练 Sequential
模型。我的数据表是 df
,这是一个 numpy 数组。 classification
是我必须预测的 类 的单热编码数据帧。
模型的定义很清楚,因为它是损失函数和精度函数以及(Adam)优化器的定义。
但是,我在训练时遇到错误:
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: too many values to unpack (expected 2)
我的错误在哪里?
我对此类错误进行了一些研究,但没有发现与此特定功能相关的任何有用信息。感谢任何帮助。
试试这个:
optimizer.apply_gradients(zip(gradients, model.trainable_variables))
我正在尝试学习新的 TF 2.0 alpha 版本。我正在为二元分类目的训练 Sequential
模型。我的数据表是 df
,这是一个 numpy 数组。 classification
是我必须预测的 类 的单热编码数据帧。
模型的定义很清楚,因为它是损失函数和精度函数以及(Adam)优化器的定义。 但是,我在训练时遇到错误:
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: too many values to unpack (expected 2)
我的错误在哪里?
我对此类错误进行了一些研究,但没有发现与此特定功能相关的任何有用信息。感谢任何帮助。
试试这个:
optimizer.apply_gradients(zip(gradients, model.trainable_variables))