Pytorch训练提示错误:“页面文件太小,无法完成操作”

在上周的一个Pytorch目标检测项目的训练过程中遇到了这个问题,经过排查,该提示所指“页面文件太小”是指系统虚拟内存所设置的页面大小过小,无法支持项目训练时所需内存。解决办法有两种:

1.降低Batch_Size大小:
过大的Batch_Size(人工智能术语:指一次迭代过程送入的数据集样本量)显然需要更多的内存支持,出现“页面文件太小”,可尝试降低Batch_Size大小。

2.调整虚拟内存可用硬盘空间大小:
虚拟内存的本质是在本地硬盘开辟一个空间用于存放哪些暂时不需要进行计算操作的内存数据,类似一个“挂起操作”。通常计算机操作系统(此处指Windows)默认的虚拟内存分配的大小不会太大,一般也就是2GB。那么我们可以通过更改设置来增加该分配空间的大小。

以下以Windows10操作系统为例,给出增加虚拟内存大小,以及如何将虚拟内存缓存文件更改至其他区分的方式。

(1).进入系统属性:
右键桌面 “此电脑” (其他版本的Windows可能是“我的电脑”),点击弹出面板左侧的 “高级系统设置”
图1 进入系统属性
(2).进入虚拟内存设置面板
在系统属性面板的性能部分点击设置,进入性能选项面板。点击性能选项面板的高级选项卡,接着点击虚拟内存部分的设置按钮, 进入虚拟内存设置面板。
图2 打开虚拟内存设置面板
(3).调整虚拟内存页面大小:
首选取消“自动管理所有驱动器的分页文件大小”该选项, 进入手动设置模式,然后点击C盘分区(一般虚拟内存页面文件默认是在C盘,后面会说如何更改到其它盘),并选择“自定义大小”,输入初始大小(推荐1024MB作为初始大小)和最大值。然后点击设置按钮,保存设置。
图3 更改虚拟内存页面大小
(4).更改虚拟缓存页面缓存文件至其它分区:
考虑到一般在配置计算机时,给C盘分区分配的硬盘空间比较小,所以如果将虚拟内存缓存文件设置在C盘,可能很容易造成整个C盘分区空间被占满,或者由于C盘空间比较小,我们也无法分配更大的虚拟页面大小。因此需要更改存放虚拟内存缓存文件的分区。

首先在C盘分区选择“无分页文件”, 并点击设置保存对C盘分区的虚拟缓存设置。接着点到其它分区,选择自定义大小,并参考(3)中所描述步骤进行设置。 推荐选择空间较大,且是固态硬盘的分区,这样可以保证能够设置更大的虚拟内存缓存大小以及更好的读取写入速度。
图4 更改虚拟缓存页文件存放分区

参考文章:
怎么将虚拟内存设置在其它盘符-百度经验
什么是"页面文件太小,无法完成操作",应该怎么办_百度知道

// 全文完

因笔者能力有限,若文章内容存在错误或不恰当之处,欢迎留言、私信批评指正。
Email:YePeanut[at]foxmail.com

### 如何在Python中打印数组 在 Python 中,可以通过多种方式打印数组。如果使用的是标准列表,则可以直接通过 `print()` 函数输出整个列表;如果是 NumPy 库中的数组,则同样适用此方法。 #### 使用标准列表打印数组 对于普通的 Python 列表,`print()` 可以直接输出整个列表的内容[^1]。 ```python arr = [10, 20, 30, 40, 50] print("标准列表:", arr) ``` #### 使用 NumPy 打印一维、二维和三维数组 当涉及更复杂的多维数组时,推荐使用 NumPy 库。NumPy 提供了强大的功能来处理高维度的数据结构,并且能够优雅地打印这些数组[^2]。 ##### 示例代码:创建并打印不同维度的数组 ```python import numpy as np # 创建一维数组 arr1 = np.array([1, 2, 3, 4, 5]) print("一维数组:") print(arr1) # 创建二维数组 arr2 = np.array([[1, 2, 3], [4, 5, 6]]) print("\n二维数组:") for row in arr2: print(row) # 创建三维数组 arr3 = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) print("\n三维数组:") for dim2 in arr3: for dim1 in dim2: print(dim1) ``` #### 遍历数组的同时打印索引与值 为了增强程序的功能性和可读性,在遍历时可以结合 `enumerate()` 函数一起使用,从而同时获取索引及其对应元素[^3]。 ##### 示例代码:使用 enumerate() 遍历并打印数组 ```python arr = ['apple', 'banana', 'cherry'] for index, value in enumerate(arr): print(f"Index {index}: Value is {value}") ``` #### 动态数组的打印 有时需要实现一个具有固定容量的基础动态数组类。在这种情况下,即使数组内部可能含有无效占位符(如 None),也可以仅打印有效部分[^4]。 ##### 示例代码:自定义动态数组的有效部分打印 ```python class DynamicArray: def __init__(self, capacity=10): self._data = [None] * capacity self._size = 0 def append(self, element): if self._size >= len(self._data): raise IndexError("超出数组容量") self._data[self._size] = element self._size += 1 def print_valid_elements(self): valid_elements = self._data[:self._size] print("Dynamic Array Valid Elements:", valid_elements) dynamic_arr = DynamicArray(5) dynamic_arr.append(100) dynamic_arr.append(200) dynamic_arr.print_valid_elements() ```
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值