使用transforms.Normalize((0.5,), (0.5,))异常报错“Process finished with exit code -1073741676 (0xC0000094)”
目录
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)”相关推荐
- Python 编写代码出现 process finished with exit code 0
在Pycharm中编写Python语句,程序都没有问题 就是没有执行的结果,有时候会出现: process finished with exit code 0状况 这个是因为格式不正确造成的:请看图 ...
- 0716 process finished with exit code 0 解决
写完代码之后想要debug 看看是否可以运行成功过程中,出现了Process finished with exit code 0 意思是程序运行成功并且退出 exit code 0 表示程序执行成功, ...
- SpringBoot启动代表出现Process finished with exit code 0
代码都没问题,启动时应用无缘无故就是会出现Process finished with exit code 0,这个是什么意思呢,是应用程序正常退出的意思. 可以科普一下exit code: exit ...
- 【问题解决】springboot启动后一小会就自动停止,提示Process finished with exit code 0
最近springboot启动后一小会就自动停止,没提示具体报错,只有提示: Disconnected from the target VM, address: '127.0.0.1:60011', t ...
- SpringBoot启动时:Process finished with exit code 0解决办法
Process finished with exit code 0并不是报错了,这个表示程序正常执行完毕退出了.这就表示项目启动成功后了,此时运行,最后运行完毕自动退出.但我们是需要访问路径的,所以需 ...
- Pycharm 错误代码 Process finished with exit code 0
错误代码:Process finished with exit code 0 1.问题描述 PyCharm正常运行,但没有得到预期的效果 2.解决办法 看运行的py文件是否有主函数,或者同一个工程文件 ...
- python中出现Process finished with exit code 0的处理办法
python爬虫时 出现以上语句通常情况下需要检查以下几个地方: 1.if __name__ == "__main__"语句中的"__mian__"中下划线必须 ...
- Process finished with exit code 0
Process finished with exit code 0 点击程序正常退出 Process finished with exit code -1 强行终止app Process finish ...
- 记一次Process finished with exit code 1 项目异常
一.环境 自己是nacos注册的微服务项目,而且所有代码都是经过测试进行git提交. 今天将代码clone下来进行新手教程文档的编写 但是自己怎么都跑不起来,就很无语,如果不是怀揣着自己对测试代码的信 ...
最新文章
- 基于Java的疫情防控管理系统
- foolscap实现rpc(四)
- 容量和速度是选购闪存盘的关键
- 5年後、10年後の自分のイメージ
- java 静态方法中为什么不可以使用关键字this _super_Java static方法里为什么不能使用this关键字,和Super...
- 闲谈网络运维管理的那些事儿(之三)
- 高考地理背熟这些知识可以拿80%的分数(1)
- C++primer拾遗(第八章:IO库)
- Java GregorianCalendar hashCode()方法与示例
- 【软件工程】容错、高可用、灾备の辨析
- MYSQL常用操作速查
- 浅谈SEO翻倍提升网站流量
- php normalize,normalize函数怎么使用
- 面试mysql索引底层_面试必备之MYSQL索引底层原理分析
- C++记录程序运行时间5大方法
- EFR32晶体校准指南
- opencv c++ Harris角点检测、shi-tomasi角点
- java将表情字符串转表情符号_使用java将字符串中的表情符号替换为字符串
- [ACW]826.单链表
- LeetCode-378.有序矩阵中第k小的元素、二分查找