【问题标题】:Graph disconnected when layers added on top of ResNet network在 ResNet 网络上添加层时图形断开连接
【发布时间】:2019-07-01 13:36:22
【问题描述】:

我正在尝试更改 ResNet50 网络的输入形状。我需要超过 3 个通道的输入。当您指定输入形状而不加载 imagenet 权重时,ResNet 应用程序可以工作,但我想使用 imagenet 的权重来避免长时间的训练阶段。

我知道 imagenet 的权重适用于具有三个通道的输入形状,但理论上通过切割网络的头部并添加一个新的输入层这应该可以工作。

我试图删除头部层,但我遇到了一些问题,说过滤器的数量与 3 不同

ValueError: 输入通道数不匹配对应 过滤器的尺寸,6 != 3

    model=keras.applications.resnet50.ResNet50(include_top=False,
               input_shape(200,200,3),weights='imagenet')
    model.layers.pop(0)
    model.layers.pop(0)
    model.layers.pop()
    X_input = Input((200,200,6), name='input_1')
    X = ZeroPadding2D((3, 3), name='conv1_pad')(X_input)
    model = Model(inputs=X, outputs=model(X))
    model.summary()

我认为可以更改输入形状的通道数并仍然使用来自 imagenet 的权重,但我尝试的方法似乎是错误的。

【问题讨论】:

  • 不,不要尝试这个,它不起作用,ImageNet 权重仅适用于 3 通道图像。
  • 为什么?因为遵循 resnet 架构只有前两层发生了变化
  • 是的,但是您将如何重建与额外频道相关的缺失信息?你就是不能
  • 之后训练模型。我将使用 imagenet 权重来设置权重,并避免随机初始化,因为在我的案例中也可以使用在 imagenet 上学习的一些特征。因此,在创建模型后,我将对其进行训练

标签: keras neural-network resnet


【解决方案1】:

我不确定 keras 模型是否支持其图层上的列表操作,似乎弹出图层不会使其忘记其预期的输入大小。

您可以使用您的输入形状初始化一个新的 resnet,并手动将 Imagenet 权重加载到除前 3 个层之外的所有层,它的输入张量中需要 3 个通道。

keras.applications.resnet50 中借几行会产生如下结果:

import h5py
import keras
from keras_applications.resnet50 import WEIGHTS_PATH_NO_TOP

input_tensor = keras.Input((200, 200, 6))
resnet = keras.applications.ResNet50(
    input_tensor=input_tensor, weights=None, include_top=False
)

weights_path = keras.utils.get_file(
    'resnet50_weights_tf_dim_ordering_tf_kernels_notop.h5',
    WEIGHTS_PATH_NO_TOP,
    cache_subdir='models',
    md5_hash='a268eb855778b3df3c7506639542a6af')

with h5py.File(weights_path, 'r') as f:
    for layer in resnet.layers[3:]:
        if layer.name in f:
            layer.set_weights(f[layer.name].values())

话虽如此,您尝试进行的这种迁移学习并不常见,我真的很想知道它是否有效。如果它实际上收敛得更快,你能更新一下吗?

【讨论】:

  • 谢谢,它正在工作。我重写了整个 resnet 模型,并为层提供了完全相同的名称,除了前 3 个层,然后我只是按名称加载层。我有点喜欢你提出的方法。你知道为什么弹出层不会让它忘记预期的输入大小吗? A 当然我会告诉你它是否收敛得更快
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-18
  • 2019-07-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多