1、在训练数据集时出现CUDA Error: out of memory darknet: ./src/cuda.c:36: check_error: Assertion `0‘ failed.
方法一:
修改yolov3-voc.cfg
把subdivisions=8改成subdivisions=16,64,最好都是2的指数,并且要保证batch是subdivisions的整数倍。
batch size(批量大小)和 subdivisions(子分区)
Batch Size(批量大小):批量大小是指在每次模型训练中同时处理的输入样本数量。较大的批量大小通常可以提高训练效率,因为可以并行处理更多的样本。但是,较大的批量大小也会占用更多的内存,并可能导致训练过程中内存不足的问题。
Subdivisions(子分区):子分区是将每个批量进一步划分为更小的部分进行处理的方式。通过使用子分区,可以减少 GPU 内存的需求,特别是当批量大小较大时。子分区数定义了将一个批量划分成多少个子分区。
方法二:修改尾行 random 值 (默认值为1),此处修改为 :random=0 (注:yolov3共有三处)
方法三:
(1)用free命令查看是否是系统内存不足导致的
total
:物理内存总量used
:已使用的物理内存量free
:空闲的物理内存量shared
:多个进程共享的内存量buff/cache
:用于缓存和缓冲的内存量available
:可用的内存量(不包括缓存和缓冲)
(2)再用ps命令查看当前正在运行的进程信息
(3)用kill命令来终止进程
#1、终止进程
kill <进程ID>
#2、强制终止进程
kill -9 <进程ID>