Python 带有黑白图像的tensorflow形状问题

Python 带有黑白图像的tensorflow形状问题,python,image,image-processing,colors,tensorflow,Python,Image,Image Processing,Colors,Tensorflow,我是一名tensorflow初学者,请耐心听我说。 现在,我正试图为CNN修改现有的python程序,以创建超分辨率图像。如果您感兴趣,可以在此处找到代码: 输入张量具有形状,5表示批量大小,240和320表示图像大小,3表示通道数(RGB)。我想修改这个黑白图像的程序,所以只需1个频道-> 首先,我将测试和验证图像转换为b/w: image = image.convert('L') 然后图像被写入一个数组,这就是我的问题开始的地方。数组的大小将为。由5个图像组成的数组被写入一个列表,并

我是一名tensorflow初学者,请耐心听我说。 现在,我正试图为CNN修改现有的python程序,以创建超分辨率图像。如果您感兴趣,可以在此处找到代码:

输入张量具有形状,5表示批量大小,240和320表示图像大小,3表示通道数(RGB)。我想修改这个黑白图像的程序,所以只需1个频道->

首先,我将测试和验证图像转换为b/w:

   image = image.convert('L')
然后图像被写入一个数组,这就是我的问题开始的地方。数组的大小将为。由5个图像组成的数组被写入一个列表,并被交给tensorflow

Tensorflow需要一个张量,但图像列表具有该形状,因此缺少一个维度。我尝试用np.expand_dims等添加维度,但没有成功

    input_batches = np.expand_dims(input_batches, axis=-1)
为什么tensorflow占位符的通道索引似乎从1开始,而分辨率索引从0开始


我相信今后还会有很多问题,比如调整过滤器,但这就是我现在遇到的问题。

您需要理解代码。我相信这个问题的根源可能更深。由于信息有限,我假设您使用的是
network.py
。在这里,我们在第16行看到:

    self.inputs = tf.placeholder(
        tf.float32, [batch_size, dimensions[1], dimensions[0], 3], name='input_images'
    )
深度尺寸已硬编码为
3
。你也必须编辑它,可能还有很多其他的东西


作为警告,大多数超分辨率CNN使用小尺寸的补丁。绝对不是
(240320)
,我怀疑由于批量较小,很难收敛。

如果你有一个形状为[5240320]的张量,你可以用这个命令将其重塑为[5240320,1]

correctSizedTensor = tf.reshape( wrongSizedTensor, [5,240,320,1] )

我没有时间写一个完整的答案来研究这个问题,但是如果你看一下MNIST的例子,它们是黑白的,应该给你一些提示。我已经把它改成了维度=1。我确信我将不得不做很多改变,但首先我需要解决这个问题。如果你能发布更多的信息,那就太好了。我不知道将
input\u batches
送入何处。input\u batches只是一个图像数组列表。这被输入到张量self.input(以及其他张量)。张量的形状是5240320,1,但我的列表的形状是5240320。我试过扩展dims,但不起作用。奇怪的是,
np.expand dims
不起作用。我很确定错误在别的地方。您是否也检查了
目标批次的形状
?它确实有效。我的问题是别的。我目前正在培训一组黑白图像,感谢您的帮助:)是否可以重塑列表?是的,这是可能的,只要将该列表放入tensorflow。在其他方面使用numpy函数,如:myNumpyList.reformate((5240320,1))hmm。我尝试过使用input\u batches=np.expand\u dims(input\u batches,axis=4),但它不起作用。Tensorflow stills看到了错误的形状。但是,如果我将轴更改为3,则尺寸标注将显示在第3位(5240,1320)。当轴为4时,尺寸标注不会出现在第4位,这是我想要的(5240320,1)。轴=1或2也可以工作,但不是4或-1。