Deep learning 使用不同的类数微调CNN

Deep learning 使用不同的类数微调CNN,deep-learning,caffe,Deep Learning,Caffe,我正试图在我自己的30类数据集上微调一个经过PASCAL-VOC训练的更快的RCNN模型 参考模型: 当然,当我将cls_分数和bbox_pred num_输出分别更改为30和120而不是21和84时,这些层的权重不会加载,我需要更改层的名称。 我想知道是否有办法为不同数量的类保存在FC层中学习到的数据 谢谢。根据,这应该很简单 您需要将图层名称与所需的参考模型图层相匹配。例如,如果需要参考模型的ip1层的权重,则模型应具有相同的名称: layer { name: "ip1" ...

我正试图在我自己的30类数据集上微调一个经过PASCAL-VOC训练的更快的RCNN模型

参考模型:

当然,当我将cls_分数和bbox_pred num_输出分别更改为30和120而不是21和84时,这些层的权重不会加载,我需要更改层的名称。
我想知道是否有办法为不同数量的类保存在FC层中学习到的数据

谢谢。

根据,这应该很简单

您需要将图层名称与所需的参考模型图层相匹配。例如,如果需要参考模型的
ip1
层的权重,则模型应具有相同的名称:

layer {
  name: "ip1"
  ...
模型中具有不同名称的层将随机初始化,或者根据您决定的方案进行初始化。训练时,要从
他们的RModel.caffemodel
中借用权重,您可以按如下方式启动模型:

caffe train —solver ourSolver.prototxt —weights theirModel.caffemodel
编辑


对不起,我想我根本没有回答你的问题。如果完全连接的层是100 x 10矩阵,则不能使用100 x 20矩阵的权重。权重在新的上下文中没有任何意义。最好随机初始化新层

谢谢@vega。我确实问过(在你的例子中)100 x 10对于新类/另一个形状是否有任何意义。它没有任何意义。因此,原来的输出层100x10将被废弃,您将初始化一个新的100x20层。但是,您可以保留其他模型中所有预训练的较低层,这可能是有益的。这回答了你的问题吗?