2017-12-27 23 views
0

私はプロジェクトのためにKerasを使用していますが、私はKerasが入力されたデータをどのように使用するかを理解していない、それが第一の層を作成するときにKerasが私たちの入力データを読み込む方法と言うことです。例えばKerasはどのように入力データを読み込みますか?

  1. モデル=シーケンシャル()
  2. model.add(高密度(10、活性化= 'シグモイド'、input_dim = 3、名前= 'レイヤ1'))

このモデルでは、10個のニューロンと3次元の入力を持つことは何を意味しますか?入力データに100の例(行列データの行数)がある場合、Kerasはそれらをどのように使用しますか?

ありがとうございます。

答えて

0

input_dim=3は、あなたのデータは、最終的な結果などを決定するために使用される3機能を有することを意味します。どの動物のデータが参照されているかを判断したい場合は、データとして幅、高さ、色を設定できます。

さまざまな動物の幅、高さ、色の組み合わせにより、ニューラルネットワークはその幅、高さ、色がどのような動物を指しているかを学習することができます。 Kerasはニューロンのランダムウェイトから始まり、ネットワークウェイトを調整するために提供されたサンプルを使用して1回ずつ100回進みます。 Kerasは実際にバッチを使用しています。これは、学習率と一般的なパフォーマンスを向上させるために、100個のサンプルを小さなグループに分けて(メモリに一度に格納するデータを少なくする)ことを意味します。

10 neuronsは、ネットワークがニューロンの重みと入力データとの間で乗算結果を格納することができる10の場所である。あなたは、データがいくつかの有用なデータ機能を示すかどうかに応じて、少し明るくまたは暗く点灯する電球としてニューロンを想像することができます。動物が3メートル以上の高さであれば。各ニューロンには独自の重みのセットがあり、ネットワークがデータから次のサンプルを調べるときにわずかに変更されます。最後に、あなたのデータのさまざまな機能の存在に応じて多かれ少なかれ反応する10個のニューロン(電球)が必要です。動物が非常に背の高い場合。

より多くのニューロンがあなたが例えば追跡することができ、より可能な特徴を持っています。動物が背が高い、毛むくじゃらした、オレンジ色の、スポッティングされたものなどであるなら、あなたが持っているニューロンが多いほど、あなたのネットワークがあまりにも正確であり、トレーニングの例題あなたの訓練データに含まれていない動物サンプルを認識するのに役立ちます(一般化する能力と呼ばれ、実際にニューラルネットワークを訓練する最も重要なポイントです)。ニューロンの数を選択することは、あなたのニーズに合ったものを探す実践的なエクササイズです。

私はそれがあなたの疑問を明確に願っています。あなたがこの分野でもっと深く知りたいのであれば、機能、ニューロン、学習など、ニューラルネットワークのトレーニングプロセスを詳細に説明している多くのオンラインリソースがあります。

+0

ありがとう!今私ははるかに良く理解しています。ありがとう:D 私は別の質問があります。私たちがあなたの例を動物で使うならば。正しい値「幅」、「高さ」、「色」の3次元出力を得るにはどうすればよいですか?私はニューラルネットワークの値が0と1の間にあることを知っているので、私たちはそれらの値をどのように得ることができるのか理解していません。 – Jeremy

+0

@ジェレミー:あなたの値が幅/高さのような数字か、それともラベルかどうかによって異なります。名前で表される色。それらがラベルである場合は、最初に数値として表現する必要があります(赤の場合は0、緑の場合は1、または16進数の小数点表現に変換した場合のように正確です)。すべての入力が数字で表されるとき、あなたが探している用語は正規化です。正規化は数学的なプロセスで、数字の範囲を他の範囲に '翻訳'することができます。幅50〜250の範囲から範囲0〜1への範囲。 – StormoPL

1

input_dim=3は、それぞれ入力データが3次元であることを意味します。あなたの場合、100個の例を持つ入力データの形状は(100,3)でなければなりません。あなたのモデルをコンパイルするときに、サンプルの数は実際には関係ありません。しかし、各入力データの次元が、最初のDenseレイヤーで設定したinput_dimと一致するようにする必要があります。

短い例:

model = Sequential() 
model.add(Dense(10, input_dim=3, activation='sigmoid')) 
model.add(Dense(1, activation='sigmoid')) 
model.compile(loss='binary_crossentropy', optimizer='adamax') 

model.fit(xTrain, yTrain, epochs=50, batch_size=10) 
+0

ありがとうございました!それは私がより良く理解するのを助けました。 :) – Jeremy

関連する問題