错误:您试图将包含1层的权重文件加载到包含14层的模型中

2024-06-17 08:35:49 发布

您现在位置:Python中文网/ 问答频道 /正文

由于没有足够的资源,如GPU和Ram,我们正在使用Google Colab来训练模型,但仍然有一些限制,例如Google Colab的GPU的最大时间限制只有12小时。 尽管如此,我们还是在这12个小时内训练了模型,但在第一个纪元之后,损失似乎没有改变,因此我们决定使用自动着色的代码,并且有一个经过训练的权重文件“Colorize.hdf5”,上传到GitHub上(代码可在GitHub链接:https://github.com/hvvashistha/Auto-Colorize),但加载这些权重时,我们会得到一个错误

“您正试图将包含1层的权重文件加载到包含14层的模型中

enter image description here

我们试图将Keras版本降级到2.2.0、2.1.6和2.1.0,但错误没有解决。 我们使用的模型结构与GitHub上提供的相同,但仍然存在错误

型号: 这是模型架构

   #Inputs
embed_input = Input(shape=(1000,))
encoder_input = Input(shape=(256, 256, 1,))

#Encoder
encoder_output = Conv2D(64, (3,3), activation='relu', padding='same', strides=2,
                        bias_initializer=TruncatedNormal(mean=0.0, stddev=0.05))(encoder_input)
encoder_output = Conv2D(128, (3,3), activation='relu', padding='same',
                        bias_initializer=TruncatedNormal(mean=0.0, stddev=0.05))(encoder_output)
encoder_output = Conv2D(128, (3,3), activation='relu', padding='same', strides=2,
                        bias_initializer=TruncatedNormal(mean=0.0, stddev=0.05))(encoder_output)
encoder_output = Conv2D(256, (3,3), activation='relu', padding='same',
                        bias_initializer=TruncatedNormal(mean=0.0, stddev=0.05))(encoder_output)
encoder_output = Conv2D(256, (3,3), activation='relu', padding='same', strides=2,
                        bias_initializer=TruncatedNormal(mean=0.0, stddev=0.05))(encoder_output)
encoder_output = Conv2D(512, (3,3), activation='relu', padding='same',
                        bias_initializer=TruncatedNormal(mean=0.0, stddev=0.05))(encoder_output)
encoder_output = Conv2D(512, (3,3), activation='relu', padding='same',
                        bias_initializer=TruncatedNormal(mean=0.0, stddev=0.05))(encoder_output)
encoder_output = Conv2D(256, (3,3), activation='relu', padding='same',
                        bias_initializer=TruncatedNormal(mean=0.0, stddev=0.05))(encoder_output)

#Fusion
fusion_output = RepeatVector(32 * 32)(embed_input)
fusion_output = Reshape(([32, 32, 1000]))(fusion_output)
fusion_output = concatenate([encoder_output, fusion_output], axis=3)
fusion_output = Conv2D(256, (1, 1), activation='relu', padding='same',
                        bias_initializer=TruncatedNormal(mean=0.0, stddev=0.05))(fusion_output)

#Decoder
decoder_output = Conv2D(128, (3,3), activation='relu', padding='same',
                        bias_initializer=TruncatedNormal(mean=0.0, stddev=0.05))(fusion_output)
decoder_output = UpSampling2D((2, 2))(decoder_output)
decoder_output = Conv2D(64, (3,3), activation='relu', padding='same',
                        bias_initializer=TruncatedNormal(mean=0.0, stddev=0.05))(decoder_output)
decoder_output = UpSampling2D((2, 2))(decoder_output)
decoder_output = Conv2D(32, (3,3), activation='relu', padding='same',
                        bias_initializer=TruncatedNormal(mean=0.0, stddev=0.05))(decoder_output)
decoder_output = Conv2D(16, (3,3), activation='relu', padding='same',
                        bias_initializer=TruncatedNormal(mean=0.0, stddev=0.05))(decoder_output)
decoder_output = Conv2D(2, (3, 3), activation='tanh', padding='same',
                        bias_initializer=TruncatedNormal(mean=0.0, stddev=0.05))(decoder_output)
decoder_output = UpSampling2D((2, 2))(decoder_output)

model = Model(inputs=[encoder_input, embed_input], outputs=decoder_output)
model.compile(optimizer=RMSprop(lr=1e-3), loss='mse', metrics=['accuracy'])

测试图像功能:

我用这种方式装载重物

    test_images = getImages(testing_files)
    model.load_weights('/content/drive/My Drive/weights/orignalcolorize.hdf5')

我是否以错误的方式加载重量,或者这是其他问题


Tags: encoderinputoutputmeanactivationrelusamefusion