【发布时间】:2020-04-07 18:01:51
【问题描述】:
我正在通过 Keras 的功能 API 实现一个自动编码器模型。我的模型是多输出的,结果是在每个输出上评估一个损失函数。在训练期间,这些损失的加权和被最小化:
losses = [jsd for j in range(m)] # JSD loss function for each output
autoencoder = Model(inputs, decodes)
sgd = optimizers.SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
autoencoder.compile(optimizer=sgd, loss=losses, loss_weights=[1 for k in range(m)]) # each output has the same priority
然后我将我的模型拟合到训练数据并在测试数据上对其进行评估:
history = autoencoder.fit(train_corr, train_attr_corr, epochs=50, batch_size=10, shuffle=True, verbose=2,
validation_data=(test_corr, test_attr_GT))
作为verbose=2,训练和验证损失在每个epoch结束时显示在控制台中。但是,因为模型是多输出的,所以会显示所有的“子损失”。例如:
Epoch 1/50
- 3s - loss: 0.3356 - dense_4_loss: 0.0647 - dense_5_loss: 0.0436 - dense_6_loss: 0.0391 - dense_7_loss: 0.0378 - dense_8_loss: 0.0250 - dense_9_loss: 0.0362 - val_loss: 0.1067 - val_dense_4_loss: 0.0101 - val_dense_5_loss: 0.0042 - val_dense_6_loss: 0.0031 - val_dense_7_loss: 0.0036 - val_dense_8_loss: 0.0041 - val_dense_9_loss: 0.0066
问题:
是否可以只显示每个时期的总训练损失 (loss) 和总验证损失 val_loss?
编辑:
在上面的例子中,我只想显示loss: 0.3356 和val_loss: 0.1067。
【问题讨论】:
-
所有迭代的损失总和??
-
@abdoulsn 不,每个时期所有子损失的总和。在上面的例子中,我只想显示
loss: 0.3356和val_loss: 0.1067。 -
@RutgerMauritz 提供的答案是否有助于您实现预期结果?
-
@DrSpill 成功了!使用回调函数时,它比我想象的要容易。谢谢!
标签: python tensorflow machine-learning keras neural-network