【发布时间】:2017-04-25 22:58:07
【问题描述】:
我刚刚在后端安装了带有 caffe 的数字。我正在尝试在我的数据集上训练 RNN with 50 layers。为了简单起见,我的数据集中最初只有三个类,即roads、parks 和ponds。默认情况下,上述网络不包括准确性和损失层,因此在训练期间或之后它不会在 DIGITS 接口上显示任何准确性或损失。为了解决这个问题,我只是从 AlexNet 复制了相关层并将它们放在 RNN 的末尾以查看实际情况。我从RNN添加了以下三层
layer {
name: "accuracy"
type: "Accuracy"
bottom: "fc1000"
bottom: "label"
top: "accuracy"
include {
stage: "val"
}
}
layer {
name: "loss"
type: "SoftmaxWithLoss"
bottom: "fc1000"
bottom: "label"
top: "loss"
exclude {
stage: "deploy"
}
}
layer {
name: "softmax"
type: "Softmax"
bottom: "fc1000"
top: "softmax"
include {
stage: "deploy"
}
}
网络经过训练后,在 DIGITS 界面中的准确率仅为 34%。当我使用 DIGITS 的Classify Many 功能并对验证数据集进行分类时,它告诉我一切都是road 类,因此在混淆矩阵中实现了 33% 的准确度。因为,我对这个领域非常陌生,我怀疑在网络末端添加上述三层后是否做错了什么。是对的吗?我搞砸了整个网络吗?如何在不破坏网络的情况下可视化数字的准确性和丢失?
编辑 1
以下是我在使用 Torch 的 DIGITS 中添加 facebook Resnet model 时遇到的错误。 .
请注意,之前有另一个错误抱怨 cudnn 是 nil,当我在网络定义中将 require cunn 更改为 require cudnn 时,该错误消失了,因为这对我来说似乎是一个错字。
【问题讨论】:
-
添加
softmaxwithloss后就不需要softmax了。这也是一个部署模块。您是否正在从预训练模型初始化权重?如果没有,则需要添加权重初始化参数。 -
不,我没有从预训练模型初始化。如何添加权重作为初始化参数?
标签: neural-network deep-learning caffe conv-neural-network