Machine learning 如何用调试信息解释caffe日志?

Machine learning 如何用调试信息解释caffe日志?,machine-learning,neural-network,deep-learning,caffe,gradient-descent,Machine Learning,Neural Network,Deep Learning,Caffe,Gradient Descent,当在培训过程中遇到困难(,等等)时,有时通过在'solver.prototxt'文件中设置查看更详细的培训日志是有用的 然后,培训日志看起来像: 这是什么意思?乍一看,您可以看到此日志部分分为两部分:[向前]和[向后]。回想一下,神经网络训练是通过正向反向传播完成的: 将训练示例(批处理)送入网络,向前传递输出当前预测。 根据这一预测,计算损失。 然后导出损耗,并估计梯度,并使用该梯度向后传播 Caffe数据结构 只是快速重新盖上盖子。Caffe使用Blob数据结构来存储数据/权重/参数等。在本

当在培训过程中遇到困难(,等等)时,有时通过在
'solver.prototxt'
文件中设置查看更详细的培训日志是有用的

然后,培训日志看起来像:


这是什么意思?

乍一看,您可以看到此日志部分分为两部分:
[向前]
[向后]
。回想一下,神经网络训练是通过正向反向传播完成的:
将训练示例(批处理)送入网络,向前传递输出当前预测。
根据这一预测,计算损失。 然后导出损耗,并估计梯度,并使用该梯度向后传播

Caffe数据结构
只是快速重新盖上盖子。Caffe使用
Blob
数据结构来存储数据/权重/参数等。在本次讨论中,需要注意的是
Blob
有两个“部分”:
data
diff
Blob
的值存储在
数据部分中。
diff
部分用于存储反向传播步骤的元素梯度

向前传球

您将在日志的这一部分中看到从下到上列出的所有层。对于每个层,您将看到:

“conv1”
是一个卷积层,它有两个参数blob:过滤器和偏置。因此,日志有三行。筛选器blob(
param blob 0
)具有
数据

即卷积滤波器权重的当前L2范数为0.00899。
当前偏差(
param blob 1
):

这意味着当前偏差设置为0

最后但并非最不重要的一点是,
“conv1”
层有一个输出,
“top”
名为
“conv1”
(多么原始…)。输出的L2范数为

请注意,
[Forward]
过程的所有L2值都报告在相关BLOB的
数据部分

损耗和梯度
[Forward]
过程的末尾是丢失层:

在此示例中,批次损失为2031.85,计算损失的梯度w.r.t.
fc1
,并将其传递给
diff
部分
fc1
Blob。梯度的L2量级为0.1245

向后传球
其余所有图层都自上而下列在该部分中。您可以看到,现在报告的L2震级属于BLOB的
diff
部分(参数和层的输入)

最后
此迭代的最后一行日志:

报告数据和梯度的L1和L2总震级

我应该找什么?

  • 如果有,请查看数据或差异在哪一点变成
    nan
    :在哪一层?在哪个迭代中

  • 看看梯度大小,它们应该是合理的。如果您开始看到带有
    e+8
    的值,则您的数据/梯度开始膨胀。降低你的学习速度

  • 请确保
    diff
    s不为零。零差异意味着没有梯度=没有更新=没有学习。如果从随机权重开始,考虑生成具有较高方差的随机权重。

  • 查看激活(而不是渐变)是否变为零。如果您正在使用,这意味着您的输入/权重将引导您进入ReLU门“未激活”的区域,从而导致。考虑在ReLU中规范化你的输入为零均值,添加层,设置<代码>负斜率< /代码>。

  • @thigi这取决于架构:例如,如果您使用
    ReLU
    激活,并且输入
    数据
    为零,则梯度为零。然后你可以考虑改变“工作点”,例如减去平均值。或者,您可以将
    ReLU
    替换为
    PReLU
    。@Hossein,L1表示参数的绝对值之和,而L2表示平方值之和。L2表示权重的“能量”。这两个量都表示权重的“大小”。
    e-8
    表示的是
    0.00000001
    的数量级:您的梯度正在消失,而不是消失exploding@Shai:是,适用于所有层。但现在已经解决了。@Shai:谢谢Shai。事实上,我已经解决了这个问题,使用了针对这类问题的预先训练的模型。但你的观点可能对其他人有用。
    I1109 ...]     [Forward] Layer data, top blob data data: 0.343971    
    I1109 ...]     [Forward] Layer conv1, top blob conv1 data: 0.0645037
    I1109 ...]     [Forward] Layer conv1, param blob 0 data: 0.00899114
    I1109 ...]     [Forward] Layer conv1, param blob 1 data: 0
    I1109 ...]     [Forward] Layer relu1, top blob conv1 data: 0.0337982
    I1109 ...]     [Forward] Layer conv2, top blob conv2 data: 0.0249297
    I1109 ...]     [Forward] Layer conv2, param blob 0 data: 0.00875855
    I1109 ...]     [Forward] Layer conv2, param blob 1 data: 0
    I1109 ...]     [Forward] Layer relu2, top blob conv2 data: 0.0128249
    . 
    .
    .
    I1109 ...]     [Forward] Layer fc1, top blob fc1 data: 0.00728743
    I1109 ...]     [Forward] Layer fc1, param blob 0 data: 0.00876866
    I1109 ...]     [Forward] Layer fc1, param blob 1 data: 0
    I1109 ...]     [Forward] Layer loss, top blob loss data: 2031.85
    I1109 ...]     [Backward] Layer loss, bottom blob fc1 diff: 0.124506
    I1109 ...]     [Backward] Layer fc1, bottom blob conv6 diff: 0.00107067
    I1109 ...]     [Backward] Layer fc1, param blob 0 diff: 0.483772
    I1109 ...]     [Backward] Layer fc1, param blob 1 diff: 4079.72
    .
    .
    .
    I1109 ...]     [Backward] Layer conv2, bottom blob conv1 diff: 5.99449e-06
    I1109 ...]     [Backward] Layer conv2, param blob 0 diff: 0.00661093
    I1109 ...]     [Backward] Layer conv2, param blob 1 diff: 0.10995
    I1109 ...]     [Backward] Layer relu1, bottom blob conv1 diff: 2.87345e-06
    I1109 ...]     [Backward] Layer conv1, param blob 0 diff: 0.0220984
    I1109 ...]     [Backward] Layer conv1, param blob 1 diff: 0.0429201
    E1109 ...]     [Backward] All net params (data, diff): L1 norm = (2711.42, 7086.66); L2 norm = (6.11659, 4085.07)
    
    I1109 ...]     [Forward] Layer conv1, top blob conv1 data: 0.0645037
    
    I1109 ...]     [Forward] Layer conv1, param blob 0 data: 0.00899114
    I1109 ...]     [Forward] Layer conv1, param blob 1 data: 0
    
     I1109 ...]     [Forward] Layer conv1, param blob 0 data: 0.00899114
    
     I1109 ...]     [Forward] Layer conv1, param blob 1 data: 0
    
     I1109 ...]     [Forward] Layer conv1, top blob conv1 data: 0.0645037
    
    I1109 ...]     [Forward] Layer loss, top blob loss data: 2031.85
    
    I1109 ...]     [Backward] Layer loss, bottom blob fc1 diff: 0.124506
    
    [Backward] All net params (data, diff): L1 norm = (2711.42, 7086.66); L2 norm = (6.11659, 4085.07)