0

我有一个多类分类任务,我曾尝试在 Matlab 中使用“trainSoftmaxLayer”,但它是 CPU 实现版本,速度很慢。因此,我尝试阅读 GPU 选项的文档,例如传统神经网络中的 'trainSoftmaxLayer('useGPU', 'yes')',但没有任何相关选项。

4

1 回答 1

0

最后,通过破解 MATLAB 提供的 trainSoftmaxLayer.m 的源代码解决了这个问题。我们可以像这样编写自己的启用 GPU 的 softmax 层:

function [net] = trainClassifier(x, t, use_gpu, showWindow)
net = network;

% define topology
net.numInputs = 1;
net.numLayers = 1;
net.biasConnect = 1;
net.inputConnect(1, 1) = 1;
net.outputConnect = 1;

% set values for labels
net.name = 'Softmax Classifier with GPU Option';
net.layers{1}.name = 'Softmax Layer';

% define transfer function
net.layers{1}.transferFcn = 'softmax';

% set parameters
net.performFcn = 'crossentropy';
net.trainFcn = 'trainscg';
net.trainParam.epochs = 1000;
net.trainParam.showWindow = showWindow;
net.divideFcn = 'dividetrain';

if use_gpu == 1
    net = train(net, x, full(t), 'useGPU', 'yes');
else
    net = train(net, x, full(t));
end

end
于 2016-05-31T12:12:02.130 回答