修改matlab使用CPU或者GPU训练神经网络
在使用matlab训练神经网络时,有的时候要用CPU跑,有的时候需要GPU,那么怎么切换使用这两者呢,我之前遇到这个问题时找了一圈没有解答,最后自己找到了解决方案,现在分享给大家。
使用的三个函数
matlab里有两个函数:
(1)trainingOptions:这个是对神经网络的各个参数进行设置的函数,如我的设置如下所示:
options = trainingOptions('sgdm',...%rmsprop
'InitialLearnRate',initialLearningRate, ...
'L2Regularization',l2reg,...
'MaxEpochs',maxEpochs,...
'MiniBatchSize',minibatchSize,...
'LearnRateSchedule','piecewise',...
'Shuffle','every-epoch',...
'ValidationData',valDataSet,... % 验证数据集
'ValidationFrequency',50,... % 验证精度评估频率
'GradientThresholdMethod','l2norm',...
'GradientThreshold',0.05, ...
'Plots','training-progress', ...
'ExecutionEnvironment','cpu',...
'VerboseFrequency',20);
(2)trainNetwork:这个函数时在设置完参数后可以生成网络,默认使用GPU进行训练,如果电脑没有GPU则自动使用CPU训练,如果有GPU则直接使用GPU训练;
(3)predict:利用这个函数可以导入数据生成神经网络的结果,这个函数也是默认使用GPU,如果没有GPU则自动使用CPU,如果有GPU则不打招呼地使用GPU。
GPU修改为CPU
在使用过程中,我们可能不想用GPU训练,但是程序自动使用了GPU,这就需要我们将GPU修改为CPU,需要进行以下操作:
(1)在options = trainingOptions()函数中添加这样一行代码:
'ExecutionEnvironment','cpu',...
(2)在predict中添加这样的语句:
out1 = predict(net,pic1,'executionEnvironment','cpu');
至此,我们的程序就可以完全在CPU上训练啦。
CPU修改为GPU
一般来说不需要修改直接就在GPU上运行了,如果需要修改的话,把上面代码中的cpu都改为gpu就可以了。