Python TensorFlow创建动态形状变量
我需要创建一个Python TensorFlow创建动态形状变量,python,tensorflow,Python,Tensorflow,我需要创建一个tf.Variable,其形状只有在执行时才知道 我将代码简化为以下要点。我需要在占位符中找到大于4的数字,在结果张量中需要将第二项更新为24常数 import tensorflow as tf def get_variable(my_variable): greater_than = tf.greater(my_variable, tf.constant(4)) result = tf.boolean_mask(my_variable, greater_than
tf.Variable
,其形状只有在执行时才知道
我将代码简化为以下要点。我需要在占位符中找到大于4的数字,在结果张量中需要将第二项更新为24常数
import tensorflow as tf
def get_variable(my_variable):
greater_than = tf.greater(my_variable, tf.constant(4))
result = tf.boolean_mask(my_variable, greater_than)
# result = tf.Variable(tf.zeros(tf.shape(result)), trainable=False, expected_shape=tf.shape(result), validate_shape=False) # doesn't work either
result = tf.get_variable("my_var", shape=tf.shape(my_variable), dtype=tf.int32)
result = tf.scatter_update(result, [1], 24)
return result
input = tf.placeholder(dtype=tf.int32, shape=[5])
created_variable = get_variable(input)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
result = sess.run(created_variable, feed_dict={input: [2, 7, 4, 6, 9]})
print(result)
我找到了,但他们没有答案,也没有帮助我 我遇到了同样的问题,偶然发现了同样的未回答的问题,并设法拼凑出一个解决方案,用于在图形创建时创建具有动态形状的变量。请注意,必须在执行
tf.Session.run(…)
之前或第一次执行时定义形状
将tensorflow导入为tf
def get_变量(我的_变量):
大于等于tf.greater(my_变量,tf.constant(4))
结果=tf.boolean\u掩码(my\u变量,大于)
zerofill=tf.fill(tf.shape(my_变量),tf.constant(0,dtype=tf.int32))
#初始化
结果=tf.get\u变量(
“my_var”,shape=None,validate_shape=False,dtype=tf.int32,初始值设定项=zerofill
)
结果=tf.scatter\u更新(结果[1],24)
返回结果
input=tf.placeholder(dtype=tf.int32,shape=[5])
创建的变量=获取变量(输入)
使用tf.Session()作为sess:
sess.run(tf.global\u variables\u initializer())
result=sess.run(创建的变量,feed_dict={input:[2,7,4,6,9]})
打印(结果)
诀窍是创建一个tf.Variable
,其中shape=None
,validate\u shape=False
,并将一个tf.Tensor
交给一个具有未知形状的初始值设定项