【问题标题】:Accuracy in Caffe keeps on 0.1 and does not changeCaffe 中的准确度保持在 0.1 并且不会改变
【发布时间】:2016-09-27 05:59:24
【问题描述】:

在所有训练过程中,准确度为 0.1。我做错了什么?

模型、求解器和部分日志在这里: https://gist.github.com/yutkin/3a147ebbb9b293697010

png格式的拓扑:

附:我在 AWS 上使用最新版本的 Caffe 和 g2.2xlarge 实例。

【问题讨论】:

  • 从您发送的信息中无法判断。你如何初始化权重?随机的?微调预训练的权重?您的 ReLU 似乎已经饱和:它们的输出在“0”范围内,因此梯度为零。尝试用 PReLU 替换 ReLU。看看它是否会改变你,
  • @Shai:看一下solver.prototxt文件。这不是真的不可能说出来!
  • 尝试将debug_info: true 添加到您的solver.prototxt - 这将使caffe 在训练期间打印一些关于激活和梯度的信息。这些信息可能非常有用。
  • 我认为读取图像数据后很快出现数据丢失不是一个好方法。

标签: neural-network caffe


【解决方案1】:

您正在处理具有 10 个类的 CIFAR-10 数据集。当网络训练开始时,第一个猜测通常是随机的,因此您的准确度为1/N,其中N 是类数。在您的情况下,它是1/10,即0.1。如果您的准确性随着时间的推移保持不变,则意味着您的网络没有学到任何东西。这可能是由于大的学习率而发生的。训练网络的基本思想是计算损失并将其传播回去。梯度乘以学习率并添加到当前的权重和偏差。如果学习率太大,您可能每次都超过局部最小值。如果太小,收敛会很慢。我看到你的base_lr 是 0.01。就我的经验而言,这有点大。您可能希望在开始时将其保持在 0.001,然后在您观察到准确性没有提高时继续将其减少 10 倍。但是,低于 0.00001 的任何值通常都不会产生太大影响。诀窍是观察训练的进度,并在需要时更改参数。

【讨论】:

    【解决方案2】:

    我知道这个帖子已经很老了,但也许我的回答对某人有帮助。我以随机猜测的准确性遇到了同样的问题。

    帮助将精度层之前的最后一层的输出数量设置为标签数量。

    在您的情况下,应该是 ip2 层。打开网络的模型定义并将num_outputs 设置为标签数。

    有关详细信息,请参阅第 4.4 节:A Practical Introduction to Deep Learning with Caffe and Python

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-19
      • 2018-11-22
      • 2017-04-04
      • 2020-06-21
      • 2022-08-20
      • 2019-07-08
      • 2019-04-25
      相关资源
      最近更新 更多