【问题标题】:Keras model graph is disconnected when trying to use a shared model尝试使用共享模型时,Keras 模型图断开连接
【发布时间】:2020-06-05 12:32:03
【问题描述】:

我正在尝试在 keras 中训练一个神经网络,但我得到的错误是任何变量都没有梯度,这可能意味着图形已断开连接。 我在这里复制了一个精简版的代码,只有与模型定义相关的部分。

该模型接受两个输入,一次一个,输入到同一个共享模型:编码器。 然后将编码器的两个输出连接起来并发送到一个密集层以计算最终输出。

我不明白出了什么问题,看起来在实例化编码器时我正在创建其他任何地方都没有使用的可训练变量。

对于网络布局,我从 keras 官方文档中获得了灵感: https://keras.io/guides/functional_api/#all-models-are-callable-just-like-layers

def _get_encoder(self, model_input_shape):
    encoder_input = Input(shape=model_input_shape)

    x = encoder_input

    x = Conv2D(32, (3, 3), strides=1, padding="same")(x)
    x = BatchNormalization(axis=-1)(x)        
    x = LeakyReLU(alpha=0.1)(x)

    latent_z = Flatten()(x)
    latent_z = Dense(self.latent_dim)(latent_z)


    encoder = Model(
            encoder_input,
            latent_z,
            name='encoder'
    )

    return encoder

def build_model(self):
    model_input_shape = (self.height, self.width, self.depth)

    model_input_1 = Input(shape=model_input_shape)
    model_input_2 = Input(shape=model_input_shape)

    self.encoder = self._get_encoder(model_input_shape)

    z_1 = self.encoder(model_input_1)
    z_2 = self.encoder(model_input_2)

    x = concatenate([z_1, z_2])

    prediction = Dense(1, activation='sigmoid')(x)

    self.network = Model(
            inputs=[model_input_1, model_input_2],
            outputs=[prediction],
            name = 'network'
    )

network.network.compile(
            optimizer='rmsprop', 
            loss='mse', 
            metrics=['mae'])

H = network.network.fit(
            x=train_gen,
            validation_data=test_gen,
            epochs=EPOCHS,
            steps_per_epoch=STEPS,
            validation_steps=STEPS)

【问题讨论】:

    标签: python tensorflow keras deep-learning neural-network


    【解决方案1】:

    我发现了问题。我的自定义数据生成器返回列表 [x,y] 而不是元组 (x,y)。其中 x 是输入,y 是目标。一个简单的错误导致完全不相关的错误。

    【讨论】:

      猜你喜欢
      • 2019-07-14
      • 1970-01-01
      • 2015-10-24
      • 2019-03-05
      • 2021-08-30
      • 1970-01-01
      • 1970-01-01
      • 2022-01-03
      • 2019-04-07
      相关资源
      最近更新 更多