问题标签 [numpy-memmap]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - SimpleITK 读取图像切片
祝大家有美好的一天。
我的 HDD (9.7 Gb) 上碰巧有一个非常大的 .mha 文件,它是大脑的 3D 图像。我知道这张图片的形状,并且出于报告的需要,我想提取它的一部分,以获得可以保存为 .png 的 2D 图像。
问题是我的 16 Gb RAM 计算机不允许我加载完整的图像,因此我想知道是否有一种方法可以提取该图像的 2D 切片而不将整个图像加载到 RAM 中。对于较小的图像,我使用sitk.GetArrayFromImage(sitk.ReadImage(fileName))
并输入它,pyplot.imshow()
但这意味着加载我想要避免的整个图像。
我想了一段时间来numpy.memmap
创建一个临时.npy
文件,我可以在其中存储整个数组,然后获取它的一部分,但是我无法使用sitk.GetArrayFromImage(sitk.ReadImage(fileName))
.
有谁知道如何做到这一点?
提前致谢 !
python - 如何在 keras 生成器中使用 numpy memmap 不超过 RAM 内存?
我正在尝试在生成器中实现 numpy.memmap 方法,以使用 keras 训练神经网络,以免超过内存 RAM 限制。我将这篇文章用作参考,但没有成功。这是我的尝试:
尽管如此,它仍然将块保存在 RAM 内存中,因此在一些时期后它会超过其限制。
谢谢
deep-learning - 比较深度学习中数据加载方法的效率
我需要加载时间序列数据集来训练网络。当我从原始数据中提取这些文件时,由于内存问题,数据集被分成许多块train_x_0.npy
, train_x_1.npy
, ..., train_x_40.npy
(41 块) 。.npy
但是,它们的大小太大(大约 1000 GB),我无法将所有内容加载到 RAM 中。我一直在考虑两种方法来解决这个问题。
np.load()
使用with 参数加载数据块mmap_mode='r+'
。内存映射的块存储在 Python list 中self.data
。在__getitem__(self, idx)
PytorchDataset
类的方法中,我转换idx
为chunk_idx
andsample_idx
,然后通过self.data[chunk_idx][sample_idx]
.- 从原始数据中再次提取
.npy
文件,并逐个样本保存数据,即一个.npy
文件现在是一个样本,而不是一个数据块。在该__getitem__(self, idx)
方法中,我将通过使用np.load(sample_path)
.
假设 PytorchDataLoader
将用于遍历所有样本,那么哪种方法会更快?
如果您对提取原始数据或加载.npy
文件有其他建议,请分享您的意见。
python - 有没有办法知道 numpy.memmap 当前使用了多少内存?
我想调查一个使用 numpy.memmap 从大文件访问数据的 python 程序的内存使用情况。有没有办法检查内存映射当前使用的内存大小?我在 numpy 对象和对象的 _mmap 属性上尝试了 sys.getsizeof,但是无论使用了多少 memmap 对象,两者都给出了相同的非常小的大小。
numpy - 这个numpy memmap create / save / load有什么问题,它似乎没有保存
我首先创建一个 memmap,加载一些随机数,然后将其删除以将其保存到文件中:
然后当我再次加载它时,我只得到零:
出于某种原因,它不保存随机数?我正在使用谷歌 Colab。
python - Numpy 内存映射加载不拥有数据
假设我创建了一个数组,保存并加载它:
为什么作为内存映射加载会失去数据的所有权?我想就地调整大小,但由于所有权,这是不可能的。
python - 加载大型 numpy 数组的开销
我的问题很简单;我找不到可以回答它的资源。有点类似的链接使用 asarray,一般来说,这里是最简洁的一个。
如何“计算”将 numpy 数组加载到 RAM 中的开销(如果有任何开销)?或者,如何确定将所有数组保存在内存中所需的最少 RAM 量(无需耗时的反复试验)?
简而言之,我有几个 shape 的 numpy 数组(x, 1323000, 1)
,其中 x 高达6000
. 这导致最大文件的磁盘使用量为 30GB。
所有文件一起需要50
GB。因此,如果我使用略多于50
GB 的 RAM(使用 Kubernetes)就足够了吗?我想尽可能高效地使用 RAM,所以100
不能只使用 GB。
python - 如何使用带有 memmap 的存储 ndarray 的 ndarray 作为一个大的 ndarray 张量
我最近开始使用 numpy memmap 在我的项目中链接一个数组,因为我有一个 3 维张量,用于作为示例的数据集图的总共 1330 亿个值。
我正在尝试计算 5748 个节点图(DD 数据集的第 21 个)的热核签名。我计算投影仪的代码(我使用 memmap 的地方)是:
在所有的X_hks.npy
里面都有一个 n ndarray(来自示例 5748 * 5748)。
然后我希望所有这些计算数组形成 3 维张量,所以我以这种方式“链接”(我不知道这是否是正确的术语)它们:
P
稍后仅用于循环内部H = np.einsum('ijk,i->jk', P, np.exp(-unique_eval * t))
。
但是,这会引发错误:ValueError: einstein sum subscripts string contains too many subscripts for operand 0
. 由于该方法对于不需要 memmap 的较小图形是正确的,所以我的想法是 P 对于 numpy 的结构不好,我必须安排数据,也许要进行整形。所以我试着做 aP.reshape(len(L), n, n)
但它不起作用 give ValueError: cannot reshape array of size 4043 into shape (4043,5748,5748)
。我怎样才能让它工作?
我已经找到了这个问题,但它不适合这种情况。我认为我不能将所有内容存储在一个大对象中,因为它包含 497GB 的 memmap 文件(每个 126MB)。如果我能做到,请告诉我。
如果不可能做到这一点,我会减少用例,但是我很感兴趣让它适用于所有可能性。
python - ndarray 是否有一个 mmap 的缓冲区?
如何判断 ndarray 是否有一个 mmap 的缓冲区?我想区分x
和y
。
python - 为什么我在将 hdr 文件加载到 memmap 时收到错误消息
以下代码是脚本中的有效部分:
但是,它给了我以下错误:
用 'r+' 替换模式不是一个有效的选项,因为它会创建一个空白文件,这会导致以后出现问题。