Neural network 用数字向CAFFE中的RNN添加精度和损耗层

Neural network 用数字向CAFFE中的RNN添加精度和损耗层,neural-network,deep-learning,caffe,conv-neural-network,Neural Network,Deep Learning,Caffe,Conv Neural Network,我刚刚在后端安装了带有caffe的digits。我正在尝试使用我的数据集进行训练。为了简单起见,最初我的数据集中只有三个类,即道路、公园和池塘。默认情况下,上述网络不包括精度和损耗层,因此在培训期间或培训之后,不会在数字接口上显示任何精度或损耗。为了解决这个问题,我只是从AlexNet复制了相关的层,并将它们放在RNN的末尾,以了解实际情况。我从RNN中添加了以下三个层 layer { name: "accuracy" type: "Accuracy" bottom: "fc1000

我刚刚在后端安装了带有caffe的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"
  }
}
当网络经过训练时,数字接口的准确率仅为34%。当我使用对数字的许多特征进行分类并对验证数据集进行分类时,它告诉我所有内容都是道路类,因此在混淆矩阵中实现了33%的准确性。因为,我是这个领域的新手,我怀疑在网络的末尾添加了上述三层之后是否出了问题。是这样吗?我把整个网络搞砸了吗?在不破坏网络的情况下,我们需要做些什么来可视化数字的准确性和丢失? 编辑1 下面是我用Torch添加in数字时出现的错误。
请注意,之前有另一个错误,抱怨cudnn为零,当我将require cunn更改为在网络定义中要求cudnn时,该错误消失了,因为这对我来说似乎是一个输入错误。

您没有断开网络。您不需要两个softmax图层。问题可能是它并没有收敛。至于网络初始化参数,我找不到作者的training.prototxt。他建议查看其中的内容,与原始实现相比有一些变化。你可以做的一件事是使用来自的培训网络。但PR的结论之一是,由于caffe在BatchNorm层的实现问题,它没有收敛。deepdetect的作者似乎不同意它不收敛。无论哪种方式,这似乎都是固定的。因此,总结如下:

使用最新版本的caffe 使用deepdetect的网络和解算器。 首先检查它是否在imagenet或cifar上收敛,以减少丢失和错误 如果确实如此,则根据您自己的数据进行培训 如果没有,那么我们需要更多关于您设置的信息
添加softmaxwithloss后,您不需要softmax。这也是一个部署模块。您正在初始化预训练模型的权重吗?如果没有,那么您将需要添加权重初始化参数。不,我不是从预训练模型初始化。如何将权重添加为init param?感谢@inman提供的宝贵指导。我有点离开了caffe,在我的数据集上训练了AlexNet网络,获得了86%的准确率。同样的caffe网络只给了我30%。现在,我正在尝试使用fb Resnet。当我在Digitals界面加载此模型并单击VisualizationNetwork时,它会给我VisualizationError。我如何解决这个问题?我附上了我问题中的错误截图。我也在寻找一个预先训练好的图像分割模型,我可以为我的数据集进行微调。我更愿意为火炬队建立一个网络,因为就训练的准确性和损失而言,Caffe进展得并不顺利。我正在考虑问一个关于它的新问题,我将在这里的评论中发布一个链接。火炬有cunn和cudnn模块。cunn是torch对nn库的CUDA实现,而cudnn是对官方cudnn代码的绑定。您应该安装cunn,然后检查错误是否仍然发生。至于语义分段,您可以从中选择一个。我不能推荐太多,因为我根本没用过手电筒。但我可以推荐咖啡。对于torch,你应该尝试一个fcn端口。谢谢,伙计,我会尝试一下,并随时通知你。