python - 如何在 TensorFlow 2.0 中控制冗长

标签 python tensorflow neural-network tensorflow2.0

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

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

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

最佳答案

如果您不使用 Keras 模型方法(.fit.train_on_batch、...)并且您使用 eager execution(和可选择将其包装在 tf.function 中以将其转换为图形表示形式)您可以像在 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.")

关于python - 如何在 TensorFlow 2.0 中控制冗长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55160570/

相关文章:

python - 查找图像中的所有圆圈

python - Keras 的 LSTM 的时间步长是多少?

python - 有没有办法在训练步骤后直接更新层/变量的权重?

python - 如何在使用 DNNCLassifier 时可视化嵌入 - Tensorflow

Tensorflow:损失减少,但精度稳定

python - 我需要 objectify.SubElement 的 polyfill

python - 当字符串传递给函数时,特殊字符编码会丢失

python - 如何修复 'else' 输出超过 1 个结果

machine-learning - 将长一维矢量数据、一维矢量标签输入 Caffe

neural-network - 反向传播的不同损失函数