看了网上的一些解释:
如果为True,则会默认将变量添加到图形集合GraphKeys.TRAINABLE_VARIABLES中。此集合用于优化器Optimizer类优化的的默认变量列表,如果为False则在训练时不会更新该值。
自己实验了一下:
import tensorflow as tf
x = tf.Variable(1.0, dtype=tf.float64, trainable=False, name='global_step')
y = tf.Variable(2.0, dtype=tf.float64)
z = tf.assign_add(x, y)
init = tf.initialize_all_variables()
with tf.Session() as sess:
sess.run(init)
print('x:', sess.run(x))
print('z:', sess.run(z))
print('x1:', sess.run(x))
结果:
x: 1.0
z: 3.0
x1: 3.0
说明:虽然x的trainable是False,但x1的值还是变了,说明用于优化器Optimizer类优化的的默认变量列表,如果为False则在训练时不会更新该值。注意是在优化器有用,正常的赋值操作还是会让那其改变