如果我使用tf.Variable
创建张量,我可以决定张量是否可训练。但是,如果按以下方式定义张量B,如何将张量B设置为无法处理:
A=tf.placeholder(tf.int32,shape=[None,100])
B=tf.zeros_like(A)
答案 0 :(得分:4)
A=tf.placeholder(tf.int32,shape=[None,100])
A是占位符,而不是变量。占位符不可训练。
如果您创建变量并将属性trainable
设置为False
x = tf.Variable(0, trainable=False)
你的变量不可训练。
如果使用tf.zeros_like(x)
创建新变量,则此新变量将具有x
的相同属性。
y = tf.zeros_like(x)
您可以使用便捷功能GraphKeys.TRAINABLE_VARIABLES
来验证2个变量是否无法训练,查看tf.trainable_variables
集合。
以下是示例代码:
import tensorflow as tf
x = tf.Variable(0, trainable=False)
assert [] == tf.trainable_variables()
y = tf.zeros_like(x)
assert [] == tf.trainable_variables()
因此,如果您想创建一个具有相同形状和类型的占位符的新变量,并且您希望使其可训练,则必须手动定义它而不使用便于复制{{1}的便捷函数}(总是trainable
表示占位符)属性。