训练优化:降低loss

概念:

通常机器学习每一个算法中都会有一个目标函数,算法的求解过程是通过对这个目标函数优化的过程。在分类或者回归问题中,通常使用损失函数(代价函数)作为其目标函数。损失函数用来评价模型的预测值和真实值不一样的程度,损失函数越好,通常模型的性能越好。

refer:https://blog.csdn.net/weixin_37933986/article/details/68488339

________________________________________________________________________________________________

以下的结果是针对模型(faster_rcnn_inception_resnet_v2_atrous_coco)训练多个分类且不同分类的样本集不均匀的实践

 

让loss快速下降方式

训练集:

Config设置:

a、采用dropout

use_dropout: true #false
dropout_keep_probability: 0.6

b、多阶段学习率,开始设置很高且尽量让其迭代到loss足够的低

initial_learning_rate: 0.003
          schedule {
            step: 0
            learning_rate: .003
          }
          schedule {
            step: 30000
            learning_rate: .0003
          }
          schedule {
            step: 45000
            learning_rate: .00003
          }
......

c、为了发现更多的box,对IOC阈值进行调整(与loss没什么关系)

first_stage_nms_iou_threshold: 0.4
second_stage_post_processing {
      batch_non_max_suppression {
        score_threshold: 0.0
        iou_threshold: 0.5
        max_detections_per_class: 100
        max_total_detections: 100
      }
      score_converter: SOFTMAX
    }

效果:

原文地址:https://www.cnblogs.com/hepc/p/8965744.html

时间: 2024-10-09 19:31:50

训练优化:降低loss的相关文章

caffe 进行自己的imageNet训练分类:loss一直是87.3365,accuracy一直是0

caffe 进行自己的imageNet训练分类: loss一直是87.3365,accuracy 一直是0,可能的原因是: 解决方法: http://blog.csdn.net/jkfdqjjy/article/details/52268565?locationNum=14知道了原因,解决时就能对症下药.总体上看,softmax输入的feature由两部分计算得到:一部分是输入数据,另部分是各层权重参数. 1.观察数据中是否有异常样本或异常label导致数据读取异常 2.调小初始化权重,以便使s

解决caffe绘制训练过程的loss和accuracy曲线时候报错:paste: aux4.txt: 没有那个文件或目录 rm: 无法删除"aux4.txt": 没有那个文件或目录

我用的是faster-rcnn,在绘制训练过程的loss和accuracy曲线时候,抛出如下错误,在网上查找无数大牛博客后无果,自己稍微看了下代码,发现,extract_seconds.py文件的 get_start_time()函数在获取时间时候获取失败,因为if line.find('Solving') != -1:这个语句判断错误导致,具体解决办法: 将该函数改造成: def get_start_time(line_iterable, year):    """Find

深度学习的模型是怎么训练/优化出来的

以典型的分类问题为例,来梳理模型的训练过程.训练的过程就是问题发现的过程,一次训练是为下一步迭代做好指引. 1.数据准备 准备: 数据标注前的标签体系设定要合理 用于标注的数据集需要无偏.全面.尽可能均衡 标注过程要审核 整理数据集 将各个标签的数据放于不同的文件夹中,并统计各个标签的数目 如:第一列是路径,最后一列是图片数目. PS:可能会存在某些标签样本很少/多,记下来模型效果不好就怨它. 样本均衡,样本不会绝对均衡,差不多就行了 如:控制最大类/最小类<\(\delta\),\(\delt

python 画图像训练结果的loss图

得到每个epoch的loss和predict精度后,就可以愉快地画图直观地看出训练结果和收敛性了. # coding:utf-8 import matplotlib.pyplot as plt data_dir = "D:\\result.txt" Train_Loss_list = [] Train_Accuracy_list = [] Valid_Loss_list = [] Valid_Accuracy_list = [] f1 = open(data_dir,'r') data

为什么验证集的loss会小于训练集的loss?

原因1-在训练中应用正则化(加了正则项),但在验证/测试中未应用正则化 正则化方法通常会牺牲训练准确性来提高验证/测试准确性——在某些情况下,可能导致验证loss低于训练loss.原因2-训练loss是在每个epoch测量的,而验证loss是在每个epoch后测量的 在整个epoch内,您的训练loss将不断得到报告:但是,仅在当前训练epoch完成后,才根据验证集计算验证指标.这意味着,平均而言,训练loss要提前半个epoch来衡量原因3-验证集可能比训练集更容易,或者代码中的数据/错误泄漏

caffe绘制训练过程的loss和accuracy曲线

转自:http://blog.csdn.net/u013078356/article/details/51154847 在caffe的训练过程中,大家难免想图形化自己的训练数据,以便更好的展示结果.如 果自己写代码记录训练过程的数据,那就太麻烦了,caffe中其实已经自带了这样的小工具 caffe-master/tools/extra/parse_log.sh  caffe-master/tools/extra/extract_seconds.py和 caffe-master/tools/ext

CS231n 卷积神经网络与计算机视觉 7 神经网络训练技巧汇总 梯度检验 参数更新 超参数优化 模型融合 等

前面几章已经介绍了神经网络的结构.数据初始化.激活函数.损失函数等问题,现在我们该讨论如何让神经网络模型进行学习了. 1 梯度检验 权重的更新梯度是否正确决定着函数是否想着正确的方向迭代,在UFLDL中我们提到过,计算时梯度公式如果计算错误是不容被察觉的,我们需要比较分析法得到梯度与数值法得到的梯度是否相似,下面是一些技巧: 1.1 centered formula 高等数学中我们知道导数的近似公式: df(x)dx=f(x+h)?f(x)h 以及下面的centered formula: df(

pytorch 7 optimizer 优化器 加速训练

import torch import torch.utils.data as Data import torch.nn.functional as F import matplotlib.pyplot as plt # torch.manual_seed(1) # reproducible 超参数设置 LR = 0.01 BATCH_SIZE = 32 EPOCH = 12 # fake dataset x = torch.unsqueeze(torch.linspace(-1, 1, 100

基于Triplet loss函数训练人脸识别深度网络(Open Face)

Git:  http://cmusatyalab.github.io/openface/ FaceNet's innovation comes from four distinct factors: (a) thetriplet loss, (b) their triplet selection procedure, (c) training with 100 million to 200 million labeled images, and (d) (not discussed here)