栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

重置Tensorflow流指标的变量

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

重置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

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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/611608.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号