主要内容

ニュ,ラルネットワ,クの学習の速度とメモリの最適化

メモリ削減

特定のニュ,ラルネットワ,クによっては,シミュレ,ションと勾配の計算がmatlab®またはmexで実行される場合があります。墨西哥人の方がメモリ効率は高いですが,MATLABは時間と引き換えにメモリ効率を高めることができます。

Matlabまたはmexのどらを使用しているかを確認するには,“showResources”オプションを使用します。以下に,構文の一般的な形式を示します。

net2 = train(net1,x,t,'showResources','yes')

Matlabが使用されており,メモリ制限が問題である場合は,デ,タのN個のサブセットそれぞれに対して計算が順にN回実行される代わりに,Nの係数で必要な一時ストレ,ジの量を減らすことができます。

net2 = train(net1,x,t,'约简',N);

これは,メモリ削減と呼ばれます。

高速なElliotシグモド

シンプルな計算ハ,ドウェアには,指数関数を直接サポ,トしていないものがあります。このような場合,ソフトウェアの実装が遅くなる可能性があります。埃利奥特シグモ@ @ド関数elliotsigは,対称シグモtansigと同じ役割を果たしますが,指数関数を回避します。

以下はElliotシグモドのプロットです。

N = -10:0.01:10;A = elliotsig(n);情节(n)

图中包含一个轴对象。axis对象包含一个line类型的对象。

次に,elliotsigtansigと比較します。

A2 = tansig(n);H = plot(n,a,n,a2);传奇(h,“elliotsig”“tansig”“位置”“西北”

图中包含一个轴对象。axis对象包含2个line类型的对象。这些对象表示elliotsig, tansig。

tansigの代わりにelliotsigを使用してニューラルネットワークに学習させるには,ネットワークの伝達関数を以下のように変換します。

[x,t] = bodyfat_dataset;网络=前馈网络;视图(净)net.layers{1}。transferFcn = 'elliotsig';View (net) net = train(net,x,t);Y =净(x)

ここで,elliotsigtansigの実行回数を比較します。テストシステムでは,elliotsigが約4倍高速になっています。

N =兰特(5000,5000);抽搐,因为我= 1:10 0,a = tansig (n);end, tansigTime = toc;抽搐,因为我= 1:10 0,a = elliotsig (n);结束,elliotTime = toc;加速= tansigTime / elliotTime加速= 4.1406

ただし,elliotsigではシミュレーションが高速になるものの,2つの伝達関数の形状が異なるため,学習も高速であるという保証はありません。ここでは,10個のネットワ,クの学習をそれぞれtansigelliotsigに対して行っていますが,同じネットワークで同じ問題を実行した場合であっても学習時間が大きく変化しています。

[x,t] = bodyfat_dataset;tansigNet =前馈网;tansigNet.trainParam.showWindow = false;elliotNet = tansigNet;elliotNet.layers{1}。transferFcn = 'elliotsig';for i=1:10, tic, net = train(tsignnet,x,t);tansigTime = toc, end for i=1:10, tic, net = train(elliotNet,x,t), elliotTime = toc, end