有没有办法在tensorflow
操作中使用具有动态形状的张量形状,而无需在会话中对其进行评估? 例如,考虑以下因素:在张量流操作中使用具有动态形状的张量形状
activation = tf.nn.relu(conv_plus_b, name=scope.name) #has shape [None, None, 700,1]
conv_len =activation.shape[1]
pool = tf.nn.max_pool(activation, ksize=[1,conv_len,1,1], strides=[1,1,1,1], padding='VALID')
运行这段代码引发错误:TypeError: Expected int for argument 'ksize' not Dimension(None)
。
所以我的问题是:有没有任何方式使用这种动态形状来定义tensorflow
操作的形状参数,而无需在会话中对其进行评估?
我发现了一个类似的问题:下面的解决方案提出了使用动态形状tensorflow
进行调整操作 https://groups.google.com/a/tensorflow.org/forum/#!topic/discuss/BlguDbTxCAk :
n = tf.shape(foo)[0]
tf.reshape(foo, tf.pack([n, 1]))
tf.pack已被弃用。我不确定tf.stack是否可以在tf.reshape操作中工作,但在tf.nn.max_pool中使用它会抛出错误TypeError: Expected list for attr ksize
我知道形状函数有不同的变体。我已经尝试过activation.get_shape()[1](我听说它适用于静态形状),activation.shape [1]和tf.shape(激活)[1]。他们都抛出错误。
非常感谢您关注此事。