python - 错误:您正在尝试将包含 1 层的权重文件加载到具有 14 层的模型中
问题描述
由于没有足够的资源,例如 GPU 和 Ram,我们使用 Google Colab 来训练模型,但仍然存在一些限制,例如 Google Colab 的 GPU 的最大时间限制仅为 12 小时。我们仍然在这 12 小时内训练了模型,但在第一个 epoch 之后损失似乎没有改变,因此我们决定使用 Auto-Colorize 的代码,并且训练过的权重文件“colorize.hdf5”上传到 GitHub (可在 github 链接上找到代码: https ://github.com/hvvashistha/Auto-Colorize ),但在加载这些权重时,我们会遇到错误。
“您正在尝试将包含 1 层的权重文件加载到具有 14 层的模型中。”
我们尝试将 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')
我是以错误的方式加载权重还是这是其他问题。
解决方案
推荐阅读
- parameters - 处理类和实例问题
- javascript - jQuery popover 在 Django 应用程序中不起作用?
- reactjs - 在 http-proxy-middleware 的 setupProxy.js 中反应导入环境生成意外标识符
- php - 如何根据当前登录用户codeigniter获取/检索数据,但外键连接到另一个外键
- c# - 在 Unity 中应用多个旋转
- mysql - 参数化查询 - M 语言 (Excel)
- reactjs - 有没有办法为 ReactJs 中的 material-ui 组件提供全局类?
- azure - 从 Azure 数据工厂中的 API 获取而不复制 URL
- c# - 如何用军事时间进行简单的计算?
- angular - 如何根据 HTTP 响应限制/停止 Angular 应用程序加载