Keras输出形状具有额外的尺寸

时间:2019-05-02 14:51:17

标签: python-3.x tensorflow keras

我有一个神经网络,可以接收500px x 500px的RGB彩色图像,并且还将输出相同尺寸的另一幅图像。

这是我的网络结构:

[[[0,0],[0,1],[0,2]],[[1,0],[1,1],[1,2]],[[2,0],[2,1],[2,2]]]

我遇到的问题是出来的尺寸是[None,500,500,3] 尽管我原本以为他们是[500,500,3]。我不确定额外维度来自何处。

重要的是,在离开网络之前,必须先删除尺寸,因为它会进入第二个对抗网络。

这是我打印Generative_Model = Sequential([ Conv2D(32, (6, 6), padding="same", name="generative", input_shape=(500,500, 3), data_format="channels_last") PReLU(alpha_initializer='zeros'), Conv2D(3, (3, 3), padding="same"), PReLU(alpha_initializer='zeros', name="outp1"), ]) 时得到的:

output from model.summary()

我尝试在末尾添加重塑形状以强制网络降低最后一个尺寸,但是由于输出形状似乎保持不变,因此它似乎无法正常工作。

1 个答案:

答案 0 :(得分:1)

在聊天中与@Dodge交谈时,他指出了以下文档:

https://www.tensorflow.org/api_docs/python/tf/keras/layers/Reshape

,其中指出其他“无”来自批次长度。我需要将第一个网络的输出输入到第二个输出中,而第二个输出预期没有批处理维度,因此我在第一个网络外部使用了重塑功能,将其删除,如下所示:

#Adversierial network which is comprised of a generator network and a discriminator network.
self.model = Sequential([
   Gen_Input, # Generator Network
   Reshape((500, 500, 3), input_shape=(500, 500, 3)),
   discriminative_model.Input # Discriminator Network
        ])

这使我能够从图形内部重塑输出。