3

在 TensorFlow 1.x 中,我可以自由选择在训练期间如何以及何时打印准确率/损失分数。例如,如果我想每 100 个 epoch 打印一次训练损失,tf.Session()我会写:

if epoch % 100 == 0:
    print(str(epoch) + '. Training Loss: ' + str(loss))

在 TF 2.0 (alpha) 发布后,Keras API 似乎强制坚持其标准输出。有没有办法恢复这种灵活性?

4

1 回答 1

3

如果您不使用 Keras 模型方法 ( .fit, .train_on_batch, ...) 并且您使用急切执行编写自己的训练循环(并且可以选择将其包装在 atf.function中以将其转换为图形表示),您可以控制详细程度re 曾经在 1.x 中做

training_epochs = 10
step = 0
for epoch in range(training_epochs)
    print("starting ",epoch)
    for features, labels in dataset:
        with tf.GradientTape() as tape:
            loss = compute_loss(model(features),labels)
        gradients = tape.gradients(loss, model.trainable_variables)
        optimizer.apply_gradients(zip(gradients, model.trainable_variables))
        step += 1
        if step % 10 == 0:
            # measure other metrics if needed
            print("loss: ", loss)
    print("Epoch ", epoch, " finished.")
于 2019-03-14T11:14:10.697 回答