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

TensorFlowとPythonを使ってStack Overflowの質問データセットでモデルをトレーニングする方法

TensorFlowはGoogleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせてアルゴリズムやディープラーニングアプリケーションの実装など、幅広い用途に活用できます。研究用途から本番環境まで、多くの場面で採用されている実績あるフレームワークです。

TensorFlowには複雑な数値計算を高速に処理するための最適化技術が組み込まれています。これは内部でNumPyと多次元配列を使用しているためです。この多次元配列は「テンソル(tensor)」とも呼ばれます。

TensorFlowの主な特徴

  • 深層ニューラルネットワークの構築・学習をサポート
  • 高いスケーラビリティと豊富な人気データセットを同梱
  • GPU計算による高速化とリソース管理の自動化
  • 多数の機械学習ライブラリを搭載し、ドキュメントも充実

TensorFlowは深層ニューラルネットワークモデルの構築やトレーニングを行い、データセットの特徴を予測するアプリケーションを作成することができます。

TensorFlowのインストール方法

Windows環境に「tensorflow」パッケージをインストールするには、以下のコマンドを実行します。

pip install tensorflow

テンソルとは何か

テンソルはTensorFlowで使われる基本的なデータ構造であり、フロー図(「データフローグラフ」と呼ばれます)におけるエッジ(辺)をつなぐ役割を果たします。テンソルは本質的には多次元配列またはリストであり、以下の3つの主要な属性によって識別されます。

  • ランク(Rank):テンソルの次元数を表します。テンソルの階数、つまり定義されたテンソルが持つ次元の数と考えることができます。
  • 型(Type):テンソルの各要素に関連付けられたデータ型を示します。1次元、2次元、n次元のいずれのテンソルにも対応します。
  • 形状(Shape):行数と列数の組み合わせを表します。

実行環境について

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

コード例:Bag-of-Words線形モデルの構築

以下は、Stack Overflowの質問データセットをトレーニングするためのbag-of-words(単語の出現頻度に基づく)線形モデルを構築するコード例です。

print("A bag-of-words linear model is built to train the stackoverflow dataset")
binary_model = tf.keras.Sequential([layers.Dense(4)])
binary_model.compile(
    loss=losses.SparseCategoricalCrossentropy(from_logits=True),
    optimizer='adam',
    metrics=['accuracy'])
history = binary_model.fit(
    binary_train_ds, validation_data=binary_val_ds, epochs=10)

コード出典:https://www.tensorflow.org/tutorials/load_data/text

実行結果

A bag-of-words linear model is built to train the stackoverflow dataset
Epoch 1/10
188/188 [==============================] - 4s 19ms/step - loss: 1.2450 - accuracy: 0.5243 -
val_loss: 0.9285 - val_accuracy: 0.7645
Epoch 2/10
188/188 [==============================] - 1s 3ms/step - loss: 0.8304 - accuracy: 0.8172 -
val_loss: 0.7675 - val_accuracy: 0.7895
Epoch 3/10
188/188 [==============================] - 1s 3ms/step - loss: 0.6615 - accuracy: 0.8625 -
val_loss: 0.6824 - val_accuracy: 0.8050
Epoch 4/10
188/188 [==============================] - 1s 3ms/step - loss: 0.5604 - accuracy: 0.8833 -
val_loss: 0.6291 - val_accuracy: 0.8125
Epoch 5/10
188/188 [==============================] - 1s 3ms/step - loss: 0.4901 - accuracy: 0.9034 -
val_loss: 0.5923 - val_accuracy: 0.8210
Epoch 6/10
188/188 [==============================] - 1s 3ms/step - loss: 0.4370 - accuracy: 0.9178 -
val_loss: 0.5656 - val_accuracy: 0.8255
Epoch 7/10
188/188 [==============================] - 1s 3ms/step - loss: 0.3948 - accuracy: 0.9270 -
val_loss: 0.5455 - val_accuracy: 0.8290
Epoch 8/10
188/188 [==============================] - 1s 3ms/step - loss: 0.3601 - accuracy: 0.9325 -
val_loss: 0.5299 - val_accuracy: 0.8295
Epoch 9/10
188/188 [==============================] - 1s 3ms/step - loss: 0.3307 - accuracy: 0.9408 -
val_loss: 0.5177 - val_accuracy: 0.8335
Epoch 10/10
188/188 [==============================] - 1s 3ms/step - loss: 0.3054 - accuracy: 0.9472 -
val_loss: 0.5080 - val_accuracy: 0.8340

コードの解説

  • ニューラルネットワークはKerasの「Sequential」APIを使用して作成されています。Sequential APIは層を順番に積み重ねるシンプルなモデル構築手法です。
  • 「binary」形式でベクトル化されたデータに対して、bag-of-wordsモデル(線形モデルの一種)をトレーニングしています。
  • 損失関数にはSparseCategoricalCrossentropy、最適化アルゴリズムにはAdamを採用し、評価指標としてaccuracy(正解率)を指定しています。
  • 10エポックの学習により、検証データでの正解率は約83.4%まで向上しており、モデルが着実に学習できていることが確認できます。
  1. TensorFlowとPythonで線形モデルをトレーニングする方法を解説

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

  2. Kerasを使ってPythonでモデルをプロットする方法をわかりやすく解説

    TensorFlowとはTensorFlowは、Googleが提供している機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせて使用することで、アルゴリズムの実装やディープラーニングアプリケーションの開発など、幅広い用途に活用できます。研究目的から本番環境での運用まで対応しており、複雑な数値計算を高速に実行するための最適化技術が数多く組み込まれています。TensorFlowにおける「テンソル(Tensor)」は、データを扱うための基本的なデータ構造です。テンソルは多次元配列(またはリスト)であり、データフローグラフと呼ばれる計算グラフのノード同士をエッジでつ