MindSpore报错ValueError:For xx,the x shape:xx must be equal to xxx
1 报错描述
1.1 系统环境
Hardware Environment(Ascend/GPU/CPU): GPU
Software Environment:
– MindSpore version (source or binary): 1.6.0
– Python version (e.g., Python 3.7.5): 3.7.6
– OS platform and distribution (e.g., Linux Ubuntu 16.04): Ubuntu 4.15.0-74-generic
– GCC/Compiler version (if compiled from source):
1.2 基本信息
1.2.1 脚本
训练脚本是通过构建BinaryCrossEntropy单算子网络,计算两个变量二进制交叉熵的例子。脚本如下:
01 class Net(nn.Cell):02 def __init__(self):03 super(Net, self).__init__()04 self.binary_cross_entropy = ops.BinaryCrossEntropy()05 self.weight = None0607 def construct(self, logits, labels, weight):08 result = self.binary_cross_entropy(logits, labels, self.weight)09 return result1011 logits = Tensor(np.random.uniform(0, 1, (4, 3, 388, 388)).astype(np.float32))12 labels = Tensor(np.random.randint(0, 2, (4, 2, 388, 388)).astype(np.float32))13 net = Net()14 out = net(logits, labels)
15 print(‘out:’,out)
1.2.2 报错
这里报错信息如下:
Traceback (most recent call last):File "demo.py", line 08, in <module>
result = self.binary_cross_entropy(logits, labels, weight)
…
ValueError: mindspore/core/utils/check_convert_utils.h:216 Check] For primitive[BinaryCrossEntropy], the x shape: [4,3,388,388,] must be equal to [4,2,388,388,]
The function call stack (See file ' /rank_0/om/analyze_fail.dat' for more details):
\# 0 In file demo.py(12)
result = self.binary_cross_entropy(logits, labels, weight)
原因分析
在MindSpore 1.6版本,在construct中创建和使用Tensor。如脚本中第13行代码所示。
接着看报错信息,在ValueError中,写到For primitive[BinaryCrossEntropy], the x shape: [4,3,388,388,] must be equal to [4,2,388,388,],意思是传的labels的shape是 [4, 2, 388, 388],但是你传进去的logits的shape却是[4, 3, 388, 388],而所有的损失函数都会要求logits和labels的shape必须一样,在官网中对BinaryCrossEntropy输入logits和labels的shape做了限制说明。
检查代码发现,12行代码labels的维度为确实不等于logits,此时需要检查传入值是否有问题,使logits和labels的shape相等。
2 解决方法
基于上面已知的原因,很容易做出如下修改:
此时执行成功,输出如下:
out: 1.0000657
3 总结
定位报错问题的步骤:
1、找到报错的用户代码行:result = self.binary_cross_entropy(logits, labels, self.weight);
2、 根据日志报错信息中的关键字,缩小分析问题的范围: the x shape: [4,3,388,388,] must be equal to [4,2,388,388,];
3、需要重点关注变量定义、初始化的正确性。
4 参考文档
4.1 construct方法
MindSpore报错ValueError:For xx,the x shape:xx must be equal to xxx相关推荐
- python报错ValueError: Must pass 2-d input. shape=(5, 1, 10)解决方案
1.承接上一篇博文,上文提到append()函数中的参数ignore_index=True,如果加上该参数,是a.append(b,ignore_index=True),数据不支持的情况下会报错&qu ...
- 小孢子的神奇之旅-如何阅读MindSpore报错信息(2)
小孢子的神奇之旅-如何阅读MindSpore报错信息(2) 先回忆下自修孢问题解决的三步巅峰论,"1)理解问题原因 2)找到问题出在哪里 3)改了",我们在上篇文章应用三步论解决了 ...
- [nginx报错]---unknown directive chunkin in /XXXXX/XXXXXX:XX的几种解决方式
问题: nginx报错:unknown directive "chunkin" in /XXXXX/XXXXXX:XX 解决: 当出现unknown directive,一般有个反 ...
- Django报错 ValueError: The view didn‘t return an HttpResponse object. It returned None instead.
Django报错 ValueError: The view *** didn't return an HttpResponse object. It returned None instead. __ ...
- import lap报错ValueError
import lap报错ValueError: numpy.ndarray has the wrong size, try recompiling. Expected 88, got 96 问题:首先 ...
- Python中调用FRED报错ValueError: time data 'fred' does not match format '%Y-%m-%d'
Python中调用FRED报错ValueError: time data 'fred' does not match format '%Y-%m-%d' 小白一枚,刚学习python调用FRED等数据 ...
- 【labelme】标注工具报错ValueError: min() arg is an empty sequence
[labelme]标注工具报错ValueError: min() arg is an empty sequence 今天在用labelme对图片进行标注时,点到某处突然卡了,随后labelme直接退出 ...
- Docker 报错Error response from daemon: Get https://xx.xx.xx.xx/v2/: Service Unavailable
问题 Mac 上docker pull是报错Error response from daemon: Get https://xx.xx.xx.xx/v2/: Service Unavailable 执 ...
- Keras前后尺寸一致却依然报错'ValueError: total size of new array must be unchanged'的原因
某些情况下我们需要对张量进行维度变换,一般可以通过调用以下两种方法实现: # 1. TensorFlow自带 tf.reshape(tensor, target_shape) # 2. (推荐)Ker ...
最新文章
- Android 标签 (FlexboxLayout实现标签)
- 优秀logo设计解析_优秀Logo设计!数学美的运用
- Java总结篇系列:Java多线程(三)
- html 按下和松开事件,JQuery通过键盘控制键盘按下与松开触发事件
- 成功解决ValueError: could not convert string to float: ‘\\N‘
- TensorFlow维度变换函数语句
- C# Repeater绑定显示数组
- 中科院C语言应聘机试编程题6,中科院计算所保研笔试+机试+面试经验分享
- Java动态代理之JDK实现和CGlib实现
- 5G与IoT将成为IPv6强大驱动力
- conficker病毒
- html清除span的text,使用jquery删除字符串中的span标签
- 新概念二册 Lesson 12 Goodbye and good luck再见,一路顺风 (一般将来时)
- IEEE浮点数尾数向偶舍入-四舍六入五成双
- linux 显示bin 文件格式,bin文件扩展名,bin文件怎么打开?
- dvorak键盘的使用
- 关于《算法(第四版 谢路云译)》标准库In、Out、StdOut和StdIn的正确配置和调用经验分享(以BinarySearch二分查找算法为例)
- 为啥功放上的音量控制的dB数都是负的
- 热天的阅读日志,真的好热
- html 全屏播放swf,HTML - 如何使SWF全屏?
热门文章
- 【可信计算】第十次课:TPM密码资源管理(二)
- 安卓通过链接打开淘宝客户端
- 如何把手机app的视频下载到手机上?网页上的视频怎么下载?
- 最全面的微信小程序渲染图片的方式
- 算法细节系列(20):Word Ladder系列
- 用GitHub,Markdown和Gitbook写读书笔记
- Free Code Camp 练习总结(五) ——Introduction to the ES6 Challenges ES6基本用法和基础知识
- django的通过set_password注册密码加密
- 【工程/物理光学(五)——激光技术】
- AI智能视频批量剪辑软件开发-云罗企客-视频一键批量处理