MindSpore报错:construct() missing 1 required positional argument

喜酱酱紫 2022-11-26 17:02:47

【摘要】 1 系统环境Windows11 x64 CPUPython 3.9MindSpore 1.8.1conda env listconda activate py39_ms18# 更新环境pip install --upgrade pippip install https://ms-release.obs.cn-north-4.myhuaweicloud.com/1.8.0/MindSpor...

1 系统环境

  • Windows11 x64 CPU
  • Python 3.9
  • MindSpore 1.8.1
conda env list

conda activate py39_ms18
# 更新环境
pip install --upgrade pip

pip install https://ms-release.obs.cn-north-4.myhuaweicloud.com/1.8.0/MindSpore/cpu/x86_64/mindspore-1.8.0-cp39-cp39-win_amd64.whl --trusted-host ms-release.obs.cn-north-4.myhuaweicloud.com -i https://pypi.tuna.tsinghua.edu.cn/simple

2 报错信息

2.1 问题描述

  • 代码给的不全,好像少了很多,还存在中英文符号问题,尝试补全
  • 参数缺少,需要两个参数,只给一个
  • 单词拼写错误太多

2.2 问题描述

  • TypeError: construct() missing 1 required positional argument:‘labet’
  • TypeError: init() missing 2 required positional arguments: ‘network’ and ‘optimizer’

2.3 脚本代码

def __init__(self, optimizer):

”””入参有两个:训练网络,优化器”””

super(CustomTrain0neStepCell, self).__init__(auto_prefix=False)

seLf.network = network        # 定义前向网络

self.network.set_grad()         # 构建反向网络

self.optimizer = optimizer            # 定义优化器

self.weights = self.optimizer .parameters      #待更新参数

self.grad = ops.Grad0peration(get_by_list=True,sens_param=True)

3 根因分析

  • 代码中存在多处拼写错误: 0 和O ,大小写
  • 参数给定的和需要的不一致,缺少参数

4 解决方案

  • (1)修改并尝试补全代码
  • (2)修正多处 0 和 O问题
  • (3)修正单词拼写问题
  • (4)修改增加参数
import numpy as np
import mindspore.nn as nn
import mindspore.ops as ops
import mindspore as ms

class CustomTrainOneStepCell(nn.Cell):
    def __init__(self, network, optimizer):
        """入参有两个:训练网络,优化器"""
        super(CustomTrainOneStepCell, self).__init__(auto_prefix=False)  # CustomTrain0neStepCell
        self.network = network        # 定义前向网络  seLf.network = network
        self.network.set_grad()         # 构建反向网络
        self.optimizer = optimizer            # 定义优化器
        self.weights = self.optimizer.parameters      #待更新参数 self.weights = self.optimizer .parameters
        self.grad = ops.GradOperation(get_by_list=True, sens_param=True) #  Grad0peration

    def construct(self, x, label):
        return x

if __name__:
    # ms.set_context(mode=mindspore.GRAPH_MODE, device_target="CPU")
    ms.set_context(mode=ms.GRAPH_MODE, device_target="CPU")
    # input = ms.Tensor(np.array([1.0, 2.0, 3.0]).astype(np.float32))
    label= []
    input = ms.Tensor(np.ones([1, 120, 640]), ms.float32)
    network =nn.Conv1d(120, 240, 4, has_bias=False, weight_init='normal')
    optimizer = nn.SGD(network.trainable_params(), 1e-2)

    net = CustomTrainOneStepCell(network, optimizer)
    net(input, label)
  • 这里使用的是最基本的优化器是随机梯度下降算法(SGD),很多优化器在SGD的基础上进行了改进,以实现目标函数能更快速更有效地收敛到全局最优点。MindSpore中的nn模块提供了常用的优化器,如nn.SGD、nn.Adam、nn.Momentum等。
optimizer = nn.SGD(network.trainable_params(), 1e-2)

文章来源:华为云社区 https://bbs.huaweicloud.com/blogs/381811

...全文
223 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

164

社区成员

发帖
与我相关
我的任务
社区描述
AI技术分享以及交流
人工智能 其他
社区管理员
  • 跳楼梯企鹅
  • 平凡的人1
  • 微枫Micromaple
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧