- 如何设置初始学习率和L2权重衰减?假设启用了层自适应算法,那么初始学习率可选,L2权重衰减可选。如果没有启用层自适应算法,则初始学习率设置可选,L2权重衰减可选。所以,如果没有启用层自适应算法,可以打印观察一下,从而设置初始学习率和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 上。
- 同类型的数据组合起来算,避免广播多次。比如:的计算速度可能快于。
- 分组共享,可以将分组数放置在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)。