Unable to allocate 37.5 MiB for an array with shape (8, 640, 640, 3) and data type float32

训练数据集的时候出现如下报错,3060 laptop的显卡、16g内存不应该不够他描述的这点大小吧,这是是什么回事呀qwq

Epoch 00617: LearningRateScheduler reducing learning rate to 0.0009801900625528459.
67/93 [====================>.........] - ETA: 8s - loss: 0.18782022-11-21 15:08:04.927003: W tensorflow/core/framework/op_kernel.cc:1751] Resource exhausted: MemoryError: Unable to allocate 37.5 MiB for an array with shape (8, 640, 640, 3) and data type float32
Traceback (most recent call last):

File "D:\Anaconda3\envs\tensorflow2-gpu\lib\site-packages\tensorflow\python\ops\script_ops.py", line 249, in call
ret = func(*args)

File "D:\Anaconda3\envs\tensorflow2-gpu\lib\site-packages\tensorflow\python\autograph\impl\api.py", line 620, in wrapper
return func(*args, **kwargs)

File "D:\Anaconda3\envs\tensorflow2-gpu\lib\site-packages\tensorflow\python\data\ops\dataset_ops.py", line 891, in generator_py_func
values = next(generator_state.get_iterator(iterator_id))

File "D:\Anaconda3\envs\tensorflow2-gpu\lib\site-packages\tensorflow\python\keras\engine\data_adapter.py", line 807, in wrapped_generator
for data in generator_fn():

File "D:\Anaconda3\envs\tensorflow2-gpu\lib\site-packages\tensorflow\python\keras\engine\data_adapter.py", line 933, in generator_fn
yield x[i]

File "D:\NWAFU\AAA\yolov5\yolov5-tf2-wang\yolov5-tf2-main\utils\dataloader.py", line 61, in getitem
image_data = np.array(image_data)

MemoryError: Unable to allocate 37.5 MiB for an array with shape (8, 640, 640, 3) and data type float32

这是用pycharm跑的吗,pycharm有内存上限,远小于电脑的内存上限。
如果是直接用命令行跑的,可以把batch size调小点 试试。

0.这个就是内存不足。你可以开启任务管理器看下你的内存占用是不是达到了90%以上?本来显存里面的数据都要经过内存的,相当于一个中转,外加python本身运行内存,系统占用内存等,16G不够是很正常的事情。外加内存碎片之类的,实际内存会比你看到的大一些。
1.workers这个参数设置小一些看下,或者设置为0;
2.batch-size小一些或者640改小。
3.不用IDE,使用命令行运行,可以省一部分IDE的软件内存。
4.虚拟内存看下设置到物理内存两倍看下。