我想对可变输入大小进行卷积。为了实现这个目标,我使用的。然而批量大小,其中一个节点是需要输入的形状为一个列表ksize
一个最大池节点:TensorFlow提供一个整数
pooled = tf.nn.max_pool(
h,
ksize=[1, self.input_size - filter_size + 1, 1, 1],
strides=[1, 1, 1, 1],
padding='VALID',
name="pool")
现在,显然input_size可从输入(这是一个占位符)推断:
self.input_x = tf.placeholder(tf.int32, [None, None], name="input_x")
但是我不能使用self.input_x.get_shape()[0]
因为形状是动态的。所以我打算在每一步将feed_dict作为输入大小。但是,我无法弄清楚如何在feed_dict中传递一个整数。每一个占位符是一个张量,所以,如果我做的:
self.input_size = tf.placeholder(tf.int32, shape=(), name="input_size")
我会做self.input_size.eval()
得到int值,这给了我,我需要养活input_size
错误。我想这是因为eval在训练步骤发生之前触发了计算,此时input_size没有值。
有没有一种方法可以动态地获得计算输入形状的操作或将整数传递给训练步骤的方法?
它仍然返回张量的列表。我需要第二维的实际值(整数),并在运行时。这就是为什么我想“喂”这个参数,但是,它看起来像我只能喂Tensors? –
你可以用“input_size = tf.placeholder(tf.int32)”提供一个整数吗?它适用于我,但我在TF r0.8,我没有尝试最新版本。对于张量列表的问题,我修改了我的答案。我不明白为什么,但tf.pack ksize阵列应该可以工作... – Corentin
这是TF中的一个问题。无论你做什么 - ksize将在施工时进行评估,所以这是不可实现的。 –