1 系统环境

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

软件环境:

– MindSpore 版本: 1.9.0

  • 执行模式: 动态图 PYNATIVE

– Python 版本: 3.7.5

– 操作系统平台: Linux

2 报错信息

2.1 问题描述

两个网络中的层有相同名称时报错

2.2 报错信息

附件示例和图片示例感觉不太一样,以附件为准

2.3 脚本代码

从附件中获取

import mindspore.nn as nn
from mindspore.common.parameter import ParameterTuple, Parameterclass FullyConnectedNet(nn.Cell):def __init__(self, input_size, hidden_size, output_size):super(FullyConnectedNet, self).__init__(auto_prefix=False)self.linear1 = nn.Dense( input_size, hidden_size, weight_init="XavierUniform")self.linear2 = nn.Dense(hidden_size, output_size, weight_init="XavierUniform")self.relu = nn.ReLU()def construct(self, x):x = self.relu(self.linear1(x))x = self.linear2(x)return xclass EmaUpdate(nn.Cell):def __init__(self, policy_net, target_net):super(EmaUpdate, self).__init__()self.policy_param = ParameterTuple(policy_net.get_parameters())self.target_param = ParameterTuple(target_net.get_parameters())def construct(self, x):return xpolicy_net = FullyConnectedNet(4, 100, 2)
target_net = FullyConnectedNet(4, 100, 2)
ema_update = EmaUpdate(policy_net, target_net)复制

3 根因分析

1. FullyConnectedNet网络中auto_prefix=False, 因此没有给网络参数的名称添加前缀, 两个参数的name都叫做'weight', 重名

2. 而当把参数给ParameterTuple的时候,ParameterTuple对名字的唯一性有要求,因此就会报错,说'weight'已经存在

4 解决方案

解决方案说明:把FullyConnectedNet网络的auto_prefix=False改成auto_prefix=True, 或者不设置,因为默认就是True, 这样自动给网络参数的名称添加前缀,一个叫linear1.weight 一个叫linear2.weight, ParameterTuple就不会报错

修改后代码:

import mindspore.nn as nn
from mindspore.common.parameter import ParameterTuple, Parameter
from mindspore import contextcontext.set_context(mode=context.PYNATIVE_MODE)class FullyConnectedNet(nn.Cell):def __init__(self, input_size, hidden_size, output_size):super(FullyConnectedNet, self).__init__(auto_prefix=True)self.linear1 = nn.Dense(input_size, hidden_size, weight_init="XavierUniform")self.linear2 = nn.Dense(hidden_size, output_size, weight_init="XavierUniform")self.relu = nn.ReLU()def construct(self, x):x = self.relu(self.linear1(x))x = self.linear2(x)return xclass EmaUpdate(nn.Cell):def __init__(self, policy_net, target_net):super(EmaUpdate, self).__init__()self.policy_param = ParameterTuple(policy_net.get_parameters())self.target_param = ParameterTuple(target_net.get_parameters())def construct(self, x):return xpolicy_net = FullyConnectedNet(4, 100, 2)
target_net = FullyConnectedNet(4, 100, 2)
print("mmmmmmmmmmmmm", policy_net.trainable_params())
print("wwwwwwwww", target_net.trainable_params())
ema_update = EmaUpdate(policy_net, target_net)
复制

执行后的结果

用例pass且打印想要的参数

mmmmmmmmmmmmm [Parameter (name=linear1.weight, shape=(100, 4), dtype=Float32, requires_grad=True), Parameter (name=linear1.bias, shape=(100,), dtype=Float32, requires_grad=True), Parameter (name=linear2.weight, shape=(2, 100), dtype=Float32, requires_grad=True), Parameter (name=linear2.bias, shape=(2,), dtype=Float32, requires_grad=True)]

wwwwwwwww [Parameter (name=linear1.weight, shape=(100, 4), dtype=Float32, requires_grad=True), Parameter (name=linear1.bias, shape=(100,), dtype=Float32, requires_grad=True), Parameter (name=linear2.weight, shape=(2, 100), dtype=Float32, requires_grad=True), Parameter (name=linear2.bias, shape=(2,), dtype=Float32, requires_grad=True)]

x_name mmmmmmmmmmmmmmmmmmmm linear1.weight

names wwwwwwwwwwwwww {'linear1.weight'}

x_name mmmmmmmmmmmmmmmmmmmm linear1.bias

names wwwwwwwwwwwwww {'linear1.bias', 'linear1.weight'}

x_name mmmmmmmmmmmmmmmmmmmm linear2.weight

names wwwwwwwwwwwwww {'linear1.bias', 'linear1.weight', 'linear2.weight'}

x_name mmmmmmmmmmmmmmmmmmmm linear2.bias

names wwwwwwwwwwwwww {'linear1.bias', 'linear1.weight', 'linear2.bias', 'linear2.weight'} ---ParameterTuple1

x_name mmmmmmmmmmmmmmmmmmmm linear1.weight

names wwwwwwwwwwwwww {'linear1.weight'}

x_name mmmmmmmmmmmmmmmmmmmm linear1.bias

names wwwwwwwwwwwwww {'linear1.bias', 'linear1.weight'}

x_name mmmmmmmmmmmmmmmmmmmm linear2.weight

names wwwwwwwwwwwwww {'linear1.bias', 'linear1.weight', 'linear2.weight'}

x_name mmmmmmmmmmmmmmmmmmmm linear2.bias

names wwwwwwwwwwwwww {'linear1.bias', 'linear1.weight', 'linear2.bias', 'linear2.weight'} ---ParameterTuple2

邮箱:497776945@qq.com

报错:The value parameter,it‘s name ‘xxxx‘ already exsts. please set a unique name for the parameter .相关推荐

  1. git push报错:fatal: unable to access ‘https://XXXX.git/‘: Peer‘s Certificate issuer is not recognized.

    推镜像的时候,git push报错:fatal: unable to access 'https://XXXX.git/': Peer's Certificate issuer is not reco ...

  2. SpringBoot启动报错: Error creating bean with name ‘“XXXX‘ defined in class path resource

    报错信息: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'reques ...

  3. SAP: 出库报错 -不可能为条目 XXX GBB XXXX XXX XXXX 确立账户

    问题: 使用 BAPI_GOODSMVT_CREATE 移动出库,报错:"不可能为条目 XXX  GBB  XXXX  XXX XXXX 确立账户",如下图所示. 解决办法: 事务 ...

  4. 【报错】no main manifest attribute, in xxxx.jar

    在你的pom.xml文件中一定要有这一段代码 代码段如下: <build><plugins><plugin><groupId>org.springfra ...

  5. Xcode报错:can't locate file for: -xxxx 解决

    Xcode新增工程库或者文件时: 1.Xcode工程新添加.a文件或者工程文件时,首先需要右键点击xcodeproj工程->Add File to " ",添加至工程目录. ...

  6. spring boot ajax 415,解决@RequestBody接收json对象报错415的问题

    @RequestBody接收json对象报错415 前端请求: $.ajax({ url: basePath() + "/index/login.do", type : " ...

  7. pip install keras_常用基本pip命令及报错问题解决(不断更新)

    请注意:以下均在Win10环境下进行的操作. pip命令可以对python第三方包进行高效管理的工具. 本文记录作者学习python以来常用的pip命令,并会不断更新. !!!在打开cmd时,请用管理 ...

  8. Neo4j连接 (Connect to Neo4j) 报错

    问题: Connect to Neo4j报错: ServiceUnavailable: WebSocket connection failure. Due to security constraint ...

  9. 命令行用impdp导入oracle时,报错ORA-02374: conversion error loading table “XXXX“.“XXXX“ ORA-12899: value……

    命令行用impdp导入oracle时,报错: ORA-02374: conversion error loading table "XXXX"."XXXX" O ...

  10. Oracle OEM 配置报错: No value was set for the parameter DBCONTROL_HTTP_PORT 解决方法

    这几天经常与OEM 顶上,前几天刚解决一个OEM问题,今天又遇到了. Oracle 安装OEM 报错: 无法对所有EM 相关账户解锁 解决方法 http://blog.csdn.net/tianles ...

最新文章

  1. 利用中断在 ESP32 MicroPython 程序中读取AM2302
  2. Android10.0 Binder通信原理(六)-Binder数据如何完成定向打击
  3. word 2010中如何创建多级目录和多级列表
  4. 【Python】青少年蓝桥杯_每日一题_11.27_电梯用电量
  5. precede和previous_Previous Analyses of Hungarian Phrase Structure
  6. java urlrewrite_Java|urlrewrite|URL重写|多个参数
  7. 成都五月花计算机网教,【强调】成都五月花计算机学校网址是什么
  8. onenote复制出来是图片_OneNote入门篇
  9. WINDOWS下线程同步探讨
  10. linux怎么变成windows,如何把Ubuntu 18.04改造成Windows主题界面
  11. perf-应用程序的调优与使用
  12. javascript 计时器,消失计时器
  13. 计算机学术会议英语作文,计算机专业资料——重要国际学术会议
  14. php中如何写js代码提示_PHP 实现类似js中alert() 提示框
  15. VirtualBox安装增强功能时报错:未能加载虚拟光盘VBoxGuestAdditions.iso 到虚拟电脑
  16. oracle sqlplus客户端,sqlplus下载|oracle sqlplus windows 客户端工具 64位下载 - 3322软件站...
  17. 机械键盘——红轴、黑轴、茶轴、青轴、奶轴、X轴的故事
  18. Python和JavaScript间代码转换4个工具
  19. 键盘查询方式的c语言编程,求助大佬简单的单片机键盘c语言编程问题
  20. Tomcat——配置Tomcat的服务端口(默认端口8080)

热门文章

  1. Qt .Pro 文件中的相对路径设置注意事项
  2. 内网环境下配置jenkins插件安装源
  3. Linux驱动开发7---设备驱动模型的三大组件
  4. 剑指offer:和为S的连续正数序列(Python)
  5. unity 3D字体
  6. wepy build --watch报错 ERR! Parse WePY config failed. Are you trying to use 解决
  7. 从整数数组中找出唯二奇数次的数字 Python版
  8. 高压功率放大器在材料损伤非线性振动声调制检测试验中的应用
  9. git安装配置和TortoiseGit(小乌龟)的安装配置和idea配置git
  10. c语言STUP 200,M2里面出现Unable to write to C:\MirServer\Mir200\!Setup.txt