深度学习小技巧日记(日日新)

Tensorflow使用GPU加速训练且自动分配内存

gpus = tf.config.experimental.list_physical_devices(device_type='GPU')
for gpu in gpus:
    tf.config.experimental.set_memory_growth(gpu, True)

Pytorch使用GPU加速训练

device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')

Dropout

Dropout是一种随机断开神经元的技术,其具体内容前文已有介绍。Dropout控制过拟合的原理有两点。第一是在神经网络的局部构造集成学习模型,在处理测试集样本时,网络作出的推断实际上是不同神经元断开时的子网络所做出推断的平均。集成学习模型,如随机森林,梯度提升树等在控制过拟合上往往效果明显。

第二是减少神经元之间的耦合,由于Dropout每次断开的神经元都不相同,这就阻止了神经元耦合起来提取同一种特征的可能性,使得网络在缺失一些信息的情况下仍然能够做出正确推断。

学习率下降方式 

指数衰减、固定步长的衰减、多步长衰、余弦退火衰减。

应该选择哪一个优化器

RMSprop,Adadelta和Adam被认为是自适应优化算法,因为它们会自动更新学习率。 使用SGD时,您必须手动选择学习率和动量参数,通常会随着时间的推移而降低学习率。

在实践中,自适应优化器倾向于比SGD更快地收敛, 然而,他们的最终表现通常稍差。 SGD通常会达到更好的minimum,从而获得更好的最终准确性。但这可能需要比某些优化程序长得多的时间。 它的性能也更依赖于强大的初始化和学习率衰减时间表,这在实践中可能非常困难。

因此,如果你需要一个优化器来快速得到结果,或者测试一个新的技术。 我发现Adam

很实用,因为它对学习率并不是很敏感。 如果您想要获得绝对最佳的表现,请使用SGD + Momentum,并调整学习率,衰减和动量值来使性能最优化。

为什么要shuffle?

 就好像温室的花朵和野花一样,训练神经网络的本质是让网络从不同的数据中捕捉到相同的特征,如果一系列图片都是同一种的数据,那么就好像温室的花朵一样,经不起复杂环境的考验,直接表现就是:过拟合。

Anaconda出现有关“--user”的错误

 解决办法:

                                 简而言之:只需在安装的包后面加上 --user

Ranger完美优化

Ranger 优化器是一个易于使用和高效的单一代码库(加载/保存和一个循环处理的所有参数的更新),集成到了 FastAI 中,Ranger 的源代码你可以直接拿来用

lessw2020/Ranger-Deep-Learning-Optimizer: Ranger - a synergistic optimizer using RAdam (Rectified Adam), Gradient Centralization and LookAhead in one codebase (github.com)

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大气层煮月亮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值