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
交给一个具有未知形状的初始值设定项