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相关推荐

  1. python报错ValueError: Must pass 2-d input. shape=(5, 1, 10)解决方案

    1.承接上一篇博文,上文提到append()函数中的参数ignore_index=True,如果加上该参数,是a.append(b,ignore_index=True),数据不支持的情况下会报错&qu ...

  2. 小孢子的神奇之旅-如何阅读MindSpore报错信息(2)

    小孢子的神奇之旅-如何阅读MindSpore报错信息(2) 先回忆下自修孢问题解决的三步巅峰论,"1)理解问题原因 2)找到问题出在哪里 3)改了",我们在上篇文章应用三步论解决了 ...

  3. [nginx报错]---unknown directive chunkin in /XXXXX/XXXXXX:XX的几种解决方式

    问题: nginx报错:unknown directive "chunkin" in /XXXXX/XXXXXX:XX 解决: 当出现unknown directive,一般有个反 ...

  4. 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. __ ...

  5. import lap报错ValueError

    import lap报错ValueError: numpy.ndarray has the wrong size, try recompiling. Expected 88, got 96 问题:首先 ...

  6. 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等数据 ...

  7. 【labelme】标注工具报错ValueError: min() arg is an empty sequence

    [labelme]标注工具报错ValueError: min() arg is an empty sequence 今天在用labelme对图片进行标注时,点到某处突然卡了,随后labelme直接退出 ...

  8. 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 执 ...

  9. Keras前后尺寸一致却依然报错'ValueError: total size of new array must be unchanged'的原因

    某些情况下我们需要对张量进行维度变换,一般可以通过调用以下两种方法实现: # 1. TensorFlow自带 tf.reshape(tensor, target_shape) # 2. (推荐)Ker ...

最新文章

  1. Android 标签 (FlexboxLayout实现标签)
  2. 优秀logo设计解析_优秀Logo设计!数学美的运用
  3. Java总结篇系列:Java多线程(三)
  4. html 按下和松开事件,JQuery通过键盘控制键盘按下与松开触发事件
  5. 成功解决ValueError: could not convert string to float: ‘\\N‘
  6. TensorFlow维度变换函数语句
  7. C# Repeater绑定显示数组
  8. 中科院C语言应聘机试编程题6,中科院计算所保研笔试+机试+面试经验分享
  9. Java动态代理之JDK实现和CGlib实现
  10. 5G与IoT将成为IPv6强大驱动力
  11. conficker病毒
  12. html清除span的text,使用jquery删除字符串中的span标签
  13. 新概念二册 Lesson 12 Goodbye and good luck再见,一路顺风 (一般将来时)
  14. IEEE浮点数尾数向偶舍入-四舍六入五成双
  15. linux 显示bin 文件格式,bin文件扩展名,bin文件怎么打开?
  16. dvorak键盘的使用
  17. 关于《算法(第四版 谢路云译)》标准库In、Out、StdOut和StdIn的正确配置和调用经验分享(以BinarySearch二分查找算法为例)
  18. 为啥功放上的音量控制的dB数都是负的
  19. 热天的阅读日志,真的好热
  20. html 全屏播放swf,HTML - 如何使SWF全屏?

热门文章

  1. 【可信计算】第十次课:TPM密码资源管理(二)
  2. 安卓通过链接打开淘宝客户端
  3. 如何把手机app的视频下载到手机上?网页上的视频怎么下载?
  4. 最全面的微信小程序渲染图片的方式
  5. 算法细节系列(20):Word Ladder系列
  6. 用GitHub,Markdown和Gitbook写读书笔记
  7. Free Code Camp 练习总结(五) ——Introduction to the ES6 Challenges ES6基本用法和基础知识
  8. django的通过set_password注册密码加密
  9. 【工程/物理光学(五)——激光技术】
  10. AI智能视频批量剪辑软件开发-云罗企客-视频一键批量处理