在 Keras 训练期间如何结合多重损失和准确性?
How to combine multiple loss and accuracy during training in Keras?
参考 ,在训练期间我得到了多个损失和准确性。例如,
Epoch 1/100
1382/1382 [==============================] - 694s 502ms/step - loss: 0.6798 - decoder_loss: 0.3399 - decoder_accuracy: 0.5770 - decoder_accuracy_1: 0.5770 - val_loss: 0.6606 - val_decoder_loss: 0.3373 - val_decoder_accuracy: 0.5783 - val_decoder_accuracy_1: 0.5783
很难理解,我想要的只是损失,准确性,validation_loss和validation_accuracy。有没有办法合并它们。
另一件事是我的日志文件越来越大,因为网络在每个步骤后打印 loss/accuracy 为:
1/1382 [..............................] - ETA: 13:59 - loss: 0.7226 - decoder_loss: 0.3613 - decoder_accuracy: 0.5536 - decoder_accuracy_1: 0.5536
2/1382 [..............................] - ETA: 10:23 - loss: 0.7204 - decoder_loss: 0.3602 - decoder_accuracy: 0.5881 - decoder_accuracy_1: 0.5881
3/1382 [..............................] - ETA: 8:57 - loss: 0.7151 - decoder_loss: 0.3576 - decoder_accuracy: 0.5821 - decoder_accuracy_1: 0.5821
我可以减少它只在epoch结束时输出而不是每一步输出吗?
我假设你使用 keras 的 fit 函数,verbose 为 1。
例如。
model.fit(Xtrain, Ytrain, batch_size = 32, epochs = 100, verbose=1)
您可以将verbose 更改为2,这样每个epoch 只会得到一个输出。或者,如果将 verbose 设置为 0,则可以关闭训练进度输出。
(来源:Keras API)
例如
model.fit(Xtrain, Ytrain, batch_size = 32, epochs = 5, verbose=2)
应该给你这样的输出:
希望这能解决您的问题。如果没有,您可能想分享一些您的代码,以便我们进一步帮助您。
编辑 1:
至于你是否可以影响你的监控指标的问题:是的,你可以,但我只能用假设来回答你的问题,因为我没有你的代码。
如果您将 keras 用于您的模型,您应该在某处使用 keras 的 "compile" 函数。例如
model.compile(optimizer=keras.optimizers.RMSprop(), # Optimizer
# Loss function to minimize
loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True),
# List of metrics to monitor
metrics=["accuracy"])
如果您将指标值更改为您希望看到的值,您可以影响控制台中显示的指标。 (来源:Kearas API,Keras Metrics)
如果您只想查看 loss, accuracy
可以使用上面的示例。如果您在 fit
函数中使用验证 _split 或 validation_datat
,则会相应地生成指标 val_...
。例如
history = model.fit(x_train, y_train,
batch_size=64,
epochs=3,
# We pass some validation for
# monitoring validation loss and metrics
# at the end of each epoch
validation_data=(x_val, y_val))
如果给你举两个例子来形象化我的观点
示例 1 显示 accuracy, loss, val_acc
和 val_loss
示例 2 显示 accuracy, loss,mae, val_acc, val_loss
和 val_mae
为了完整起见,这里 link 到 colab notebook,在那里你可以看到我的代码:Colab for Examples
我希望这有助于彻底解决您的问题。如果不告诉我。
参考
Epoch 1/100
1382/1382 [==============================] - 694s 502ms/step - loss: 0.6798 - decoder_loss: 0.3399 - decoder_accuracy: 0.5770 - decoder_accuracy_1: 0.5770 - val_loss: 0.6606 - val_decoder_loss: 0.3373 - val_decoder_accuracy: 0.5783 - val_decoder_accuracy_1: 0.5783
很难理解,我想要的只是损失,准确性,validation_loss和validation_accuracy。有没有办法合并它们。
另一件事是我的日志文件越来越大,因为网络在每个步骤后打印 loss/accuracy 为:
1/1382 [..............................] - ETA: 13:59 - loss: 0.7226 - decoder_loss: 0.3613 - decoder_accuracy: 0.5536 - decoder_accuracy_1: 0.5536
2/1382 [..............................] - ETA: 10:23 - loss: 0.7204 - decoder_loss: 0.3602 - decoder_accuracy: 0.5881 - decoder_accuracy_1: 0.5881
3/1382 [..............................] - ETA: 8:57 - loss: 0.7151 - decoder_loss: 0.3576 - decoder_accuracy: 0.5821 - decoder_accuracy_1: 0.5821
我可以减少它只在epoch结束时输出而不是每一步输出吗?
我假设你使用 keras 的 fit 函数,verbose 为 1。 例如。
model.fit(Xtrain, Ytrain, batch_size = 32, epochs = 100, verbose=1)
您可以将verbose 更改为2,这样每个epoch 只会得到一个输出。或者,如果将 verbose 设置为 0,则可以关闭训练进度输出。 (来源:Keras API) 例如
model.fit(Xtrain, Ytrain, batch_size = 32, epochs = 5, verbose=2)
应该给你这样的输出:
希望这能解决您的问题。如果没有,您可能想分享一些您的代码,以便我们进一步帮助您。
编辑 1: 至于你是否可以影响你的监控指标的问题:是的,你可以,但我只能用假设来回答你的问题,因为我没有你的代码。 如果您将 keras 用于您的模型,您应该在某处使用 keras 的 "compile" 函数。例如
model.compile(optimizer=keras.optimizers.RMSprop(), # Optimizer
# Loss function to minimize
loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True),
# List of metrics to monitor
metrics=["accuracy"])
如果您将指标值更改为您希望看到的值,您可以影响控制台中显示的指标。 (来源:Kearas API,Keras Metrics)
如果您只想查看 loss, accuracy
可以使用上面的示例。如果您在 fit
函数中使用验证 _split 或 validation_datat
,则会相应地生成指标 val_...
。例如
history = model.fit(x_train, y_train,
batch_size=64,
epochs=3,
# We pass some validation for
# monitoring validation loss and metrics
# at the end of each epoch
validation_data=(x_val, y_val))
如果给你举两个例子来形象化我的观点
示例 1 显示 accuracy, loss, val_acc
和 val_loss
accuracy, loss,mae, val_acc, val_loss
和 val_mae
为了完整起见,这里 link 到 colab notebook,在那里你可以看到我的代码:Colab for Examples
我希望这有助于彻底解决您的问题。如果不告诉我。