使用piecewise_constant_lr造成梯度异常
收藏回复举报
使用piecewise_constant_lr造成梯度异常
发表于2023-11-24 15:40:39
0 查看

1 系统环境

硬件环境(Ascend/GPU/CPU): Ascend/GPU/CPU

MindSpore版本: mindspore=2.1.1

执行模式(PyNative/ Graph):不限

Python版本: Python=3.9.18

操作系统平台: Ubuntu22.04

2 报错信息

2.1问题描述

class Network(nn.Cell):
    def __init__(self):
        super().__init__()
        self.flatten = nn.Flatten()
        self.dense_relu_sequential = nn.SequentialCell(
            nn.Dense(28*28, 512),
            nn.ReLU(),
            nn.Dense(512, 512),
            nn.ReLU(),
            nn.Dense(512, 10)
        )

    def construct(self, x):
        x = self.flatten(x)
        logits = self.dense_relu_sequential(x)
        return logits

model = Network()
print(model)

milestone = [1,3,10,100]
learning_rates = [0.1,0.05,0.01,0.001]
lr = nn.piecewise_constant_lr(milestone,learning_rates)

loss_fn = nn.CrossEntropyLoss()
optimizer = nn.SGD(model.trainable_params(),learning_rate=lr)
# optimizer = nn.SGD(model.trainable_params(),learning_rate=0.1)

2.2报错信息

使用官网入门实例https://gitee.com/mindspore/docs/blob/r2.1/tutorials/source_zh_cn/beginner/quick_start.ipynb。然后对学习率进行了修改,使用了动态学习率出现梯度异常问题。最后一行注释的代码是官方原始代码,学习率为固定常量 lr=0.1。

原官方代码运行结果

新增动态学习率后的运行结果

3 根因分析

4 解决方案

******此处由用户填写******

包含文字方案和最终脚本代码

请将正确的脚本打包并上传附件

我要发帖子