Python TensorFlow馈送一个整数
我试图对可变的输入大小进行卷积。为了实现这一点,我使用了1的批量大小。但是,其中一个节点是max pooling节点,它需要输入的形状作为列表Python TensorFlow馈送一个整数,python,neural-network,tensorflow,convolution,conv-neural-network,Python,Neural Network,Tensorflow,Convolution,Conv Neural Network,我试图对可变的输入大小进行卷积。为了实现这一点,我使用了1的批量大小。但是,其中一个节点是max pooling节点,它需要输入的形状作为列表ksize: pooled = tf.nn.max_pool( h, ksize=[1, self.input_size - filter_size + 1, 1, 1], strides=[1, 1, 1, 1], paddi
ksize
:
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")
现在,显然可以从输入(占位符)推断输入大小:
但是我不能使用self.input\u x.get\u shape()[0]
,因为形状是动态的。因此,我打算在每一步将输入大小作为feed_dict传递。但是,我不知道如何在提要中传递整数。每个占位符都是张量,因此如果我这样做:
self.input_size = tf.placeholder(tf.int32, shape=(), name="input_size")
我必须执行self.input\u size.eval()
来获取int值,这给了我一个错误,我需要输入input\u size
。我猜这是因为eval在训练步骤发生之前触发了计算,此时输入大小没有值
有没有一种方法可以动态地获得一个运算来计算输入的形状,或者是一种将整数传递给训练步骤的方法?我不确定这是否是最好的方法,但您可以在一个列表中动态地获得
self.input_x
的形状:
input_shape = tf.unpack(tf.shape(self.input_x))
tf.shape(self.input_x)
为您提供一个表示self.input_x形状的张量,并f.unpack
将其转换为张量列表
现在,您可以使用以下各项创建最大池节点:
pooled = tf.nn.max_pool(
h,
ksize=tf.pack([1, input_size[1] - filter_size + 1, 1, 1]),
strides=[1, 1, 1, 1],
padding='VALID',
name="pool")
(如果您需要输入x的第二个维度)我不确定这是不是最好的方法,但您可以动态地获得
self的形状。输入x在一个列表中,包含:
input_shape = tf.unpack(tf.shape(self.input_x))
tf.shape(self.input_x)
为您提供一个表示self.input_x形状的张量,并f.unpack
将其转换为张量列表
现在,您可以使用以下各项创建最大池节点:
pooled = tf.nn.max_pool(
h,
ksize=tf.pack([1, input_size[1] - filter_size + 1, 1, 1]),
strides=[1, 1, 1, 1],
padding='VALID',
name="pool")
(如果需要输入x的第二维)它仍然返回张量列表。我需要第二维度的实际值(整数),并且在运行时。这就是为什么我想把它作为一个参数“feed”,然而,看起来我只能feed张量?你能用“input_size=tf.placeholder(tf.int32)”来feed一个整数吗?它适合我,但我在TFR0.8上,我没有尝试最新版本。对于张量列表问题,我修改了我的答案。我不明白为什么,但是tf.pack ksize数组应该可以工作……这是tf中的一个问题。不管你做什么-ksize将在施工时进行评估,因此这是不可能实现的。啊,好的,对不起。对于tf.reforme或tf.image.resize_images函数,我通常会动态获得张量的形状。我希望它适用于tf.nn.max_pool…请注意:tf.pack
在Tensorflow 1.0中被重命名为tf.stack
,它仍然返回一个张量列表。我需要第二维度的实际值(整数),并且在运行时。这就是为什么我想把它作为一个参数“feed”,然而,看起来我只能feed张量?你能用“input_size=tf.placeholder(tf.int32)”来feed一个整数吗?它适合我,但我在TFR0.8上,我没有尝试最新版本。对于张量列表问题,我修改了我的答案。我不明白为什么,但是tf.pack ksize数组应该可以工作……这是tf中的一个问题。不管你做什么-ksize将在施工时进行评估,因此这是不可能实现的。啊,好的,对不起。对于tf.reforme或tf.image.resize_images函数,我通常会动态获得张量的形状。我希望它适用于tf.nn.max_pool…只需注意:tf.pack
在Tensorflow 1.0中被重命名为tf.stack