2017-06-25 20 views
0

NNにとって全く新しいので、さまざまなゲームに属する6000個の画像をIRで集めて分類したいと考えています。次のリンクで紹介した手順を使用しましたが、各ラウンドで同じトレーニングの精度が得られます。 NNアーキテクチャに関するいくつかの情報:2つの伝達層、アクティベーション層、およびプール層。活性化タイプ:relu、第1層および第2層のフィルタ数は、それぞれ30および70である。 2つの完全に接続されたレイヤーにはそれぞれ500レイヤーと2つの隠れレイヤーがあります。 http://firsttimeprogrammer.blogspot.de/2016/07/image-recognition-in-r-using.htmlMXnetを使用した畳み込みニューラルネットワークのトレーニング精度を変更しない

+0

あなたはmx.set.seed(100)を使用する場合には、プロセスは決定論的になります。 –

+0

あなたのコードを共有してください –

+0

「各ラウンドで同じトレーニングの精度が得られますか?」とはどういう意味ですか?複数のエポックで訓練していますか?毎回ネットワークをリセットすると、同じ全体的な精度が得られます。あなたがモデルを訓練し続ければ、最初の数回のエポックでより良い結果を得ることができます。 – Guy

答えて

1

私は同様の問題を抱えていましたが、回帰がありました。いくつかのこと(異なるオプティマイザ、レイヤーとノードの変化、学習率、反復など)を試した後、初期値の与え方が大きく役立つことがわかりました。たとえば、私は分散0.2(initializer = mx.init.normal(0.2))の-random初期化子を使用しました。

この値はblogから発生しました。私はそれを読むことをお勧めします。 [編集]同じからの抜粋

重量の初期化。学習開始時の重みのランダム初期化について心配しています。 あなたが怠け者なら、通常は0.02 * randn(num_params)のようなことをするだけで十分です。このスケールの値は、多くの異なる問題よりも驚くほどうまく機能する傾向があります。もちろん、小さい(または大きい)値も試してみる価値があります。 それがうまくいかない場合(ニューラルネットワークのアーキテクチャーが異常で深い場合)、各重み行列をinit_scale/sqrt(layer_width)* randnで初期化する必要があります。この場合、init_scaleは0.1または1などに設定する必要があります。 ランダム初期化は、ディープおよびリカレントネットにとって非常に重要です。あなたがそれを正しくしなければ、ネットワークが全く何も学ばないように見えます。しかし、ニューラルネットワークは条件が設定されると学習します。 おもしろい話題:SGDは、深刻なニューラルネットワークをランダム初期設定から訓練することはできないと長年信じていました。彼らがそれを試すたびに、それはうまくいかないでしょう。恥ずかしいことに、彼らは初期化に「小さなランダムウェイト」を使用したため、成功しませんでした。これは浅いネットには効果的ですが、深いネットでは機能しません。ネットが深くなると、多くのウェイト行列がすべて互いに乗算されるため、準最適なスケールの効果が増幅されます。 しかし、ネットが浅い場合は、SGDが修正するための方法を見つけるだけなので、無作為な初期設定には注意を払う必要はありません。 これでお知らせします。あなたの初期設定について心配してください。多くの異なる種類の初期化を試してください。この努力は報われるでしょう。ネットがまったく動作しない場合(つまり、決して「地面から降りない」)、ランダム初期設定に圧力をかけ続けます。それは正しいことです。

http://yyue.blogspot.in/2015/01/a-brief-overview-of-deep-learning.html

+0

情報の完全な引用と概要をリンクに投稿できますか? – gung

+1

リクエストごとに追加されました。 :) – benchWarmer

関連する問題