Keras-model-compilation
Keras-モデルのコンパイル
以前は、シーケンシャルAPIと機能APIを使用してモデルを作成する方法の基本を学びました。 この章では、モデルのコンパイル方法について説明します。 コンパイルは、モデル作成の最後のステップです。 コンパイルが完了したら、トレーニングフェーズに進むことができます。
コンパイルプロセスをよりよく理解するために必要ないくつかの概念を学びましょう。
Loss
機械学習では、 Loss 関数を使用して、学習プロセスのエラーまたは偏差を検出します。 Kerasはモデルのコンパイルプロセス中に損失関数を必要とします。
Kerasは losses モジュールでかなりの数の損失関数を提供し、それらは次のとおりです-
- mean_squared_error
- mean_absolute_error
- mean_absolute_percentage_error
- mean_squared_logarithmic_error
- squared_hinge
- ヒンジ
- categorical_hinge
- Logcosh
- huber_loss
- categorical_crossentropy
- sparse_categorical_crossentropy
- binary_crossentropy
- kullback_leibler_divergence
- ポアソン
- cosine_proximity
- is_categorical_crossentropy
上記のすべての損失関数は2つの引数を受け入れます-
- y_true -テンソルとしての真のラベル
- y_pred - y_true と同じ形状の予測
以下に指定されている損失関数を使用する前に損失モジュールをインポートします-
オプティマイザ
機械学習では、*最適化*は予測と損失関数を比較することによって入力重みを最適化する重要なプロセスです。 Kerasはかなりの数のオプティマイザをモジュール_optimizers_として提供しており、それらは次のとおりです。
以下に指定されているようにオプティマイザを使用する前にオプティマイザモジュールをインポートします-
測定基準
機械学習では、 Metrics を使用してモデルのパフォーマンスを評価します。 これは損失関数に似ていますが、トレーニングプロセスでは使用されません。 Kerasはかなりの数のメトリックをモジュールとして提供します metrics そしてそれらは以下の通りです
- 正確さ
- binary_accuracy
- categorical_accuracy
- sparse_categorical_accuracy
- top_k_categorical_accuracy
- sparse_top_k_categorical_accuracy
- cosine_proximity
- clone_metric
損失関数と同様に、メトリックは以下の2つの引数も受け入れます-
- y_true -テンソルとしての真のラベル
- y_pred - y_true と同じ形状の予測
以下で指定されているようにメトリックを使用する前にメトリックモジュールをインポートします-
モデルをコンパイルする
Kerasモデルは、モデルをコンパイルする* compile()*メソッドを提供します。 * compile()*メソッドの引数とデフォルト値は次のとおりです。
重要な引数は次のとおりです-
- 損失関数
- オプティマイザ
- 指標
モードをコンパイルするためのサンプルコードは次のとおりです-
どこで、
- 損失関数は mean_squared_error として設定されます
- オプティマイザは sgd として設定されます
- メトリックは metrics.categorical_accuracy として設定されます
モデルトレーニング
モデルは、 _ fit()_ を使用してNumPy配列によってトレーニングされます。 このフィット関数の主な目的は、トレーニングでモデルを評価するために使用されます。 これは、モデルのパフォーマンスをグラフ化するためにも使用できます。 次の構文があります-
ここに、
- X、y -データを評価するタプルです。
- エポック-トレーニング中にモデルを評価する必要がある回数はありません。
- batch_size -トレーニングインスタンス。
この概念を使用するために、単純なランダムデータの簡単な例を見てみましょう。
データを作成する
以下のコマンドの助けを借りて、xとyにnumpyを使用してランダムデータを作成しましょう-
次に、ランダムな検証データを作成し、
モデルを作成
単純な順次モデルを作成しましょう-
レイヤーを追加する
モデルを追加するレイヤーを作成します-
モデルをコンパイルする
これでモデルが定義されました。 以下のコマンドを使用してコンパイルできます-
fit()を適用する
次に、_fit()_関数を適用してデータをトレーニングします-
多層パーセプトロンANNを作成する
Kerasモデルを作成、コンパイル、トレーニングする方法を学びました。
私たちの学習を適用して、シンプルなMPLベースのANNを作成しましょう。
データセットモジュール
モデルを作成する前に、問題を選択し、必要なデータを収集して、データをNumPy配列に変換する必要があります。 データが収集されたら、モデルを準備し、収集したデータを使用してモデルをトレーニングできます。 データ収集は、機械学習の最も難しいフェーズの1つです。 Kerasは特別なモジュール、トレーニング用のオンライン機械学習データをダウンロードするためのデータセットを提供します。 オンラインサーバーからデータをフェッチし、データを処理して、トレーニングおよびテストセットとしてデータを返します。 Kerasデータセットモジュールによって提供されるデータを確認してみましょう。 モジュールで利用可能なデータは次のとおりです。
- CIFAR10の小さい画像の分類
- CIFAR100小さい画像の分類
- IMDB Movieは感情分類をレビューします
- ロイターニュースワイヤーのトピック分類
- 手書き数字のMNISTデータベース
- ファッション記事のFashion-MNISTデータベース
- ボストンの住宅価格回帰データセット
入力として MNIST手書き数字のデータベース (またはminst)を使用します。 minstは、60,000、28x28のグレースケールイメージのコレクションです。 10桁です。 また、10,000枚のテスト画像も含まれています。
以下のコードは、データセットをロードするために使用できます-
どこで
- 行1 *は、kerasデータセットモジュールから *minst をインポートします。
- * 3行目*は、 load_data 関数を呼び出します。この関数は、オンラインサーバーからデータをフェッチし、データを2つのタプルとして返します。最初のタプル、(x_train、y_train)*は、形状を持つトレーニングデータを表します(number_sample、28、 28)と形状を持つ数字ラベル(number_samples、)。 2番目のタプル(x_test、y_test)*は、同じ形状のテストデータを表します。
他のデータセットも同様のAPIを使用してフェッチでき、すべてのAPIはデータの形状を除いて同様のデータを返します。 データの形状は、データのタイプによって異なります。
モデルを作成する
以下に示すような単純な多層パーセプトロン(MLP)を選択して、Kerasを使用してモデルを作成してみましょう。
モデルのコア機能は次のとおりです-
- 入力レイヤーは784個の値で構成されます(28 x 28 = 784)。
- 最初の非表示層である Dense は、512個のニューロンと「relu」アクティベーション機能で構成されています。
- 2番目の非表示レイヤーである*ドロップアウト*の値は0.2です。
- 3番目の隠れ層、ここでもDenseは512のニューロンと「relu」アクティベーション機能で構成されています。
- 4番目の非表示レイヤーである*ドロップアウト*の値は0.2です。
- 5番目と最後の層は、10個のニューロンと「ソフトマックス」活性化関数で構成されています。
- categorical_crossentropy を損失関数として使用します。
- オプティマイザーとして* RMSprop()*を使用します。
- *精度*を指標として使用します。
- バッチサイズとして128を使用します。
- エポックとして20を使用します。
ステップ1-モジュールをインポートする
必要なモジュールをインポートしましょう。
ステップ2-データの読み込み
mnistデータセットをインポートしましょう。
ステップ3-データを処理する
モデルに合わせてデータセットを変更して、モデルにフィードできるようにします。
どこで
- reshape は、入力を(28、28)タプルから(784、)に再形成するために使用されます
- to_categorical は、ベクトルをバイナリ行列に変換するために使用されます
ステップ4-モデルを作成する
実際のモデルを作成してみましょう。
ステップ5-モデルをコンパイルする
選択した損失関数、オプティマイザー、およびメトリックを使用してモデルをコンパイルしてみましょう。
ステップ6-モデルのトレーニング
最終的な考え
モデルを作成し、データをロードして、モデルにデータをトレーニングしました。 モデルを評価し、未知の入力に対する出力を予測する必要があります。これについては、次の章で学習します。
アプリケーションを実行すると、出力として以下のコンテンツが表示されます-