我创建了一个包含非编码6通道图像的lmdb文件。当我将它加载到caffe中的网络中时,在加载网络后,系统RAM的使用情况(如使用' top'命令所示)最初约为10%,但它会继续增加,直到达到超过90%。我使用的是32 GB RAM的系统,它开始变慢,直到代码崩溃并出现以下错误:
terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc
请注意,即使在运行单个正向传递之前,也会发生这种情况。
我使用的lmdb文件的大小为545 MB。
我使用python netspec来定义网络。以下是代码:
net = caffe.NetSpec()
net.data0, net.label = CreateAnnotatedDataLayer(train_data,
batch_size=1,train=True, output_label=True,
label_map_file=label_map_file,
transform_param=train_transform_param, batch_sampler=batch_sampler)
net.data, net.data_d = L.Slice(net.data0, slice_param={'axis': 1}, ntop=2, name='data_slicer')
由于我的lmdb有6通道图像,预训练网络有3个通道,我使用切片层将图像分割成3通道图像,可以输入两个不同的卷积层。
任何建议都会有所帮助。