- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
下面是一段代码(运行在Linux CentOS 7.7.1908, x86_64)
import torch #v1.3.0
import numpy as np #v1.14.3
import matplotlib.pyplot as plt
from astropy.io.fits import getdata #v3.0.2
data, hdr = getdata("afile.fits", 0, header=True) #gives dtype=float32 2d array
plt.imshow(data)
plt.show()
现在,我想将“数据”转换为 PyTorch 张量:
a = torch.from_numpy(data)
尽管如此,PyTorch 引发了:
ValueError: given numpy array has byte order different from the native byte order. Conversion between byte orders is currently not supported.
好吧,我尝试了不同的操作但没有成功:即。 byteswap(), 复制()
一个想法?
PS:当我将数据传输到 Mac OSX (Mojave) 而 matplotlib 仍然正常时,会出现同样的错误。
最佳答案
FITS 以 big-endian 字节顺序存储数据(在开发 FITS 时,这是一种更常见的机器架构;遗憾的是,该标准从未更新过以允许在这方面具有灵 active ,尽管它可以通过单个 header 轻松完成关键字来指示数据的字节序......)
根据Numpy docs Numpy 数组将底层数据的字节顺序报告为其 dtype 的一部分(例如,'>i' 的 dtype 表示 big-endian int,并且更改数组的 dtype 以反射(reflect)新的字节顺序。
调用 .astype(np.float32)
的解决方案应该可行,但那是因为 np.float32
dtype 是明确的小端,所以 。 astype(...)
复制现有数组并在必要时转换该数组中的数据以匹配该数据类型。我只是想确切地解释为什么这样做有效,因为您可能不清楚为什么要这样做。
至于 matplotlib 它与你的问题并没有太大关系。 Numpy 数组可以通过在必要时自动执行字节交换,透明地对与机器架构的字节顺序不匹配的数据执行操作。 Matplotlib 和许多其他科学 Python 库直接使用 Numpy 数组,因此自动受益于其透明的字节顺序处理。
恰好 PyTorch(部分原因是其非常高性能和以 GPU 为中心的数据处理模型)要求您将已经按小端顺序排列的数据交给它,也许只是为了避免歧义。但这是 PyTorch 特有的,并不是与 matplotlib 的具体对比。
关于python - 为什么 torch.from_numpy 需要不同的字节顺序而 matplotlib 不需要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59247385/
我试图深入了解 torch.from_numpy()作品。 import numpy as np import torch arr = np.zeros((3, 3), dtype=np.float3
下面是一段代码(运行在Linux CentOS 7.7.1908, x86_64) import torch #v1.3.0 import numpy as np #v1.14.3 impor
我正在尝试深入了解 PyTorch 张量内存模型的工作原理。 # input numpy array In [91]: arr = np.arange(10, dtype=float32).resha
在 CPU 上,是 torch.as_tensor(a)同torch.from_numpy(a)对于 numpy 数组,a ?如果没有,那为什么不呢? 来自 torch.as_tensor 的文档 i
我是一名优秀的程序员,十分优秀!