Caffe,加入2个模型

时间:2017-03-04 09:10:33

标签: machine-learning neural-network deep-learning caffe

我有两种不同的型号,让我们说NM1和NM2。

所以,我正在寻找的东西就像下面的例子一样。

让我们说我们有一张狗的照片。

NM1预测它是一只猫的概率为0.52并且它是一只概率为0.48的狗。 NM2预测它是一只概率为0.6的狗,它是一只概率为0.4的猫。

NM1 - 将预测错误 NM2 - 将正确预测

NM1 + NM2 - 连接将正确预测(因为0.48 + 0.6> 0.52 + 0.4)

因此,每个模型都以InnerProducts结束(在Softmax之后),它给出了2个概率向量。

下一步,我有这两个向量,我想添加它们。这里我使用Eltwise图层。

layer {
  name: "eltwise-sum"
  type: "Eltwise"
  bottom: "fc8"
  bottom: "fc8N"
  top: "out"
  eltwise_param { operation: SUM }
}

加入NM1之前,准确度为~70%,NM2~10%。

加入后,精度甚至达不到1%。

因此,我的结论是我理解错了,如果有人能向我解释我错在哪里,我会感激不尽。

PS。我在创建lmdb时关闭了shuffle。

更新

layer {
  name: "eltwise-sum"
  type: "Eltwise"
  bottom: "fc8L"
  bottom: "fc8NL"
  top: "out"
  eltwise_param { 
  operation: SUM 
  coeff: 0.5
  coeff: 0.5
  }

}


#accur for PI alone
layer {
  name: "accuracyPINorm"
  type: "Accuracy"
  bottom: "fc8L"
  bottom: "label"
  top: "accuracyPiNorm"
  include {
    phase: TEST
  }
}

#accur for norm images alone
layer {
  name: "accuracyIMGNorm"
  type: "Accuracy"
  bottom: "fc8NL"
  bottom: "labelN"
  top: "accuracyIMGNorm"
  include {
    phase: TEST
  }
}

#accur for them together
layer {
  name: "accuracy"
  type: "Accuracy"
  bottom: "out"
  bottom: "label"
  top: "accuracy"
  include {
    phase: TEST
  }
}

Model image

1 个答案:

答案 0 :(得分:1)

如果要添加(按元素)概率,则需要在"Softmax"图层之后添加,而不是在"InnerProduct"图层之后添加。你应该有像

这样的东西
layer {
  type: "InnerProduct"
  name: "fc8"
  top: "fc8"
  # ... 
}
layer {
  type: "Softmax"
  name: "prob_nm1"
  top: "prob_nm1"
  bottom: "fc8"
}
layer {
  type: "InnerProduct"
  name: "fc8N"
  top: "fc8N"
  # ... 
}
layer {
  type: "Softmax"
  name: "prob_nm2"
  top: "prob_nm2"
  bottom: "fc8N"
}
# Joining the probabilites
layer {
  type: "Eltwise"
  name: "prob_sum"
  bottom: "prob_nm1"
  bottom: "prob_nm2"
  top: "prob_sum"
  eltwise_param {
    operation: SUM
    coeff: 0.5
    coeff: 0.5
  }
}