PyTorch中Parser参数定义学习率时1e-2等科学计数法含义解析
PyTorch机器学习场景下科学计数法学习率的取值规则
这种1e-2/1e-3/4e-3的写法是Python原生支持的标准浮点型科学计数法,不是PyTorch或者参数解析器独有的特殊格式,计算规则非常明确:
- 整体格式为
有效数字e10的幂次,换算公式为:实际值 = 有效数字 × (10的幂次)e前面的部分是有效数值,也就是数字主体e后面带正负号的整数是10的指数,决定小数点移位规则:指数为正,就把有效数字的小数点向右移动对应位数;指数为负,就把有效数字的小数点向左移动对应位数
常见学习率写法的实际值对照
你提到的几个典型值换算结果如下,不存在额外歧义:
1e-2= 1 × 10^-2 = 0.011e-3= 1 × 10^-3 = 0.001,既不是0.0001也不是0.3(注:0.0001对应的科学计数法是1e-4)4e-3= 4 × 10^-3 = 0.004
给出的参数代码的默认学习率计算
对应的参数定义代码如下:
parser.add_argument('--lr', type=float, nargs='+', default=[4e-2], help='learning rate')
这段定义的实际含义:
type=float指定参数解析为浮点数,科学计数法写法会被Python自动识别转换,不需要额外处理格式nargs='+'表示支持传入1个或多个学习率值,常用于参数网格搜索、不同网络参数组配置独立学习率的场景- 默认值
[4e-2]的换算结果为 4 × 10^-2 = 0.04,也就是不手动传入--lr参数时,程序会用0.04作为初始学习率。
补充说明:深度学习/机器学习场景下常用的学习率范围通常在1e-5(0.00001)到1e-1(0.1)之间,用科学计数法书写可以避免写一长串0时数错小数位,是整个领域的通用书写习惯,所有主流深度学习框架都原生支持这种格式。
内容的提问来源于stack exchange,提问作者saran
相关产品推荐
相关产品推荐

