[[422501]] 多層パーセプトロン(MLP)は非常に長い歴史を持っています。多層パーセプトロン(MLP)はディープニューラルネットワーク(DNN)の基本アルゴリズムです。 MLPの基礎 - 目的: 単純な回帰/分類タスク用の通常のニューラル ネットワーク (多層パーセプトロンなど) と Keras を作成する
MLP構造- 各MLPモデルは、入力層、複数の隠れ層、および出力層で構成されています。
- 各層のニューロンの数は無制限である
1つの隠れ層を持つMLP - 入力ニューロンの数: 3 - 隠しニューロンの数: 4 - 出力ニューロンの数: 2 回帰タスクのためのMLP- ターゲット(「y」)が連続している場合
- 損失関数と評価指標には、通常、平均二乗誤差 (MSE) が使用されます。
- tensorflow.keras.datasetsからboston_housing をインポートします
- (X_train、y_train)、(X_test、y_test) = boston_housing.load_data()
データセットの説明- ボストン住宅データセットには合計506のデータインスタンス(トレーニング用404、テスト用102)があります。
- 13 の属性 (特徴) が「特定の場所の住宅の中央値」を予測します
- ファイル番号: https://keras.io/datasets/
1. モデルを作成する- KerasモデルオブジェクトはSequentialクラスを使用して作成できます。
- 最初は、モデル自体は空です。これは、追加のレイヤーを「追加」してコンパイルすることによって行われます。
- ドキュメント: https://keras.io/models/sequential/
- tensorflow.keras.modelsからSequential をインポートします
-
- モデル = シーケンシャル()
1-1. レイヤーの追加- Kerasレイヤーをモデルに「追加」することができます
- レイヤーを追加することは、レゴブロックを積み重ねるようなものである
- ドキュメント: https://keras.io/layers/core/
- tensorflow.keras.layersからActivation、Dense をインポートします
- #それぞれ 10 個のニューロンを持つ2 つの隠れ層を持つKeras モデル
- model. add (Dense(10, input_shape = (13,))) # 入力層 => input_shape は明示的に指定する必要があります
- model.add(アクティベーション( 'シグモイド' ))
- model.add (Dense(10)) # 隠し層 =>のみ 出力ディメンションを指定する必要があります
- model.add(アクティベーション( 'シグモイド' ))
- model.add (Dense(10)) # 隠し層 =>のみ 出力ディメンションを指定する必要があります
- model.add(アクティベーション( 'シグモイド' ))
- model.add (Dense(1)) #出力層 =>出力次元= 1回帰問題なので
- # これは上記のコードブロックと同等です
- モデルを追加します(Dense(10, input_shape = (13,), activation = 'sigmoid' ))
- モデルを追加します(Dense(10, activation = 'sigmoid' ))
- モデルを追加します(Dense(10, activation = 'sigmoid' ))
- モデル.add (密(1))
1-2. モデルのコンパイル- Kerasモデルはトレーニング前に「コンパイル」する必要があります
- 損失タイプ(関数)とオプティマイザを指定する必要があります
- ドキュメント(オプティマイザー): https://keras.io/optimizers/
- ドキュメント(損失): https://keras.io/losses/
- tensorflow.kerasからオプティマイザーをインポートする
-
- sgd = optimizers.SGD(lr = 0.01) # 確率的勾配降下法オプティマイザー
-
- model.compile(optimizer = sgd, loss = 'mean_squared_error' , metrics = [ 'mse' ]) #回帰問題では、平均二乗誤差(MSE)がよく使用されます
モデルの概要- モデル.要約()
- odel: 「シーケンシャル」
- _________________________________________________________________
- レイヤー(タイプ)出力形状パラメータ#
- =================================================================
- 密集(密集)(なし、10)140
- _________________________________________________________________
- アクティベーション(アクティベーション)(なし、10)0
- _________________________________________________________________
- 密_1 (密) (なし、10) 110
- _________________________________________________________________
- activation_1 (アクティベーション) (なし、10) 0
- _________________________________________________________________
- 密_2 (密) (なし、10) 110
- _________________________________________________________________
- activation_2 (アクティベーション) (なし、10) 0
- _________________________________________________________________
- 密_3 (密) (なし、1) 11
- _________________________________________________________________
- 密_4 (密) (なし、10) 20
- _________________________________________________________________
- 密_5 (密) (なし、10) 110
- _________________________________________________________________
- 密_6 (密) (なし、10) 110
- _________________________________________________________________
- 密_7 (密) (なし、1) 11
- =================================================================
- 合計パラメータ: 622
- トレーニング可能なパラメータ: 622
- トレーニング不可能なパラメータ: 0
- _________________________________________________________________
2. トレーニング- 提供されたトレーニングデータを使用してモデルをトレーニングする
- model.fit(X_train、y_train、バッチサイズ = 50、エポック = 100、詳細 = 1)
3. 評価- Kerasモデルはevaluate()関数を使って評価できる。
- 評価結果はリストに含まれる
- ドキュメント: https://keras.io/metrics/
- 結果 = model.evaluate(X_test, y_test)
- print(model.metrics_names) #モデルが使用しているメトリック名のリスト
- print(results) #計算されたメトリックの実際の数値
- print( '損失: ' , 結果[0])
- print( 'mse:' , 結果[1])
|