gpt4 book ai didi

python-3.x - 图断开连接 : cannot obtain value for tensor Tensor

转载 作者:行者123 更新时间:2023-12-04 00:03:31 28 4
gpt4 key购买 nike

我必须用生成器和判别器训练一个 GAN 网络。我的发电机网络如下。

def Generator(image_shape=(512,512,3):
inputs = Input(image_shape)
# 5 convolution Layers
# 5 Deconvolution Layers along with concatenation
# output shape is (512,512,3)
model=Model(inputs=inputs,outputs=outputs, name='Generator')
return model, output

我的鉴别器网络如下。鉴别器网络的第一步是我必须将鉴别器的输入与生成器的输出连接起来。

def Discriminator(Generator_output, image_shape=(512,512,3)):
inputs=Input(image_shape)
concatenated_input=concatenate([Generator_output, inputs], axis=-1)
# Now start applying Convolution Layers on concatenated_input
# Deconvolution Layers
return Model(inputs=inputs,outputs=outputs, name='Discriminator')

启动架构

G, Generator_output=Generator(image_shape=(512,512,3))
G.summary

D=Discriminator(Generator_output, image_shape=(512,512,3))
D.summary()

我的问题是当我将 concatenated_input 传递给 convolution 层时,它会出现以下错误。

Graph disconnected: cannot obtain value for tensor Tensor("input_1:0", shape=(?, 512, 512, 3), dtype=float32) at layer "input_1". The following previous layers were accessed without issue: []

如果我删除连接层,它可以完美地工作,但为什么它在连接层之后不起作用,尽管连接中的输入和 Generator_output 的形状也相同,即 (512,512,3)

最佳答案

在这里对您有所帮助的关键见解是,模型就像 Keras 中的层,但自包含。因此,要将一个模型输出连接到另一个模型,您需要说第二个模型接收匹配形状的输入,而不是直接传递该张量:

def Discriminator(gen_output_shape, image_shape=(512,512,3)):
inputs=Input(image_shape)
gen_output=Input(gen_output_shape)
concatenated_input=concatenate([gen_output, inputs], axis=-1)
# Now start applying Convolution Layers on concatenated_input
# Deconvolution Layers
return Model(inputs=[inputs, gen_output],outputs=outputs, name='Discriminator')

然后你可以像层一样使用它:

G=Generator(image_shape=(512,512,3))
D=Discriminator((512,512,3), image_shape=(512,512,3))
some_other_image_input = Input((512,512,3))
discriminator_output = D(some_other_image_input, G) # model is used like a layer
# so the output of G is connected to the input of D
D.summary()
gan = Model(inputs=[all,your,inputs], outputs=[outputs,for,training])
# you can still use G and D like separate models, save them, train them etc

要一起训练它们,您可以创建另一个具有所有必需输入的模型,称为生成器/鉴别器。考虑使用锁和 key 的想法,每个模型都有一些输入,只要您提供正确的输入,您就可以像在另一个模型中使用层一样使用它们。

关于python-3.x - 图断开连接 : cannot obtain value for tensor Tensor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54151671/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com