2017-01-06 16 views
0

MATLABは、ニューラルネットワークツールボックスで1つ以上の伝達関数タイプを持つレイヤーを許可しません。だから、私は2つの隠れた層を作りたいと思っています。一つは双曲線正接伝達関数で、もう一つはrbfニューロンでです。MATLABで隠れ層ニューロンの出力値にアクセスする方法は?

しかし、出力レイヤーのために最初の隠れ層の出力を直接渡す必要があります。私は第2隠れ層の出力を変更することを考えているので、最初の隠れ層の出力と等しくなります。そのためには、隠れたレイヤーの出力値にアクセスする必要があります。 私はtraingd機能を開けていると私は私がしたいことは、このコードの一部であると思う:私が見つけ

for epoch=0:param.epochs 

    % Stopping Criteria 
    if isMainWorker 
     current_time = etime(clock,startTime); 
     [userStop,userCancel] = nntraintool('check'); 
     if userStop, tr.stop = 'User stop.'; calcNet = best.net; 
     elseif userCancel, tr.stop = 'User cancel.'; calcNet = original_net; 
     elseif (perf <= param.goal), tr.stop = 'Performance goal met.'; calcNet = best.net; 
     elseif (epoch == param.epochs), tr.stop = 'Maximum epoch reached.'; calcNet = best.net; 
     elseif (current_time >= param.time), tr.stop = 'Maximum time elapsed.'; calcNet = best.net; 
     elseif (gradient <= param.min_grad), tr.stop = 'Minimum gradient reached.'; calcNet = best.net; 
     elseif (val_fail >= param.max_fail), tr.stop = 'Validation stop.'; calcNet = best.net; 
     end 

     % Training record & feedback 
     tr = nntraining.tr_update(tr,[epoch current_time perf vperf tperf gradient val_fail]); 
     statusValues = [epoch,current_time,best.perf,gradient,val_fail]; 
     nn_train_feedback('update',archNet,rawData,calcLib,calcNet,tr,status,statusValues); 
     stop = ~isempty(tr.stop); 
    end 

    % Stop 
    if isParallel, stop = labBroadcast(mainWorkerInd,stop); end 
    if stop, return, end 

    % Gradient Descent 
    if isMainWorker 
     dWB = param.lr * gWB; 
     WB = WB + dWB; 
    end 

    calcNet = calcLib.setwb(calcNet,WB); 
    [perf,vperf,tperf,gWB,gradient] = calcLib.perfsGrad(calcNet); 

    % Validation 
    if isMainWorker 
     [best,tr,val_fail] = nntraining.validation(best,tr,val_fail,calcNet,perf,vperf,epoch); 
    end 
end 

偏見とシナプスが更新されますが、私はどこ見つけることができていませんでしたニューロンの出力の値が設定される。誰か助けてくれますか?

答えて

0

非表示のレイヤーを持たないカスタムネットワークを2つ作成すると、2つの異なる機能を使用して直接出力を見ることができます。マニュアルを参照してくださいhttps://www.mathworks.com/help/nnet/ug/create-and-train-custom-neural-network-architectures.html

また、重みとバイアスを使用して手動で計算することもできます。サイドノートでは

input_weights = cell2mat(net.iw) // getting the input weights bias = net.b{1} //choosing the bias of the first layer hidden_layer1 = tanh(input*input_weights+repmat(bias,1,input_size)) //the dot product of the input and input_weights will give some matrix, hence why the bias must be the same size

:私はどのように基本的なニューラルネットワークの仕事を理解する上で、このチュートリアルが役に立ったと評価 - https://iamtrask.github.io/2015/07/12/basic-python-network/

+0

感謝を!本当に私はそれをしていない。しかし、あなたの答えは役に立ちました。このドキュメントでは、どのレイヤが互いにどのように接続され、どのレイヤが入力と出力に接続されるかを説明しています。 –

関連する問題