我可以在全球每一步都得到训练损失。但我确实想在张量板的图表“lossxx”中添加评估损失。怎么做?
MyHook 类(tf.train.SessionRunHook): def after_run(self,run_context,run_value): _session = run_context.session _session.run(_session.graph.get_operation_by_name('acc_op')) def my_model(功能,标签,模式): ... logits = tf.layers.dense(net, 3, activation=None) predict_classes = tf.argmax(logits, 1) 如果模式 == tf.estimator.ModeKeys.PREDICT: 预测 = { “类”:预测类, “概率”:tf.nn.softmax(logits) } 返回 tf.estimator.EstimatorSpec(模式,预测=预测) # 计算损失。 损失= tf.losses.sparse_softmax_cross_entropy(标签=标签,logits=logits) acc, acc_op = tf.metrics.accuracy(labels=labels, predictions=predicted_classes) tf.identity(acc_op,'acc_op') loss_sum = tf.summary.scalar('lossxx',loss) accuracy_sum = tf.summary.scalar('accuracyxx',acc) 合并 = tf.summary.merge_all() # 创建训练操作。 如果模式 == tf.estimator.ModeKeys.TRAIN: 优化器 = tf.train.AdagradOptimizer(learning_rate=0.1) train_op = optimizer.minimize(loss, global_step=tf.train.get_global_step()) return tf.estimator.EstimatorSpec(模式,损失=损失,train_op=train_op, training_chief_hooks=[ tf.train.SummarySaverHook(save_steps=10, output_dir='./model', summary_op=merg)]) 返回 tf.estimator.EstimatorSpec( 模式,损失=损失,eval_metric_ops={'accuracy': (acc, acc_op)} ) 分类器.train(input_fn=train_input_fn, steps=1000,hooks=[ MyHook()])