美文网首页
2019-12-25 学习纪要

2019-12-25 学习纪要

作者: Joyner2018 | 来源:发表于2019-12-25 21:15 被阅读0次

1 pytorch

net = torch.nn.DataParallel(net).cuda()

save_model(net.module, args.save_path, '{}_{}.pth'.format(args.net, epoch))

前一行的数据并行处理,下一行出现的net.module是对应的。

2 sphereface

https://arxiv.org/abs/1704.08063

https://github.com/clcarwin/sphereface_pytorch

人脸识别代码

训练不收敛的问题,是因为学习率太低了。

训练参数最终改成了:

#!/usr/bin/env sh

set -e

export CUDA_VISIBLE_DEVICES=0

python3 ./tool/train.py\

    --dataset ./data/casia_landmark2.txt\

    --save_path ./model2/ \

    --lr 0.1 \

    --bs 512 \

    --clsnum 10575

分析,因为是从头开始训练,所有学习率不应该设置得太低。开始设置成0.1合适

失败的实验,

学习率设置0.01, 0.001均不能收敛

学习:

A-softmax 损失要优于softmax,L-softmax函数

过拟合和欠拟合

模型在训练数据上性能糟糕时,您的模型欠拟合。这是因为模型无法捕获输入示例 (通常称为 X) 与目标值 (通常称为 Y) 之间的关系。

当您看到模型在训练数据上表现良好但在评估数据上表现不好时,表示您的模型过度拟合。这是因为模型记住了曾看到的数据,但无法归纳为未看过的示例。

训练数据的性能欠佳可能是因为模型太简单 (输入特征表述性不够) 而无法很好地描述目标。可以通过提升模型灵活性来改进性能。要提高模型的灵活性,请尝试以下操作:

添加新的域特有特征和更多特征笛卡尔积,并更改特征处理所用的类型 (例如,增加 n 元大小)

减少使用的正则化数量

如果您的模型过度拟合训练数据,合理的做法是采取措施来降低模型的灵活性。要减少模型的灵活性,请尝试以下操作:

特征选择:考虑使用更少的特征组合,减少 n 元大小,以及减少数字属性分箱的数量。

增加使用的正则化数量。

训练和测试数据的准确性可能很糟糕,因为学习算法没有足够的数据来学习。您可以通过以下操作提高性能:

增加训练数据示例的数量。

增加现有训练数据的扫描次数。

loss不降的问题

train loss 不断下降,test loss不断下降,说明网络仍在学习;

train loss 不断下降,test loss趋于不变,说明网络过拟合;

train loss 趋于不变,test loss不断下降,说明数据集100%有问题;

train loss 趋于不变,test loss趋于不变,说明学习遇到瓶颈,需要减小学习率或批量数目;

train loss 不断上升,test loss不断上升,说明网络结构设计不当,训练超参数设置不当,数据集经过清洗等问题。

4.1 loss等于87.33不变

loss等于87.33这个问题是在对Inception-V3网络不管是fine-tuning还是train的时候遇到的,无论网络迭代多少次,网络的loss一直保持恒定。

查阅相关资料以后发现是由于loss的最大值由FLT_MIN计算得到,FLT_MIN是1.17549435e−38F​1.17549435e−38F​其对应的自然对数正好是-87.3356,这也就对应上了loss保持87.3356了。

这说明softmax在计算的过程中得到了概率值出现了零,由于softmax是用指数函数计算的,指数函数的值都是大于0的,所以应该是计算过程中出现了float溢出的异常,也就是出现了inf,nan等异常值导致softmax输出为0.

当softmax之前的feature值过大时,由于softmax先求指数,会超出float的数据范围,成为inf。inf与其他任何数值的和都是inf,softmax在做除法时任何正常范围的数值除以inf都会变成0.然后求loss就出现了87.3356的情况。

解决办法

由于softmax输入的feature由两部分计算得到:一部分是输入数据,另一部分是各层的权值等组成

1.减小初始化权重,以使得softmax的输入feature处于一个比较小的范围

2.降低学习率,这样可以减小权重的波动范围

3.如果有BN(batch normalization)层,finetune时最好不要冻结BN的参数,否则数据分布不一致时很容易使输出值变得很大(注意将batch_norm_param中的use_global_stats设置为false )。

观察数据中是否有异常样本或异常label导致数据读取异常

4.学习率有点偏大,可以采用降低学习率,learning rate设置为0.01或者原来loss的1/51/5或者1/101/10。

4.2 loss保持0.69左右

采用VGG-16在做一个二分类问题,所以计算loss时等价与下面的公式:

loss=−log(Pk==label)loss=−log(Pk==label)

当p=0.5时,loss正好为0.693147,也就是训练过程中,无论如何调节网络都不收敛。最初的网络配置文件卷积层的参数如下所示:

从VGG-16训练好的模型进行fine-tuning也不发生改变,当在网络中加入初始化参数和decay_mult以后再次训练网络开始收敛。

但是具体是什么原因造成的,暂时还没有找到,难道是初始化参数的问题还是?

相关文章

  • 2019-12-25 学习纪要

    1 pytorch net = torch.nn.DataParallel(net).cuda() save_mo...

  • 【创客文案】写作训练19——纪要公文

    【学习目标】 1. 了解纪要的适用范围,掌握纪要的写作方法。 2. 撰写规范的纪要。 【知识引导】 一、纪要的概念...

  • 第一课会议纪要学习体会

    第一课会议纪要学习体会 作为管培生,学习的第一课是关于会议纪要的,经过理论知识的学习和近几次的会议纪要实践,有如下...

  • 2019-12-26

    2019-12-25 【日精进打卡第 641 天 【知~学习】 《六项精进》大纲 4 遍共 2420 遍 《大学》...

  • 2019-12-25晨间日记

    2019-12-25晨间日记 今天印象 天气:晴 心情:愉快 任务清单 已完成:练习 未完成:暂无 待更新:学习

  • NoSql学习纪要

    一些概念 关系型数据库遵循ACID规则 事务在英文中是transaction,和现实世界中的交易很类似,它有如下四...

  • 北戴河学习纪要

    班主任核心素养:赵福江(班主任杂志社) 班主任的专业性,有了专业,别人才会认可,班主任工作不是可有可无。会出台班主...

  • Redux 学习纪要

    背景 Redux 是 React 全家桶的重要一员,理解 Redux 可以更好的帮助我们开发前端项目。本文只谈论概...

  • 工作学习纪要

    2019年7月20日,广东电网能源发展有限公司输电第三分公司在专家林秋明与安全员温福洲的主持下于阳江驻地召开工作会...

  • 工作学习纪要

    2019年1月29日,《东莞市110千伏东宝(规划一)输变电工程110kV东宝变电站工程》数据的成功上报完毕...

网友评论

      本文标题:2019-12-25 学习纪要

      本文链接:https://www.haomeiwen.com/subject/qdjhoctx.html