machine-learning - 训练caffe库和Loss不收敛

标签 machine-learning neural-network deep-learning caffe gradient-descent

我使用caffe为了得到我的认可,我有一个问题,即丢失数据永远不会收敛。

我的配置中的训练参数是

      Conf.base_lr = 0.2;          
      Conf.max_iter = 800001;
      Conf.test_iter = 100;
      Conf.test_interval = 1000;
      Conf.momentum = 0.5;
      Conf.random_seed = 2;
      Conf.clip_gradients = 0.1;
      Conf.gamma = 0.8;
      Conf.stepsize = 100000;
      Conf.weights = "";
      //logging
      Conf.display_interval = 100;
      Conf.snapshot_prefix_folder = "../tmp";
      Conf.snapshot_interval = 10000;
      Conf.schematic_path = "../tmp/reinspect.png";
      Conf.graph_prefix = "../tmp/history";
      Conf.log_file = "../tmp/log_brainwash.txt";
      Conf.graph_interval = 500;
      //net
      Conf.init_range = 0.1;

然后当我检查向后数据时

All net params (data, diff): L1 norm = (208684, 3.43485e+11); L2 norm = (135.231, 3.96399e+08)

L1 和 L2 范数的差异值很大并且不正常。我的配置参数可能有什么问题以及如何调整它们?

我的一些向前和向后的日志数据可以在这个link中看到。 .

编辑:

以前我遇到过一些层不包含在反向传播中的问题。所以现在我强制它们并且所有都包含在内,除了那些没有像输入和虚拟数据这样的底层的。它们如下所示。 此开发与此类似的实现 Lib (只有Python和C++不同)。它们包括向后传播中的所有这些层,DummyData 是其实现中 Python 中的 NumpyData。如有必要,如何将它们包含到反向传播中。

layer {
  name: "image"
  type: "Input"
  top: "image"
  input_param { shape: { dim: 1 dim: 3 dim: 480 dim: 640 } }
}
layer {
  name: "box_flags"
  type: "Input"
  top: "box_flags"
  input_param { shape: { dim: 300 dim: 1 dim: 5 dim: 1 } }
}

layer {
  name: "boxes"
  type: "Input"
  top: "boxes"
  input_param { shape: { dim: 300 dim: 4 dim: 5 dim: 1 } }
}


layer {
  name: "lstm_hidden_seed"
  type: "DummyData"  
  top: "lstm_hidden_seed"
  dummy_data_param {
    shape { dim: 300 dim: 250 }  
    data_filler { type: "constant" value: 0 } 
  }
}
layer {
  name: "lstm_mem_seed"
  type: "DummyData"  
  top: "lstm_mem_seed"
  dummy_data_param {
    shape { dim: 300 dim: 250 }  
    data_filler { type: "constant" value: 0 } 
  }
}

DummyData层在Python中是NumpyData,当我转换为C++时,它变成了DummyData,初始化数据为0。

我需要将所有这些输入和虚拟数据包含到反向传播中吗? 我在 L1 和 L2 范数下仍然有这个异常大的值。

[Backward] All net params (data, diff): L1 norm = (208696, 4.09333e+06); L2 norm = (135.23, 4791.7)

最佳答案

你的学习率非常高,使得你的优化过程出现分歧。尝试将其减少至少 50 倍并重新开始训练。

关于machine-learning - 训练caffe库和Loss不收敛,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47257840/

相关文章:

machine-learning - 时间差异学习的更新

python - 在不使用 sklearn 的情况下使用 SGD(LogLoss 随着每个时期的增加而增加)

python - 在 sklearn.neural_network 中初始化权重

python - 在微调预训练模型的同时在 Keras 中预处理图像的正确方法是什么

python - 使用 keras 可以在训练过程中实时获取输出层吗?

python - 我可以在 tensorflow 中应用计算梯度吗?

python - TensorFlow默认在线或批量训练

javascript - 如何正确训练我的神经网络

python - CNN 给出有偏见的结果

machine-learning - NLTK(python)中的语料库和词典有什么区别