我是TensorFlow的新手,正在使用官方教程中的tf.estimator.DNNClassifier和自定义估计器来构建简单的神经网络以解决分类问题。
在训练时:
dnn_model = tf.estimator.DNNClassifier(hidden_units=[10,10,10], feature_columns = my_features_column, n_classes=5, optimizer = tf.train.AdamOptimizer() )dnn_model.train(input_fn=train_input_func)
它会在特定时间报告损失,如下所示:
INFO:tensorflow:Calling model_fn.INFO:tensorflow:Done calling model_fn.INFO:tensorflow:Create CheckpointSaverHook.INFO:tensorflow:Graph was finalized.INFO:tensorflow:Restoring parameters from /tmp/tmphwkvj5le/model.ckpt-150INFO:tensorflow:Running local_init_op.INFO:tensorflow:Done running local_init_op.INFO:tensorflow:Saving checkpoints for 150 into /tmp/tmphwkvj5le/model.ckpt.INFO:tensorflow:loss = 133.04277, step = 150INFO:tensorflow:global_step/sec: 115.114INFO:tensorflow:loss = 128.15938, step = 250 (0.872 sec)INFO:tensorflow:global_step/sec: 134.317INFO:tensorflow:loss = 123.093094, step = 350 (0.743 sec)INFO:tensorflow:global_step/sec: 133.573INFO:tensorflow:loss = 117.80729, step = 450 (0.748 sec)INFO:tensorflow:global_step/sec: 135.081INFO:tensorflow:loss = 114.07168, step = 550 (0.741 sec)INFO:tensorflow:Saving checkpoints for 650 into /tmp/tmphwkvj5le/model.ckpt.INFO:tensorflow:Loss for final step: 118.19583.
我想在每个批次或周期打印分类精度,就像Keras中的日志信息一样:
Epoch 1/205000/5000 [==============================] - 1s 157us/step - loss: 1.4885 - acc: 0.3276 - val_loss: 1.4397 - val_acc: 0.3620Epoch 2/205000/5000 [==============================] - 0s 66us/step - loss: 1.3792 - acc: 0.3922 - val_loss: 1.4001 - val_acc: 0.3768..
关于这个问题,我该如何找到相关的教程?我找到的都是关于更底层API(张量、会话等)的内容。
回答:
你可以使用估计器训练中的’hooks’选项。
你想要使用的特定钩子是这个:https://www.tensorflow.org/api_docs/python/tf/train/LoggingTensorHook
类似的问题在这里得到了解决:https://stackoverflow.com/a/45716062/10498246,他们在一个不同的训练函数中使用了Logging Tensor Hook。