目录

1 问题描述

2 EDA分析

3 解决方案


1 问题描述

今天在使用transforms.Normalize((0.5,), (0.5,))对MNIST数据集中的图像进行归一化时,程序执行到这里异常退出了,

提示:

Process finished with exit code -1073741676 (0xC0000094)

我自己写了一段代码,进行测试是没有问题的:

import torchvision.transforms as transforms
import numpy as np
im1 = np.random.rand(28,28)
im1 = np.expand_dims(im1, axis=2)# 首先进行.ToTensor()的变换
f1 = transforms.ToTensor()
im1 = f1(im1)
im1.shape# Out[10]:
# torch.Size([1, 28, 28])# 然后进行规范化的变换
f2 = transforms.Normalize((0.5,), (0.5,))
im2 = f2(im1)
im2.shape# Out[11]:
# torch.Size([1, 28, 28])

所以我感觉可能是数据的问题导致的;

2 EDA分析

我先测试的时候怀疑是数据的问题,于是用EDA分析了一下,果然重现出这个Bug,

重现代码如下:

import numpy as np
a = np.random.randint(0, 255, (28, 28),dtype=np.int64)
a.shape# Out[1]:
# (28, 28)# 增加维度Channel
im1 = a
im1 = np.expand_dims(im1, axis=2)
im1.shape# Out[2]:
# (28, 28, 1)# 进行.ToTensor()的变换
import torchvision.transforms as transforms
f1 = transforms.ToTensor()
im2 = f1(im1)
im2.shape# Out[3]:
# torch.Size([1, 28, 28])# 获得规范化的变换
f2 = transforms.Normalize((0.5,), (0.5,))
f2# Out[4]:
# Normalize(mean=(0.5,), std=(0.5,))# 对数据进行规范化处理
im3 = f2(im2)
print("Finish")# (没有输出,并且Notebook提示“Dead kernel”,也就是核进程崩溃了)

如图所示,

于是我们对Bug进行归纳:

PyTorch中的transforms.Normalize((0.5,), (0.5,))函数无法对np.int64类型的图像矩阵数据进行操作,否则核进程会崩溃,具体原因未知;

已经提交到GitHub上:

https://github.com/pytorch/pytorch/issues/31420#issue-539643449

3 解决方案

在进行归一化的操作之前,先将torch.Tensor的类型转换为Porch默认的数据类型Float

使用torch.Tensor.float()函数,

以下是测试代码:

# 对数据进行规范化处理
im2 = im2.float()
im3 = f2(im2)
print("Finish")

然后就可以正常运算了,如图所示,

使用transforms.Normalize((0.5,), (0.5,))异常报错“Process finished with exit code -1073741676 (0xC0000094)”相关推荐

  1. Python 编写代码出现 process finished with exit code 0

    在Pycharm中编写Python语句,程序都没有问题  就是没有执行的结果,有时候会出现: process finished with exit code 0状况 这个是因为格式不正确造成的:请看图 ...

  2. 0716 process finished with exit code 0 解决

    写完代码之后想要debug 看看是否可以运行成功过程中,出现了Process finished with exit code 0 意思是程序运行成功并且退出 exit code 0 表示程序执行成功, ...

  3. SpringBoot启动代表出现Process finished with exit code 0

    代码都没问题,启动时应用无缘无故就是会出现Process finished with exit code 0,这个是什么意思呢,是应用程序正常退出的意思. 可以科普一下exit code: exit ...

  4. 【问题解决】springboot启动后一小会就自动停止,提示Process finished with exit code 0

    最近springboot启动后一小会就自动停止,没提示具体报错,只有提示: Disconnected from the target VM, address: '127.0.0.1:60011', t ...

  5. SpringBoot启动时:Process finished with exit code 0解决办法

    Process finished with exit code 0并不是报错了,这个表示程序正常执行完毕退出了.这就表示项目启动成功后了,此时运行,最后运行完毕自动退出.但我们是需要访问路径的,所以需 ...

  6. Pycharm 错误代码 Process finished with exit code 0

    错误代码:Process finished with exit code 0 1.问题描述 PyCharm正常运行,但没有得到预期的效果 2.解决办法 看运行的py文件是否有主函数,或者同一个工程文件 ...

  7. python中出现Process finished with exit code 0的处理办法

    python爬虫时 出现以上语句通常情况下需要检查以下几个地方: 1.if __name__ == "__main__"语句中的"__mian__"中下划线必须 ...

  8. Process finished with exit code 0

    Process finished with exit code 0 点击程序正常退出 Process finished with exit code -1 强行终止app Process finish ...

  9. 记一次Process finished with exit code 1 项目异常

    一.环境 自己是nacos注册的微服务项目,而且所有代码都是经过测试进行git提交. 今天将代码clone下来进行新手教程文档的编写 但是自己怎么都跑不起来,就很无语,如果不是怀揣着自己对测试代码的信 ...

最新文章

  1. 基于Java的疫情防控管理系统
  2. foolscap实现rpc(四)
  3. 容量和速度是选购闪存盘的关键
  4. 5年後、10年後の自分のイメージ
  5. java 静态方法中为什么不可以使用关键字this _super_Java static方法里为什么不能使用this关键字,和Super...
  6. 闲谈网络运维管理的那些事儿(之三)
  7. 高考地理背熟这些知识可以拿80%的分数(1)
  8. C++primer拾遗(第八章:IO库)
  9. Java GregorianCalendar hashCode()方法与示例
  10. 【软件工程】容错、高可用、灾备の辨析
  11. MYSQL常用操作速查
  12. 浅谈SEO翻倍提升网站流量
  13. php normalize,normalize函数怎么使用
  14. 面试mysql索引底层_面试必备之MYSQL索引底层原理分析
  15. C++记录程序运行时间5大方法
  16. EFR32晶体校准指南
  17. opencv c++ Harris角点检测、shi-tomasi角点
  18. java将表情字符串转表情符号_使用java将字符串中的表情符号替换为字符串
  19. [ACW]826.单链表
  20. LeetCode-378.有序矩阵中第k小的元素、二分查找

热门文章

  1. 原DTCoreText学习(三)-自定义DTAttributedTextCell
  2. 1.6.jquerymobile--列表
  3. spring-aspectj的几个aop注解
  4. 连接Oracle时报错ORA-12541: TNS: 无监听程序
  5. NOIP模拟 6.26
  6. Alyona and copybooks
  7. [转]恢复 git reset -hard 的误操作
  8. java基础之 hashmap
  9. SpringBoot 入门知识点详解
  10. LTR学习排序 Learning to Rank 小结