假设我有一定的张量x
其维度未在图初始化时定义。
我可以使用以下方法获得它的形状:
x_shape = tf.shape(input=x)
现在,如果我想根据中定义的值创建一个变量x_shape
using:
y = tf.get_variable(variable_name="y", shape=[x_shape[0], 10])
我收到错误,因为传递给参数形状的值必须是int
并不是Tensor
。如何在不使用占位符的情况下创建这样一个动态形状的变量?
我的时间不多了,所以这又快又脏,但也许它可以帮助你找到解决方案......
正是基于此(tf.zeros 的动态大小) https://stackoverflow.com/questions/34718736/dynamic-size-for-tf-zeros-for-use-with-placeholders-with-none-dimensions但将这个想法扩展到 tf.Variables。因为你的变量无论如何都需要初始化 - 我选择 0s...
import tensorflow as tf
I1_ph = tf.placeholder(name = "I1",shape=(None,None,None),dtype=tf_dtype)
zerofill = tf.fill(tf.shape(I1_ph), 0.0)
myVar = tf.Variable(0.0)
updateMyVar = tf.assign(myVar,zerofill,validate_shape=False)
res, = sess.run([updateMyVar], { I1_ph:np.zeros((1,2,2)) } )
print ("dynamic variable shape",res.shape)
res, = sess.run([updateMyVar], { I1_ph:np.zeros((3,5,2)) } )
print ("dynamic variable shape",res.shape)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)