2017-05-07 7 views
0

MATLABネイティブフィードフォワードネットツールボックスのウエイトについてヒントンペーパーコードのRBM事前秤量を使用したいと考えています。 誰でもフィードフォワードネットの訓練前の体重を設定または調整する方法を教えていただけますか?例えばヒントン紙からのRBM事前秤量MATLABネイティブフィードフォワードネットツールボックスのウエイトコード

、私はhttp://www.cs.toronto.edu/~hinton/MatlabForSciencePaper.html

からヒントン・コードを使用し、MATLAB feedforwardnetの事前訓練された重みを使用します。

W=hintonRBMpretrained; 

net=feedforwardnet([700 300 200 30 200 300 700]); 

net.setwb(net,W); 

フィードフォワードネット構造と一致するようにWを設定または配置する方法はありますか?私は単一ベクトルを使用する方法を知っていますが、私は、順序や重みの順序が間違っていることを恐れています。

+0

ようこそ。この[how-to-ask](http://stackoverflow.com/help/how-to-ask)を読んでそこのガイドラインに従って、プログラミングを記述するコードやエラーメッセージなどの追加情報を使用して質問を洗練してください問題。 – thewaywewere

答えて

0

MATLAB feedforwardnet関数は、documentationに記述されているプロパティを持つニューラルネットワークオブジェクトを返します。事前に訓練された重みを持つニューラルネットワークを作成するためのワークフローは次のとおりです。

  1. ロードデータ
  2. は、ネットワーク
  3. は重みとバイアス
  4. 列車のネットワークを初期化し
  5. 設定をネットワークを作成します。

手順1,2,3、および5は、ゼロからニューラルネットワークを作成する場合とまったく同じです。簡単な例を見てみましょう。今

% 1. Load data 
load fisheriris 
meas = meas.'; 
species = species.'; 
targets = dummyvar(categorical(species)); 

% 2. Create network 
net = feedforwardnet([16, 16]); 

% 3. Configure the network 
configure(net, meas, targets) 

、我々はニューラルネットワークを持っている4つの入力(がく片と花弁の長さと幅)、および3つの出力(「setosa」、「カワラタケ」、および「virginicaの」がnet )。それぞれ16個のノードを持つ2つの隠れたレイヤーがあります。これは最初に混乱して

>> net.IW 
ans = 
    3×1 cell array 

    [16×4 double] 
    [] 
    [] 

>> net.LW 
ans = 
    3×3 cell array 

       []    [] [] 
    [16×16 double]    [] [] 
       [] [3×16 double] [] 

:重みは、IWワットエイトNPUT Iあり、LWL Ayerのワットエイトである二つのフィールドnet.IWnet.LWに格納されていますしかし、意味があります:これらの両方のセル配列の各行は、私たちが持っている層の一つに対応しています。

IWアレイでは、入力と各レイヤーの間にウェイトがあります。明らかに、入力と最初のレイヤーの間にはウェイトしかありません。この重み行列の形状は、4の入力と16の隠れた単位を持つので、16x4です。 LWアレイにおいて

、我々は、各層(列)(行)各層から重みを有します。我々の場合、第1層から第2層への重み行列は16x16、第2層から第3層への重み行列は3x16です。理にかなっていますよね?それと

、我々はRBMコードから持っている重みを初期化する方法を知っている:それと

net.IW{1,1} = weights_input; 
net.LW{2,1} = weights_hidden; 

を、あなたはすなわち、教師形式でネットワークを訓練、ステップ5に進むことができます。

+0

お返事ありがとうございます。しかし、問題は私が事前トレーニングから体重の順序を知らないということです。私は、体重が減少した指数にあるか、または体重の大きさがフィードフォワードネットの体重と同じである場合には、上下逆さまになっていることを恐れています。 –

+0

私がしたことは、順序を変えずに入力重みとして 'vishid'を設定することです。 –

関連する問題