2016-03-05 57 views
0

我有一個多類分類任務,我試圖在Matlab中使用'trainSoftmaxLayer',但它是一個CPU實現版本,速度很慢。所以我嘗試閱讀一個GPU選項的文檔,比如傳統神經網絡中的'trainSoftmaxLayer('useGPU','yes')',但是沒有任何相關的選項。MATLAB中有GPU實現多類分類函數嗎?

回答

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