Python
 Computer >> コンピューター >  >> プログラミング >> Python

TensorFlowでCNNモデルをコンパイル・学習する方法をわかりやすく解説

畳み込みニューラルネットワーク(CNN)は、compile メソッドでモデルをコンパイルし、fit メソッドで学習(トレーニング)を行います。
エポック数は fit メソッドの引数として指定します。

Keras Sequential APIとは

本記事では、KerasのSequential APIを使用します。Sequential APIは、層を順番に積み重ねたシーケンシャルなモデルを構築するのに適しており、各層がちょうど1つの入力テンソルと1つの出力テンソルを持つ、シンプルな層スタック構成のモデルを作成できます。

少なくとも1つの畳み込み層を含むニューラルネットワークは、畳み込みニューラルネットワーク(CNN)と呼ばれます。CNNは、画像認識など特定の種類の問題において優れた成果を上げてきた実績があります。

Google Colaboratoryについて

本記事のコードはGoogle Colaboratory(Google Colab)で実行しています。Colabはブラウザ上でPythonコードを実行できる環境で、面倒な設定は一切不要です。さらに、GPU(グラフィックス処理装置)へ無料でアクセスできる点も大きな魅力です。ColaboratoryはJupyter Notebookをベースに構築されています。

モデルのコンパイルと学習のコード例

print("Compiling the model")
model.compile(optimizer='adam',loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
    metrics=['accuracy'])
print("Training the model to fit the data")
history = model.fit(train_images, train_labels, epochs=10,validation_data=(test_images, test_labels))

コード出典:https://www.tensorflow.org/tutorials/images/cnn

実行結果

Compiling the model
Training the model to fit the data
Epoch 1/10
1563/1563 [==============================] - 70s 44ms/step - loss: 1.7408 - accuracy: 0.3557 - val_loss: 1.2260 - val_accuracy: 0.5509
Epoch 2/10
1563/1563 [==============================] - 67s 43ms/step - loss: 1.1928 - accuracy: 0.5751 - val_loss: 1.0800 - val_accuracy: 0.6159
Epoch 3/10
1563/1563 [==============================] - 68s 43ms/step - loss: 1.0330 - accuracy: 0.6396 - val_loss: 0.9791 - val_accuracy: 0.6562
Epoch 4/10
1563/1563 [==============================] - 66s 43ms/step - loss: 0.9197 - accuracy: 0.6782 - val_loss: 0.9488 - val_accuracy: 0.6677
Epoch 5/10
1563/1563 [==============================] - 65s 42ms/step - loss: 0.8388 - accuracy: 0.7043 - val_loss: 0.9090 - val_accuracy: 0.6851
Epoch 6/10
1563/1563 [==============================] - 66s 42ms/step - loss: 0.7755 - accuracy: 0.7279 - val_loss: 0.8694 - val_accuracy: 0.6944
Epoch 7/10
1563/1563 [==============================] - 66s 42ms/step - loss: 0.7107 - accuracy: 0.7494 - val_loss: 0.9152 - val_accuracy: 0.6929
Epoch 8/10
1563/1563 [==============================] - 65s 42ms/step - loss: 0.6674 - accuracy: 0.7649 - val_loss: 0.8613 - val_accuracy: 0.7045
Epoch 9/10
1563/1563 [==============================] - 66s 42ms/step - loss: 0.6288 - accuracy: 0.7771 - val_loss: 0.8788 - val_accuracy: 0.7026
Epoch 10/10
1563/1563 [==============================] - 66s 42ms/step - loss: 0.5913 - accuracy: 0.7953 - val_loss: 0.8884 - val_accuracy: 0.7053

コードの解説

  • compileメソッド:まずモデルをコンパイルします。ここでは最適化アルゴリズムに「adam」を指定し、損失関数にはSparseCategoricalCrossentropy、評価指標としてaccuracy(正解率)を設定しています。
  • fitメソッド:次に、訓練データにモデルを適合させるための学習を行います。train_images(訓練画像)とtrain_labels(訓練ラベル)を渡し、検証用データとしてtest_imagesとtest_labelsも指定しています。
  • エポック数:epochs=10 と設定されているため、学習は全データに対して10回繰り返されます。
  • 学習結果:エポックが進むごとに損失(loss)が減少し、正解率(accuracy)が向上していることが確認できます。最終的な検証データの正解率は約70%に達しました。
  1. TensorFlowを使ってMNISTデータセット用のモデルを定義する方法

    TensorFlowは、Googleが提供している機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせて使用することで、各種アルゴリズムやディープラーニングアプリケーションの実装が可能になります。複雑な数値計算を高速に処理できる最適化技術を備えているのが特徴で、これは内部でNumPyと多次元配列を利用しているためです。この多次元配列は「テンソル(Tensor)」とも呼ばれます。また、深層ニューラルネットワークの構築もサポートしています。TensorFlowのインストールWindows環境に「tensorflow」パッケージをインストールするには、以下のコマン

  2. TensorFlowとPythonで線形モデルをトレーニングする方法を解説

    TensorFlowとは TensorFlowは、Googleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせて各種アルゴリズムやディープラーニングアプリケーションなどを実装できます。研究用途だけでなく、本番環境(プロダクション)でも幅広く利用されています。 TensorFlowのインストール方法 Windows環境では、以下のコマンドを実行するだけで「tensorflow」パッケージをインストールできます。 pip install tensorflow テンソル(Tensor)とは何か テンソルはTensorFlowにおける基本的なデータ