想要的输出层丢失不会出现在 caffe 打印中
Wanted output layer loss doesn't appear in caffe prints
我正在微调现有网络,添加一个我自己的输出层。
我使用的网络已经调整为可以识别人脸并提取面部特征。
我添加的层只添加到最后一部分(我希望那里还有足够的数据),试图提取偏航角。
prototxt 文件在我修改之前的结尾:
layer {
name: "cls_prob"
type: "Softmax"
bottom: "fc6_3"
top: "cls_prob"
}
layer {
name: "bbox_reg_3"
type: "InnerProduct"
bottom: "fc5_3"
top: "bbox_reg_3"
inner_product_param {
num_output: 3
}
}
layer {
name: "rotate_reg_3"
type: "InnerProduct"
bottom: "fc5_3"
top: "rotate_reg_3"
inner_product_param {
num_output: 1
}
}
与我的更改相同的部分 + 训练更改:
layer {
name: "cls_prob"
type: "Softmax"
bottom: "fc6_3"
top: "cls_prob"
}
layer {
name: "bbox_reg_3"
type: "InnerProduct"
bottom: "fc5_3"
top: "bbox_reg_3"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
inner_product_param {
num_output: 3
}
}
layer {
name: "rotate_reg_3"
type: "InnerProduct"
bottom: "fc5_3"
top: "rotate_reg_3"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
inner_product_param {
num_output: 1
}
}
layer {
name: "yaw_reg_3"
type: "InnerProduct"
bottom: "fc5_3"
top: "yaw_reg_3"
inner_product_param {
num_output: 1
}
}
layer {
name: "loss"
type: "EuclideanLoss"
bottom: "yaw_reg_3"
bottom: "label"
top: "loss"
}
我添加了 yaw_reg_3,但我只看到 rotate_reg_3、bbox_reg_3 和 cls_prob 丢失打印。
谢谢
用gdb调试caffe后:
遍历所有层后,如果某一层没有出现在另一层的底层,则确定为输出层。
由于 "yaw_reg_3" 是 "loss" 的底部,从技术上讲它不是输出层,因此只打印它的损失,而不是预测本身。
我正在微调现有网络,添加一个我自己的输出层。 我使用的网络已经调整为可以识别人脸并提取面部特征。
我添加的层只添加到最后一部分(我希望那里还有足够的数据),试图提取偏航角。
prototxt 文件在我修改之前的结尾:
layer {
name: "cls_prob"
type: "Softmax"
bottom: "fc6_3"
top: "cls_prob"
}
layer {
name: "bbox_reg_3"
type: "InnerProduct"
bottom: "fc5_3"
top: "bbox_reg_3"
inner_product_param {
num_output: 3
}
}
layer {
name: "rotate_reg_3"
type: "InnerProduct"
bottom: "fc5_3"
top: "rotate_reg_3"
inner_product_param {
num_output: 1
}
}
与我的更改相同的部分 + 训练更改:
layer {
name: "cls_prob"
type: "Softmax"
bottom: "fc6_3"
top: "cls_prob"
}
layer {
name: "bbox_reg_3"
type: "InnerProduct"
bottom: "fc5_3"
top: "bbox_reg_3"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
inner_product_param {
num_output: 3
}
}
layer {
name: "rotate_reg_3"
type: "InnerProduct"
bottom: "fc5_3"
top: "rotate_reg_3"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
inner_product_param {
num_output: 1
}
}
layer {
name: "yaw_reg_3"
type: "InnerProduct"
bottom: "fc5_3"
top: "yaw_reg_3"
inner_product_param {
num_output: 1
}
}
layer {
name: "loss"
type: "EuclideanLoss"
bottom: "yaw_reg_3"
bottom: "label"
top: "loss"
}
我添加了 yaw_reg_3,但我只看到 rotate_reg_3、bbox_reg_3 和 cls_prob 丢失打印。
谢谢
用gdb调试caffe后: 遍历所有层后,如果某一层没有出现在另一层的底层,则确定为输出层。 由于 "yaw_reg_3" 是 "loss" 的底部,从技术上讲它不是输出层,因此只打印它的损失,而不是预测本身。