Skip to main content

コードサンプルを使用したKerasレイヤーの入力に関する説明

Kerasレイヤーの引数に関連する一般的な質問(input shape, weight, units, dimなど)に対する簡単な回答をお届けします。 それでは、例を挙げて紹介します。
Created on April 20|Last edited on April 20
このレポートは、Ayush Thakurによる「Keras Layer Input Explanation With Code Samples」の翻訳です。



質問:input_shape, units, dimなどの違いを理解していますか?

Kerasレイヤー(レイヤークラス)の場合、|input_shape|, |units|, |dim|などの違いを理解する方法を説明できる方はいますか?
たとえば、ドキュメントには、|units|がKerasレイヤーのoutput shapeを指定すると書かれています。
下のニューラルネットの画像では、|hidden layer1|には4つのユニットがあります。 これは |Layer| オブジェクトの |units| 属性に直接変換されますか? または、Kerasの|units|は、hidden layerのすべてのウエイトのshapeにunits数を掛けた値に等しいのでしょうか?
下の画像を使用して、モデルの属性、特にレイヤーをどのように理解/視覚化するのでしょうか?



回答

Keras レイヤーのunits

Kerasレイヤーでは、unitsはニューラルネットワークアーキテクチャの各レイヤー内のニューロン数です。たとえば、次のようになります:
some_layer = tf.keras.layers.Dense(10, activation=None)
Units数は 10です。 したがって、10個のニューロンが存在します。
上の画像では、|hidden layer1|には 4 つのunitsがあり、|hidden layer2| には 4 つのunitsがあり、|output| レイヤーには 2 つのunitsがあります。

Kerasレイヤーのshape

Kerasレイヤーのshapeは配列またはテンソルが各次元に持つ要素の数を表すタプルです。
例: shape| (3, 4, 4) |のテンソルは 3 次元で、最初の次元には 3 つの要素があります。これら 3 つの要素にはそれぞれ 4 つの要素があり、これらの 4 つの要素のそれぞれには 4 つの要素があります。 したがって、合計|3*4*4 = 48|要素になります。

KerasレイヤーのInput Shape

Kerasレイヤーのinput shapeは、通常、トレーニング中にKerasモデルに提供される入力データの形状です。 モデルはトレーニングデータの形状を認識できません。他のテンソル(レイヤー)の形状は自動的に計算されます。
各タイプのKerasレイヤーには、特定の数の次元を持つinputが必要です。
  • Dense layersには、|(batch_size, input_size) |のような入力が必要です。
  • には、次のような入力が必要です:
    • channels_lastを使用している場合: |(batch_size, imageside1, imageside2, channels) |
    • channels_firstを使用している場合: |(batch_size, channels, imageside1, imageside2) |
  • 1D convolutionsとRecurrent layers |(batch_size, sequence_length, features)を使用|
  • 他のテンソルの形状は、|Conv2D レイヤー|で|kernel_size|などの他の特殊性と共に提供されるユニットの数に基づいて計算されます。

Kerasレイヤーのウエイト

Kerasレイヤーのウエイトは、学習済みの数学的操作によってinput shapeをoutput shapeに変換できる行列です。
ウエイトは、input shapeとoutput shapeに基づいて完全に自動的に計算されます。 繰り返し述べますが、各タイプのレイヤーは特定の方法で機能します。

KerasレイヤーのDim

一般に、dimとは、テンソルがKerasレイヤーで持つ次元の数を指します。 たとえば、shape |(32, 1024)| のテンソルには 2 つの次元があります。
私たちは通常、|(3,)|のような1つのdimテンソルを定義します。 したがって、この1 次元入力には 3 つの要素があります。

それでは、Kerasの問題セクションで画像を定義するとします。

もう一度先の問題セクションの画像を見て、Kerasで画像を定義しましょう。


Sequential APIの使用

from keras.models import Sequential
from keras.layers import *

model = Sequential()

model.add(Input(shape=(3,))) # Input tensor
model.add(Dense(units=4)) # hidden layer 1
model.add(Dense(units=4)) #hidden layer 2
model.add(Dense(units=1)) #output layer

Functional API の使用

from keras.models import Model
from keras.layers import *


inputs = Input(shape=(3,)) # input tensor
hidden1 = Dense(units=4)(inputs) # hidden layer 1
hidden2 = Dense(units=4)(hidden1) # hidden layer 2
outputs = Dense(units=1)(hidden2) # hidden layer 1

#define the model's start and end points
model = Model(inputs, outputs)
各レイヤーのモデルの要約とoutputシェイプを見てみましょう

図1:モデルの要約
この回答は、このスタックオーバーフロースレッドからヒントを得ました。
Iterate on AI agents and models faster. Try Weights & Biases today.