tf.InteractiveSession() 与 tf.Session()
1 | sess = tf.InteractiveSession() |
而tf.Session()前必须构建好图,再创建session1
2
3
4
5
6
7
8# Build a graph
a = tf.constant(5.0)
b = tf.constant(6.0)
c = a * b
# Launch the graph in a Session
sess = tf.Session()
# Evaluate the tensor 'c'
print(sess.run(c))
tf.app.flags 与 python3 absl.flags
1 | from absl import app |
1 | import tensorflow as tf |
1 | import argparse |
tf.train.ExponentialMovingAverage
Some training algorithms, such as GradientDescent and Momentum often benefit from maintaining a moving average of variables during optimization. Using the moving averages for evaluations often improve results significantly.
tf.train.ExponentialMovingAverage.__init__(self, decay, num_updates=None, zero_debias=False, name="ExponentialMovingAverage"):
参数的移动平均验证效果优于最终训练的结果。
$shadow_variable$ 最初为参数的 $copy$ ,上次为指数衰减, $decay$ 为衰减速率,一般为 $0.9, 0.99$ 等接近 $1$ 的数。
一般来讲,decay越大模型越稳定,因为参数更新更慢,趋于稳定。
1 | import tensorflow as tf |
可参考吴恩达 $deeeplearning.ai$ 指数加权平均。
tf.add_to_collection 与 tf.get_collection
1 | import tensorflow as tf; |
例如在使用L2正则化,网路各层变量需计算tf.nn.l2_loss,将其加入loss列表,最后创建操作求和。
tf.control_dependencies
1 | with g.control_dependencies([a, b, c]): |
tf.name_scope 与 tf.variable_scope
总结
1.tf.variable_scope 与 tf.get_variable 必须搭配使(全局 scope 除外)
2.tf.Variable 可以单独使用,也可以搭配 tf.name_scope 使用,给变量分类命名,模块化
3.tf.Variable 与 tf.variable_scope 搭配使用不伦不类,不是设计者的初衷
当前环境作用域可通过 tf.get_variable_scope 获取。
tensorflow.contrib.slim API
1 | import tensorflow as tf |
1 | # slim convolution 原型 |
1 | import tensorflow as tf |
slim简化更有利于复杂网络编程,slim更多内容请参考官方说明