Tensorflow - 使张量无法控制

时间:2016-07-19 08:18:23

标签: python tensorflow

如果我使用tf.Variable创建张量,我可以决定张量是否可训练。但是,如果按以下方式定义张量B,如何将张量B设置为无法处理:

A=tf.placeholder(tf.int32,shape=[None,100])

B=tf.zeros_like(A)

1 个答案:

答案 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表示占位符)属性。