7

有没有一种简单的方法(例如,不修改代码)将 wights 从多个预训练网络加载到一个网络中?该网络包含一些与两个预训练网络具有相同维度和名称的层。

我正在尝试使用 NVidia DIGITS 和 Caffe 来实现这一目标。

编辑:我认为不可能直接从 DIGITS 执行此操作,正如答案所证实的那样。谁能建议一种简单的方法来修改 DIGITS 代码以便能够选择多个预训练网络?我检查了一下代码,并认为培训脚本是一个很好的起点,但我对 Caffe 没有深入的了解,所以我不确定实现这一目标的最佳/最快方法是什么.

4

2 回答 2

6

正如 Shai 建议的那样,没有办法做到这一点,所以我决定克隆官方存储库并进行适当的更改。我更改了代码,以便可以使用冒号作为分隔符来加载多个预训练网络。

我在官方存储库上创建了一个拉取请求,然后我的更改与 DIGITS 的主分支合并,这意味着现在可以在 DIGITS 中使用此功能。

于 2016-01-21T22:25:58.103 回答
2

AFAIK 没有直接的方法可以这样做。
但是,您可以使用网络手术来加载预训练模型并手动将它们的权重分配给目标网络。一旦你有了一个根据各种预训练模型初始化所有权重的网络,你就可以保存它并将其作为一个预训练模型用于你的其余工作。

于 2015-12-27T06:10:43.653 回答