Kerasディープラーニング-モデルの精度を向上させるためのディープニューラルネットワークの構築

一緒に書く習慣を身につけましょう!「ナゲッツデイリーニュープラン・4月アップデートチャレンジ」に参加して13日目です。クリックしてイベントの詳細をご覧ください

モデルの精度を向上させるためのディープニューラルネットワークの構築

前のモデルで使用したニューラルネットワークには、入力層と出力層の間に1つの隠れ層しかありませんでした。このセクションでは、ニューラルネットワーク(したがってディープニューラルネットワークという名前)で複数の隠れ層を使用して、モデルのパフォーマンスに対するネットワーク深度の影響を調べる方法を学習します。

深いニューラルネットワークは、入力層と出力層の間に複数の隠れ層があることを意味します。複数の隠れ層により、ニューラルネットワークは入力と出力の間の複雑な非線形関係を学習できます。これは単純なニューラルネットワークでは達成できない要件です。古典的なディープニューラルネットワークアーキテクチャは次のようになります。

古典的なディープニューラルネットワークアーキテクチャ

入力層と出力層の間に複数の隠れ層を追加して、深いニューラルネットワークアーキテクチャを構築する手順は次のとおりです。

  1. データセットをロードしてスケーリングします。
(x_train, y_train), (x_test, y_test) = mnist.load_data()

num_pixels = x_train.shape[1] * x_train.shape[2]
x_train = x_train.reshape(-1, num_pixels).astype('float32')
x_test = x_test.reshape(-1, num_pixels).astype('float32')
x_train = x_train / 255.
x_test = x_test / 255.

y_train = np_utils.to_categorical(y_train)
y_test = np_utils.to_categorical(y_test)
num_classes = y_test.shape[1]
复制代码
  1. 入力レイヤーと出力レイヤーの間に複数の非表示レイヤーを持つモデルを作成します。
model = Sequential()
model.add(Dense(512, input_dim=num_pixels, activation='relu'))
model.add(Dense(1024, activation='relu'))
model.add(Dense(64, activation='relu'))
model.add(Dense(num_classes, activation='softmax'))
复制代码

モデルアーキテクチャに関連するモデル情報は次のとおりです。

Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense (Dense)                (None, 512)               401920    
_________________________________________________________________
dense_1 (Dense)              (None, 1024)              525312    
_________________________________________________________________
dense_2 (Dense)              (None, 64)                65600     
_________________________________________________________________
dense_3 (Dense)              (None, 10)                650       
=================================================================
Total params: 993,482
Trainable params: 993,482
Non-trainable params: 0
_________________________________________________________________
复制代码

ディープニューラルネットワークアーキテクチャにはより多くの隠れ層があるため、モデルにはより多くのパラメーターもあります。

  1. モデルが構築されたら、モデルをコンパイルして適合させます。
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['acc'])

history = model.fit(x_train, y_train,
                    validation_data=(x_test, y_test),
                    epochs=50,
                    batch_size=64,
                    verbose=1)
复制代码

トレーニングされたモデルの精度は約98.9%です。データセットMNISTが。トレーニングとテストの損失と精度は次のとおりです。

損失と精度のトレーニングとテスト

上の図からわかるように、トレーニングデータセットの精度は、テストデータセットの精度よりも大幅に優れています。これは、ディープニューラルネットワークがトレーニングデータに過剰適合していることを示しています。後の研究では、トレーニングデータの過剰適合を回避する方法について学習します。

関連リンク

Kerasディープラーニング-生のニューラルネットワークのトレーニング

おすすめ

転載: juejin.im/post/7086640208199811103