pytorch报错----------- ***ValueError: some of the strides of a given numpy array are negative.
最近遇到的一个pytorch报错:

然后报错了,这个几行代码就是从一个图片中读入数据,把bgr模式图片矩阵转换为rgb模式,这里采用的是改变矩阵索引,索引倒排 [..., ::-1] 。

看了这个报错有些懵,因为确实没想明白这么简单的操作都会报错。
后来查了查有些搞明白了,就是pytorch框架通过numpy的array对象生成tensor时要求传入的numpy的array对象是内存连续的。
如上述:
img = cv2.imread(r"timg.jpg") 得到一个内存连续的array 对象,但是
img = cv2.imread(r"timg.jpg")[...,::-1]
这时将得到的连续的array对象的最后一维索引倒排了,
这样的话倒排索引得到的array对象如果按照倒排后的索引来看就是内存不连续的,
这样传入pytorch中就会报错了。
这里的解决方法就是传入一个内存连续的array对象。
方法1.
import numpy as np
import torch
# 对彩色图片RGB 进行像素点的kmeans聚类
import cv2 img = cv2.imread(r"timg.jpg")[..., ::-1]
img2 = np.ascontiguousarray(img)
data = torch.from_numpy(img2).float() img[...]=0
print(img)
print(img2)

可以看到 调用
np.ascontiguousarray
我们得到的一个新的内存连续的array, 新旧array不共享内存。
方法2. 同理
import numpy as np
import torch
# 对彩色图片RGB 进行像素点的kmeans聚类
import cv2 img = cv2.imread(r"timg.jpg")[..., ::-1].copy()
data = torch.from_numpy(img).float()
直接对倒排索引的array对象进行 copy 操作,这样得到不共享内存的新的array对象, 新生成的array对象自然是内存连续的。
----------------------------------------------------------------------
为什么 pytorch 要求传入的numpy的array对象必须是内存连续的呢?
可以看:
https://blog.csdn.net/zz2230633069/article/details/93170271
https://zhuanlan.zhihu.com/p/59767914
https://www.cnblogs.com/peixu/articles/13455350.html
大致意思就是说内存连续的array或tensor对象在进行矩阵运算时速度更快。
-------------------------------------------------------------
参考:
https://blog.csdn.net/e01528/article/details/86067489
https://blog.csdn.net/qq_36891953/article/details/95482539
https://blog.csdn.net/u011622208/article/details/89707828
pytorch报错----------- ***ValueError: some of the strides of a given numpy array are negative.的更多相关文章
- pytorch报错:ValueError: Expected more than 1 value per channel when training, got input size torch.Size([1,512,1,1])
1.pytorch报错:ValueError: Expected more than 1 value per channel when training, got input size torch.S ...
- keras 报错 ValueError: Tensor conversion requested dtype int32 for Tensor with dtype float32: 'Tensor("embedding_1/random_uniform:0", shape=(5001, 128), dtype=float32)'
在服务器上训练并保存模型,复制到本地之后load_model()报错: ValueError: Tensor conversion requested dtype int32 for Tensor w ...
- matplotlib.pyplot import报错: ValueError: _getfullpathname: embedded null character in path
Environment: Windows 10, Anaconda 3.6 matplotlib 2.0 import matplotlib.pyplot 报错: ValueError: _getfu ...
- dbfread报错ValueError错误解决方法
问题 我在用dbfread处理.dbf数据的时候出现了报错 ValueError("could not convert string to float: b'.'",) 然后查找. ...
- Pytorch报错:cuda runtime error (59) : device-side assert triggered at /pytorch/aten/src/THC/generic/THCTensorMath.cu:26
Pytorch报错:cuda runtime error (59) : device-side assert triggered at /pytorch/aten/src/THC/generic/TH ...
- Anaconda 安装 pytorch报错解决方法
一.安装Pytorch: # -c 指定用pytorch镜像源下载软件conda install pytorch torchvision cpuonly -c pytorch 报错: 二.配置: ch ...
- moviepy音视频剪辑VideoClip类fl_image方法image_func报错ValueError: assignment destination is read-only解决办法
☞ ░ 前往老猿Python博文目录 ░ moviepy音视频剪辑模块的视频剪辑基类VideoClip的fl_image方法用于进行对剪辑帧数据进行变换. 调用语法:fl_image(self, im ...
- tensorflow-TFRecord报错ValueError: Protocol message Feature has no "feature" field.
编写代码用TFRecord数据结构存储数据集信息是报错:ValueError: Protocol message Feature has no "feature" field.或和 ...
- Pytorch 报错总结
目前在学习pytorch,自己写了一些例子,在这里记录下来一些报错及总结 1. RuntimeError: Expected object of type torch.FloatTensor but ...
- datetime.strptime格式转换报错ValueError
今天遇到一个报错:ValueError: time data '2018-10-10(Wednesday) AM0:50' does not match format '%Y-%m-%d(%A) %p ...
随机推荐
- 惠普 HP 战66 AMD 4700U 烫手 发烫,使用 Ryzen Controller 温控
由于战66只有单风扇,动不动就上80-90度. 下载:Ryzen Controller 并安装. Ryzen Controller Team / Ryzen Controller · GitLab 勾 ...
- 找不到 .NETFramework,Version=v5.0 的引用程序集。要解决此问题,请为此框架版本安装开发人员工具包(SDK/目标包)或者重新定向应用程序。
找不到 .NETFramework,Version=v5.0 的引用程序集.要解决此问题,请为此框架版本安装开发人员工具包(SDK/目标包)或者重新定向应用程序. visual studio 2019 ...
- ansible-role角色
官网文档 https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html 为什么要用role 之前你部署的n ...
- 如何使用JavaScript实现在线Excel附件的上传与下载?
前言 在本地使用Excel时,经常会有需要在Excel中添加一些附件文件的需求,例如在Excel中附带一些Word,CAD图等等.同样的,类比到Web端,现在很多人用的在线Excel是否也可以像本地一 ...
- 反模式 DI anti-patterns
反模式 DI anti-patterns 反模式DI anti-patterns <Dependency Injecttion Prinsciples,Practices, and Patter ...
- spring的问题-能耗、学习曲线
说实话,在过去将近20年中,spring对于it行业的帮助还是很大的,尤其是信息系统建设方面. 但在我看来,spring的发展也许进入了一个困局. 开始的时候,spring的确是一个还是算小巧的工具, ...
- 2020-2021 ICPC, NERC, Northern Eurasia Onsite BEIJ 题解
B. Button lock 题意:有 \(d\) 个 01 按键以及一个 reset 按键,你需要把所有题目给定的 \(n\) 个密码全部表示一遍.只有按下 reset 按键后才能使所有 01 按键 ...
- 颠覆传统编程,用ChatGPT十倍提升生产力
我们即将见证一个新的时代!这是最好的时代,也是最坏的时代! 需求背景 背景: 平时会编写博客,并且会把这个博客上传到github上,然后自己买一个域名挂到github上. 我平时编写的博客会有一些图片 ...
- Linux 网络编程的5种IO模型 总结
背景 在网络编程中,经常会用到一些模型,在这里做一下总结. 正文 Linux 网络编程的5种IO模型:阻塞IO与非阻塞IO 这是最简单的模型,一般配合多线程来实现. Linux 网络编程的5种IO模型 ...
- 使用flume将数据sink到HBase
===========>先创建Hbase表和列族<================案例1:源数据一行对应Hbase的一列存储(hbase-1.12没有问题)================ ...