深度学习框架下良好编程细节

  • 如何设置初始学习率和L2权重衰减?假设启用了层自适应算法,那么初始学习率可选0.01, 0.002, 0.001,L2权重衰减可选0.01。如果没有启用层自适应算法,则初始学习率设置可选0.01 \times \mathrm{trust}\mbox{-}\mathrm{ratio}, 0.002 \times \mathrm{trust}\mbox{-}\mathrm{ratio}, 0.001 \times \mathrm{trust}\mbox{-}\mathrm{ratio},L2权重衰减可选0.01 \div \mathrm{trust}\mbox{-}\mathrm{ratio}。所以,如果没有启用层自适应算法,可以打印\mathrm{trust}\mbox{-}\mathrm{ratio}观察一下,从而设置初始学习率和L2权重衰减。注明:trust-ratio通常指所有中的最大值。
  • 通常模型越深,学习率要适当减小。
  • 在PyTorch中,通常可以使用三种权重初始化方式,torch.empty + nn.init,torch.empty.fill_,torch.tensor。若是张量权重,推荐torch.empty + nn.init,若是标量权重,推荐torch.empty.fill_或torch.tensor。
  • 避免使用if else分支,推荐使用torch.where/tf.where
  • 对于同一单元微小变化,观察前四个epoch就能判断优劣。因此,可根据前四个epoch调整单元设计。
  • 不同复杂度模型,使用相同优化器、学习率和训练epoch可能并不绝对公平。目前,通过实验发现,Lion可能是在相同学习率和训练最短epoch下最公平的优化器, Adam可能是在相同学习率和训练次之最短epoch下公平的优化器,SGDM可能是在相同学习率和训练最长epoch下公平的优化器了。
  • 如果 数据量很小,将其放在 CPU 上可能会更快,因为在 GPU 上启动内核的开销可能会比在 CPU 上更大。因此,为了提高性能,也可以将 小数据量 放在 CPU 上。
  • 同类型的数据组合起来算,避免广播多次。比如:(ab)\mathbf{X}的计算速度可能快于a(b\mathbf{X})
  • 分组共享,可以将分组数放置在batch-size维度。论文中的卷积通常是指卷积核大于1的卷积,核为1的卷积本质是全连接层。
  • 在tensorflow中,约定俗成用axis和axes表示张量阶数,在pytorch中,约定俗成用dim和dim表示张量阶数。通常用features, units, channels, planes, size表示维度数。
  • tensorflow 1.x屏蔽满屏警告
    import os
    os.environ["TF_CPP_MIN_LOG_LEVEL"] = "2"
    import warnings
    warnings.filterwarnings('ignore')
    ......
    import tensorflow as tf
    ......
    tf.logging.set_verbosity(tf.logging.ERROR)

  • tensorflow 2.x屏蔽满屏警告 
import os
os.environ["TF_CPP_MIN_LOG_LEVEL"] = "2"
import warnings
warnings.filterwarnings('ignore')
......
import tensorflow as tf
......
tf.get_logger().setLevel('ERROR')

经验之谈:权重初始化与网络宽度有关;残差系数、激活函数可以和网络深度有关;学习率可以和训练步长有关;权重更新和优化算法有关。

与定义权重有关的形参放在__init__(PyTorch)或__init__,build(tensorflow)中,其他放在forward(PyTorch)或call (tensorflow)。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值