重置Tensorflow流指标的变量

重置Tensorflow流指标的变量,第1张

重置Tensorflow流指标的变量

如果您在两次培训之间重置指标,则可能会出现此现象。如果训练指标是两个不同的 *** 作,则它们不会合并验证指标。我将举一个示例,说明如何保持这些指标不同,以及如何仅重置其中一个。


玩具示例:

logits = tf.placeholder(tf.int64, [2,3])labels = tf.Variable([[0, 1, 0], [1, 0, 1]])#create two different opswith tf.name_scope('train'):   train_acc, train_acc_op = tf.metrics.accuracy(labels=tf.argmax(labels, 1),      predictions=tf.argmax(logits,1))with tf.name_scope('valid'):   valid_acc, valid_acc_op = tf.metrics.accuracy(labels=tf.argmax(labels, 1),      predictions=tf.argmax(logits,1))

训练:

#initialize the local variables has it holds the variables used for metrics calculation.sess.run(tf.local_variables_initializer())sess.run(tf.global_variables_initializer())# initial stateprint(sess.run(train_acc, {logits:[[0,1,0],[1,0,1]]}))print(sess.run(valid_acc, {logits:[[0,1,0],[1,0,1]]}))#0.0#0.0

初始状态符合

0.0
预期。

现在调用训练 *** 作指标:

#training loopfor _ in range(10):    sess.run(train_acc_op, {logits:[[0,1,0],[1,0,1]]})  print(sess.run(train_acc, {logits:[[0,1,0],[1,0,1]]}))# 1.0print(sess.run(valid_acc, {logits:[[0,1,0],[1,0,1]]}))# 0.0

在有效精度不变的情况下,仅更新训练精度

0.0
。调用有效 *** 作:

for _ in range(10):    sess.run(valid_acc_op, {logits:[[0,1,0],[0,1,0]]}) print(sess.run(valid_acc, {logits:[[0,1,0],[1,0,1]]}))#0.5print(sess.run(train_acc, {logits:[[0,1,0],[1,0,1]]}))#1.0

在此,有效精度已更新为新值,而训练精度保持不变。

让我们只重置验证 *** 作:

stream_vars_valid = [v for v in tf.local_variables() if 'valid/' in v.name]sess.run(tf.variables_initializer(stream_vars_valid))print(sess.run(valid_acc, {logits:[[0,1,0],[1,0,1]]}))#0.0print(sess.run(train_acc, {logits:[[0,1,0],[1,0,1]]}))#1.0

有效精度重置为零,而训练精度保持不变。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5617731.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存