我每一步都能得到训练损失。但我确实想在tensorboard中的图'lossxx'中添加评估损失。怎么做?
class 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(features, labels, mode): ... logits = tf.layers.dense(net, 3, activation=None) predicted_classes = tf.argmax(logits, 1) if mode == tf.estimator.ModeKeys.PREDICT: predictions = { 'class': predicted_classes, 'prob': tf.nn.softmax(logits) } return tf.estimator.EstimatorSpec(mode, predictions=predictions) # Compute loss. loss = tf.losses.sparse_softmax_cross_entropy(labels=labels, 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) merg = tf.summary.merge_all() # Create training op. if mode == tf.estimator.ModeKeys.TRAIN: optimizer = tf.train.AdagradOptimizer(learning_rate=0.1) train_op = optimizer.minimize(loss, global_step=tf.train.get_global_step()) return tf.estimator.EstimatorSpec(mode, loss=loss, train_op=train_op, training_chief_hooks=[ tf.train.SummarySaverHook(save_steps=10, output_dir='./model', summary_op=merg)]) return tf.estimator.EstimatorSpec( mode, loss=loss, eval_metric_ops={'accuracy': (acc, acc_op)} ) classifier.train(input_fn=train_input_fn, steps=1000,hooks=[ MyHook()])
您需要通过使用tf.estimator.train_and_evaluate
将评估数据与训练数据一起传递给模型
实际上,您不需要自己创建一个SummarySaverHook
,因为它已经包含在tf中。估计员。估计器
。只需使用tf创建您想要的所有摘要。总结xxx
并且每个n
步骤都将对其进行评估。(请参见tf.estimator.RunConfig
)。
此外,您无需为最终损失创建摘要损失
。这也将自动为您创建。如果您这样做,那么培训和评估摘要将显示在TensorBoard上的相同图表中。估计器在您当前的model\u dir
中创建一个子目录eval
,以实现此目的。
还有一个小提示:直接在摘要中使用acc_op
来更新度量值并获取它的值。但是,tf.metrics
函数相当难处理;-)
我有一个ResNet-8网络,我正在用于图像上的域适应项目,基本上我已经在数据集上训练了网络,现在我想在另一个模拟实时环境的数据集上评估它,我试图一次预测一个图像,但有趣的部分来了: 我想对目标数据集进行评估的方法是,对每幅图像,在训练模式下向前传递,以便更新批次规范层统计信息(使用torch.no\u grad(),因为我不想更新网络参数,而只想“适应”批次规范层),然后在评估模式下进行另一次前
我想在每个n批次之后输出它,而不是在每个纪元打印评估损失。 我每个时代大约有15万批。我想每50000批输出一次评估损失。 这可能吗?我正在使用pytorch和huggingface的预训练bert模型。 我的列车循环:
问题内容: 我正在尝试从Rhino书中学习JavaScript。我试图执行本书中有关的以下代码。我正在使用node.js(v0.10.29)执行示例。 但是,当尝试使用别名时,我在函数内部得到了提示: 据我了解,当我别名为,通过在字符串中的代码在全球范围内按ES5进行评估。但是,我遇到了,无法理解原因。 尽管我不认为这是关键功能,但我绝对想了解为什么我会遇到这种行为。 PS:当我尝试在Google
本文向大家介绍TensorFlow如何用于定义损失函数,优化器,训练模型并在Python中的IMDB数据集上对其进行评估?,包括了TensorFlow如何用于定义损失函数,优化器,训练模型并在Python中的IMDB数据集上对其进行评估?的使用技巧和注意事项,需要的朋友参考一下 Tensorflow是Google提供的一种机器学习框架。它是一个开放源代码框架,可与Python结合使用,以实现算法,
我正在谷歌 colab 环境中的 tensorflow 中训练一个 DNN,代码直到昨天都运行良好,但现在当我运行代码的估计器训练部分时,它给出了一个错误。 我不知道到底是什么原因,谷歌colab是否使用任何更新版本的tensorflow,其中某些函数与旧版本不兼容?因为我之前的代码没有问题,我没有改变它。似乎其他代码也存在此问题,例如,斯坦福大学的此示例代码之前运行没有任何错误,https://
问题内容: 假设我具有以下参数的网络: 全卷积网络的语义分割 损失=加权二进制交叉熵(但可以是任何损失函数,都没有关系) 5类-输入是图像,地面真理是二进制掩码 批次大小= 16 现在,我知道损耗是通过以下方式计算的:关于每个类别,将二进制交叉熵应用于图像中的每个像素。因此,基本上每个像素都有5个损耗值 此步骤后会发生什么? 当我训练我的网络时,它只显示一个时期的单个损失值。产生单个值需要发生许多