利用DIGITS在CAFFE中为RNN增加精度和损耗层

时间:2017-04-25 22:58:08

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

我刚刚在后端安装了带caffe的数字。我正在尝试在我的数据集上训练RNN with 50 layers。为了简单起见,我最初在我的数据集中只有三个类,即roadsparksponds。默认情况下,上述网络不包括准确度和丢失层,因此在训练期间或之后,它不会在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时收到的错误。 enter image description here
请注意,之前有一个错误抱怨cudnn nil require cunn当我在网络定义中将require cudnn更改为{{1}}时就消失了,因为这对我来说似乎是一个错字。< / p>

1 个答案:

答案 0 :(得分:1)

你没有破坏网络。您不需要两个softmax图层。问题可能是它没有收敛。至于网络初始化参数,我找不到作者training.prototxt。他建议在facebook's torch implementation中看到this PR,它与原始实施相比有一些变化。您可以做的一件事是使用deepdetect的培训网络。但PR的结论之一是它由于BatchNorm层的caffe实现问题而没有收敛。 deepdetect的作者似乎不同意它没有收敛。无论哪种方式似乎都在this PR中得到修复。总结如下:

  1. 使用最新版本的caffe
  2. 使用deepdetect&#39; s net and solver。
  3. 首先检查它是否收敛imagenetcifar(损失减少和错误减少)
  4. 如果确实如此,则训练您自己的数据
  5. 如果没有,那么我们将需要有关您的设置的更多信息