TensorFlowとPythonでモデルをコンパイル・学習(fit)させる方法を徹底解説
TensorFlowとは
TensorFlowはGoogleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせて使用することで、さまざまなアルゴリズムやディープラーニングアプリケーションを実装できます。研究用途から本番環境での運用まで、幅広い場面で活用されています。
複雑な数学的演算を高速に処理するための最適化技術が組み込まれている点も大きな特徴です。
テンソルという基本データ構造
TensorFlowは内部でNumPyと多次元配列を使用しています。この多次元配列は「テンソル」と呼ばれ、TensorFlowにおける中心的なデータ構造です。テンソルはデータフローグラフ(Data Flow Graph)と呼ばれるフロー図の中で、ノード同士をつなぐエッジの役割を果たします。つまり、テンソルとは多次元配列あるいはリストそのものです。
TensorFlowの主な特徴
- ディープニューラルネットワークの構築・学習を強力にサポート
- 高いスケーラビリティを持ち、人気のデータセットが多数同梱されている
- GPU計算による高速化と、リソース管理の自動化
- 豊富な機械学習ライブラリと充実したドキュメント
このフレームワークを使えば、ディープニューラルネットワークモデルの実行や学習を行い、データセットの関連する特性を予測するアプリケーションを構築できます。
インストール方法
Windows環境では、以下のコマンド1行で「tensorflow」パッケージをインストールできます。
pip install tensorflow
Google Colaboratoryで実行
本記事のコードはGoogle Colaboratory上で実行しています。Google Colab(Colaboratory)はブラウザ上で直接Pythonコードを実行できるサービスで、面倒な環境設定が一切不要です。さらにGPU(グラフィックス処理ユニット)へ無料でアクセスでき、Jupyter Notebookをベースに構築されています。
サンプルコード
以下は、モデルを作成し、コンパイルして、データに適合(fit)させる一連の流れを示すコード例です。
print("vocab_size は実際には vocab_size+1。0 がパディングに使われるため")
int_model = create_model(vocab_size=VOCAB_SIZE + 1, num_labels=4)
print("モデルをコンパイルします")
int_model.compile(
loss=losses.SparseCategoricalCrossentropy(from_logits=True),
optimizer='adam',
metrics=['accuracy'])
print("モデルをデータに適合させます")
history = int_model.fit(int_train_ds, validation_data=int_val_ds, epochs=5)コード出典:https://www.tensorflow.org/tutorials/load_data/text
出力結果
vocab_size は実際には vocab_size+1。0 がパディングに使われるため モデルをコンパイルします モデルをデータに適合させます Epoch 1/5 188/188 [==============================] - 7s 37ms/step - loss: 1.3020 - accuracy: 0.3877 - val_loss: 0.8041 - val_accuracy: 0.6625 Epoch 2/5 188/188 [==============================] - 5s 25ms/step - loss: 0.7200 - accuracy: 0.7003 - val_loss: 0.5815 - val_accuracy: 0.7685 Epoch 3/5 188/188 [==============================] - 5s 25ms/step - loss: 0.4517 - accuracy: 0.8471 - val_loss: 0.5137 - val_accuracy: 0.8040 Epoch 4/5 188/188 [==============================] - 5s 25ms/step - loss: 0.2709 - accuracy: 0.9311 - val_loss: 0.5091 - val_accuracy: 0.8065 Epoch 5/5 188/188 [==============================] - 5s 25ms/step - loss: 0.1453 - accuracy: 0.9717 - val_loss: 0.5320 - val_accuracy: 0.8025
コードの解説
create_model メソッドを使用して、新しいモデルを作成します。ここでは語彙サイズに
VOCAB_SIZE + 1を指定しています。これは0番がパディング用に予約されているためです。compile メソッドでモデルをコンパイルします。損失関数には
SparseCategoricalCrossentropy、オプティマイザにはadam、評価指標にはaccuracyを指定しています。fit メソッドを呼び出すことで、コンパイル済みのモデルに訓練データを適合させます。検証データも同時に渡し、5エポックにわたって学習を実行しています。
出力結果を見ると、エポックが進むごとに訓練データに対する精度(accuracy)が向上している一方、検証データに対する精度(val_accuracy)は80%前後で安定しており、過学習の兆候も読み取れます。実際のプロジェクトでは、早期終了(Early Stopping)や正則化などの手法を組み合わせると効果的です。
-
PythonとKerasを使ってモデル全体を保存・再利用する方法を徹底解説
TensorFlowとKerasとはTensorFlowは、Googleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせて使用することで、各種アルゴリズムやディープラーニングアプリケーションの実装が可能になります。研究用途から本番環境まで幅広く活用されています。KerasはPythonで書かれたディープラーニングAPIです。高水準APIとして設計されており、生産性の高いインターフェースによって機械学習の問題を効率的に解決できます。TensorFlowフレームワーク上で動作し、素早い実験・試行を支援するために開発されました。高いスケーラビリティと
-
Kerasを使ってPythonでモデルをプロットする方法をわかりやすく解説
TensorFlowとはTensorFlowは、Googleが提供している機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせて使用することで、アルゴリズムの実装やディープラーニングアプリケーションの開発など、幅広い用途に活用できます。研究目的から本番環境での運用まで対応しており、複雑な数値計算を高速に実行するための最適化技術が数多く組み込まれています。TensorFlowにおける「テンソル(Tensor)」は、データを扱うための基本的なデータ構造です。テンソルは多次元配列(またはリスト)であり、データフローグラフと呼ばれる計算グラフのノード同士をエッジでつ