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%に達しました。
-
TensorFlowを使ってMNISTデータセット用のモデルを定義する方法
TensorFlowは、Googleが提供している機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせて使用することで、各種アルゴリズムやディープラーニングアプリケーションの実装が可能になります。複雑な数値計算を高速に処理できる最適化技術を備えているのが特徴で、これは内部でNumPyと多次元配列を利用しているためです。この多次元配列は「テンソル(Tensor)」とも呼ばれます。また、深層ニューラルネットワークの構築もサポートしています。TensorFlowのインストールWindows環境に「tensorflow」パッケージをインストールするには、以下のコマン
-
TensorFlowとPythonで線形モデルをトレーニングする方法を解説
TensorFlowとは TensorFlowは、Googleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせて各種アルゴリズムやディープラーニングアプリケーションなどを実装できます。研究用途だけでなく、本番環境(プロダクション)でも幅広く利用されています。 TensorFlowのインストール方法 Windows環境では、以下のコマンドを実行するだけで「tensorflow」パッケージをインストールできます。 pip install tensorflow テンソル(Tensor)とは何か テンソルはTensorFlowにおける基本的なデータ