我有一个神经网络,可以接收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"),
])
时得到的:
我尝试在末尾添加重塑形状以强制网络降低最后一个尺寸,但是由于输出形状似乎保持不变,因此它似乎无法正常工作。
答案 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
])
这使我能够从图形内部重塑输出。