グラフが切断されました:テンソルの値を取得できませんTensor



Graph Disconnected Cannot Obtain Value



ケラスでは、あるモデルの出力を別のモデルの出力に接続する場合、テンソルの代わりに2番目のモデルの入力が直接渡されます。

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') #Starting architecture G, Generator_output=Generator(image_shape=(512,512,3)) G.summary D=Discriminator(Generator_output, image_shape=(512,512,3)) D.summary()

上記のコードと同様に、次のエラーが発生します。



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: []

したがって、このようなエラーを回避するには、次のようにする必要があります。別のモデル出力を受信する場合:

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') # Then you can use it like a layer: 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

これは、kerasマルチモデルフュージョンで発生する問題です。