MindSpore报错:construct() missing 1 required positional argument
【摘要】 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)
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)