是否有一种简单的方法(例如,不修改caffe代码)将多个预训练网络的权重加载到一个网络中?该网络包含一些与预训练网络具有相同尺寸和名称的图层。
我正在尝试使用NVidia DIGITS和Caffe实现这一目标。
编辑:我认为直接从DIGITS这样做是不可能的,正如答案所证实的那样。任何人都可以建议一种简单的方法来修改DIGITS代码,以便能够选择多个预训练网络吗?我检查了一下代码,并认为training script是一个很好的起点,但我对Caffe没有深入的了解,所以我不确定最好/最快的方法是什么这将是。
答案 0 :(得分:6)
正如Shai所说,没有办法做到这一点,所以我决定克隆官方存储库并进行适当的更改。我更改了代码,以便可以使用冒号作为分隔符加载多个预训练网络。
我在官方存储库上创建了一个pull请求,然后我的更改与DIGITS的主分支合并,这意味着现在可以在DIGITS中使用此功能。
答案 1 :(得分:2)
AFAIK没有直接的方法这样做。
但是,您可以使用net surgery加载预训练模型并手动将其权重分配给目标网络。一旦你有一个网络,根据各种预训练模型初始化了所有权重,你可以保存它并将其作为一个预训练模型用于其余的工作。