Python TensorFlow:使用conv2d_转置列出索引超出范围

Python TensorFlow:使用conv2d_转置列出索引超出范围,python,tensorflow,neural-network,Python,Tensorflow,Neural Network,我想使用卷积转置获得2700个值的张量,输入如下: input = tf.placeholder(tf.float32, shape=(batch_size, 1 , 1 ,1)) 为此,我使用了函数 这是我的密码: import tensorflow as tf import numpy as np sess = tf.Session() batch_size = 20 input = tf.placeholder(tf.float32, shape=(batch_size, 1 ,

我想使用卷积转置获得2700个值的张量,输入如下:

input = tf.placeholder(tf.float32, shape=(batch_size, 1 , 1 ,1))
为此,我使用了函数

这是我的密码:

import tensorflow as tf

import numpy as np

sess = tf.Session()

batch_size = 20

input = tf.placeholder(tf.float32, shape=(batch_size, 1 , 1 ,1))

logits = tf.nn.conv2d_transpose(input, [batch_size,1,2700,1],[batch_size, 1, 2700, 1],[1,1,3,1],'SAME')
运行此程序时,最后一行出现以下错误:

IndexError: list index out of range
以下是Python返回的完整错误:

IndexError                                Traceback (most recent call last)
<ipython-input-34-724f7880c01d> in <module>()
      9 input = tf.placeholder(tf.float32, shape=(batch_size, 1 , 1 ,1))
     10 
---> 11 logits = tf.nn.conv2d_transpose(input, [batch_size,1,2700,1],[batch_size, 1, 2700, 1],[1,1,3,1],'SAME')

/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/nn_ops.py in conv2d_transpose(value, filter, output_shape, strides, padding, data_format, name)
   1223     filter = ops.convert_to_tensor(filter, name="filter")  # pylint: disable=redefined-builtin
   1224     axis = 3 if data_format == "NHWC" else 1
-> 1225     if not value.get_shape()[axis].is_compatible_with(filter.get_shape()[3]):
   1226       raise ValueError("input channels does not match filter's input channels, "
   1227                        "{} != {}".format(value.get_shape()[axis],

/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/tensor_shape.py in __getitem__(self, key)
    610         return TensorShape(self._dims[key])
    611       else:
--> 612         return self._dims[key]
    613     else:
    614       if isinstance(key, slice):

IndexError: list index out of range
索引器错误回溯(最近一次调用)
在()
9输入=tf.占位符(tf.float32,形状=(批次大小,1,1,1))
10
--->11 logits=tf.nn.conv2d_转置(输入,[batch_size,12700,1],[batch_size,12700,1],[1,1,3,1],“相同”)
/conv2d_转置中的usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/nn_ops.py(值、过滤器、输出形状、跨步、填充、数据格式、名称)
1223 filter=ops.convert_to_tensor(filter,name=“filter”)#pylint:disable=重新定义的内置
1224轴=3,如果数据格式=“NHWC”或1
->1225如果不是value.get_shape()[axis]。是否与(filter.get_shape()[3])兼容:
1226提升值错误(“输入通道与过滤器的输入通道不匹配,”
1227“{}!={}”.format(value.get_shape()[axis],
/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/tensor\u shape.py in\uuuuuuu getitem\uuuuu(self,key)
610返回张量形状(自身尺寸[键])
611其他:
-->612返回自亮度[键]
613其他:
614如果存在(键,切片):
索引器:列表索引超出范围
欢迎提供一些帮助

从的文档中可以看出,您需要为
过滤器
输出_形
定义占位符,类似于您为
输入
所做的操作

为我运行的以下测试代码没有返回错误。请对所需的输出大小进行必要的更改:

import tensorflow as tf

import numpy as np

sess = tf.Session()

batch_size = 20

input = tf.placeholder(tf.float32, shape=(batch_size, 1 , 1 ,1))

filter = tf.placeholder(tf.float32, shape=(batch_size, 1 , 2700 ,1))

out = tf.placeholder(tf.int32, shape=(4,))

logits = tf.nn.conv2d_transpose(input, filter,out,[1,1,3,1],'SAME')