Skip to main content
 首页 » 编程设计

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

2024年08月14日34Terrylee

在 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.")