【问题标题】:Caffe Copy PreTrained Weights of AlexNet to custom network that has Two AlexNetsCaffe 将 AlexNet 的 PreTrained 权重复制到具有两个 AlexNet 的自定义网络
【发布时间】:2017-06-28 22:53:24
【问题描述】:

我正在尝试构建一个包含两个图像输入的网络。每个图像将通过一个网络同时进行后期融合,该网络将合并并给出一个输出。我使用下面的图表来显示我需要什么(ps:抱歉我的英语不太好)

我的网络在 caffe prototxt 模型定义文件中定义,其中包含在池 5 之前定义了两次的准确 AlexNet。对于第一个网络,层的名称与 AlexNet 中的相同,而对于第二个网络,我添加了一个 "_1" 每个图层名称的后缀。 我的问题是如何复制保留的重量?

例如:我的每个网络的卷积层1如下。请注意,对于conv1,可以轻松复制预训练权重,因为层名称与预训练模型中的层名称相同。但是conv1_1 是不同的,所以恐怕我无法复制预训练的权重?或者即使图层名称不同,有没有办法做到这一点?

layer {
  name: "conv1"
  type: "Convolution"
  bottom: "data1"
  top: "conv1"
  param {
    lr_mult: 0
    decay_mult: 1
  }
  param {
    lr_mult: 0
    decay_mult: 0
  }
  convolution_param {
    num_output: 96
    kernel_size: 11
    stride: 4
    weight_filler {
      type: "gaussian"
      std: 0.01
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}


layer {
  name: "conv1_1"
  type: "Convolution"
  bottom: "data2"
  top: "conv1_1"
  param {
    lr_mult: 0
    decay_mult: 1
  }
  param {
    lr_mult: 0
    decay_mult: 0
  }
  convolution_param {
    num_output: 96
    kernel_size: 11
    stride: 4
    weight_filler {
      type: "gaussian"
      std: 0.01
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}

【问题讨论】:

    标签: image-processing neural-network deep-learning caffe convolution


    【解决方案1】:

    我假设您正在尝试在初始化后对整个网络进行微调,否则您可以简单地使用从 AlexNet 中提取的特征并在 FC 层开始训练。对于微调,您需要复制第一个网络(具有相同名称的网络)上的权重,并让第二个网络与第一个网络共享权重。看看this 线程。或者更确切地说,this 来自 Evan Shelmar 的回复。

    【讨论】:

    • 是的,我正在尝试微调,而不仅仅是特征提取。感谢您指出那些有用的链接。我仍然很困惑如何分享这些权重。你能举一些例子吗?而且我不知道它叫连体网。
    • 如果您查看对我指出的评论的回复,OP 发布了sample prototext 文件。
    【解决方案2】:

    我做了类似的事情,在这里你可以看到 Siamese Network 和 Identical AlexNet。 Identical AlexNet for Siamese Network。这里是prototxt file

    【讨论】:

    • 你能用 mnist 数据集训练两个相同的 AlexNet 吗? @kcc__
    • 你是在自己的数据集还是 mnist 数据集上训练它? @kcc__
    • 我正在使用我自己的大约 80K 图像的数据集。我还没有训练。你试过 MNIST 了吗?我的 GPU 在我运行 caffe 时关闭,我认为这是由于 PSU,所以我订购了一个新的。
    • 我目前正在进行四个实验。 1. 在 mnist 数据集上使用 LeNet 的连体网络,2. 在 mnist 数据集上使用 AlexNet 的连体网络,3. 在我自己的数据集上使用 LeNet 的连体网络,2. 在我自己的数据集上使用 AlexNet 的连体网络。我没有用 AlexNet 得到很好的聚类。 @kcc__
    • 我想在 mnist 数据集上使用 LeNet 计算 Siamese 网络的准确度。你知道我们怎么做吗@kcc__
    猜你喜欢
    • 2019-01-16
    • 2015-11-09
    • 1970-01-01
    • 2021-01-10
    • 2021-02-19
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 2017-12-19
    相关资源
    最近更新 更多