web-dev-qa-db-ja.com

Keras順次モデル入力層

Kerasでシーケンシャルモデルを作成するとき、最初のレイヤーに入力形状を指定すると理解しました。この入力形状はimplicit入力レイヤーを作成しますか?

たとえば、次のモデルは2つの高密度レイヤーを明示的に指定していますが、これは実際には、入力形状によって暗示される1つの入力レイヤー、32個のニューロンを持つ1つの非表示の高密度レイヤー、次に10個の可能な出力を持つ1つの出力レイヤーで構成される3つのレイヤーを持つモデルですか?

model = Sequential([
    Dense(32, input_shape=(784,)),
    Activation('relu'),
    Dense(10),
    Activation('softmax'),
])
11

まあ、それは実際is暗黙の入力層です。つまり、モデルは3つの層を持つ「古き良き」ニューラルネットの例です-入力、非表示、および出力。これは、Keras Functional API(ドキュメントの example を確認)でより明示的に表示され、モデルは次のように記述されます。

inputs = Input(shape=(784,))                 # input layer
x = Dense(32, activation='relu')(inputs)     # hidden layer
outputs = Dense(10, activation='softmax')(x) # output layer

model = Model(inputs, outputs)

実際、この暗黙の入力レイヤーが、シーケンシャルAPIのモデルの最初の(明示的な)レイヤーにのみinput_shape引数を含める必要がある理由です-後続のレイヤーでは、入力形状はの出力から推測されます以前のもの(core.pyのソースコードの comments を参照)。

documentationtf.contrib.keras.layers.Inputにあることもわかります。

15
desertnaut

Keras関数APIは実際に物事を明確にし、プログラミングの観点からより明示的です。

入力を単純に入力と呼ぶと、入力を暗黙的な入力層(通常、数学関数を含む層について考えるようになります)と呼ぶのは混乱しますか? (入力を受け取ることができるプログラミングモジュールまたは関数のように動作する後続のレイヤーに対して、これらの入力を別のモジュールと呼ぶことはなく、単に入力

次に、アクティベーション関数と重みを持つ2つの密な層は、正に層です。

ノードの概念はより明確になる傾向がありますが、レイヤーへの抽象化は私たちの心を曖昧にする傾向があります。

私はプログラミングをノードレベルで学び始めましたが、用語の変更によりレイヤーレベルでかなり混乱しました。

あなたの脳は、他の概念が組み込まれていると、類似したものが構造レベルで異なって命名されると混乱する傾向があります。

0
r poon