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

TensorFlowとPythonでイリアス(Illiad)データセットをトレーニングする方法

TensorFlowはGoogleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせてアルゴリズムやディープラーニングアプリケーションなどを実装するために広く利用されています。研究用途から本番環境まで幅広く使われており、複雑な数値計算を高速に処理するための最適化技術を備えています。これは内部でNumPyと多次元配列を使用しているためです。この多次元配列は「テンソル」と呼ばれます。TensorFlowは深層ニューラルネットワークの構築も強力にサポートしています。

TensorFlowのインストール

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

pip install tensorflow

テンソルとは、TensorFlowで使われる基本的なデータ構造であり、データフローグラフ(計算グラフ)のエッジをつなぐ役割を担います。テンソルの実体は、多次元配列あるいはリストにほかなりません。

使用するデータセットについて

今回は「イリアス(Illiad)」のデータセットを使用します。このデータセットには、ウィリアム・カウパー(William Cowper)、ダービー伯エドワード(Edward, Earl of Derby)、サミュエル・バトラー(Samuel Butler)による3つの翻訳作品のテキストデータが含まれています。モデルは、1行のテキストが与えられたときに、それがどの翻訳者によるものかを識別できるように学習されます。

使用するテキストファイルは前処理済みです。具体的には、文書のヘッダー・フッター、行番号、章タイトルなどが取り除かれています。

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

コード例

以下がコードスニペットです。

vocab_size += 2

print("Configure the dataset for better performance")
train_data = configure_dataset(train_data)
validation_data = configure_dataset(validation_data)

print("Train the model")
model = create_model(vocab_size=vocab_size, num_labels=3)
model.compile(
    optimizer='adam',
    loss=losses.SparseCategoricalCrossentropy(from_logits=True),
    metrics=['accuracy'])
print("Fit the training data to the model")
history = model.fit(train_data, validation_data=validation_data, epochs=3)

print("Finding the accuracy and loss associated with training")
loss, accuracy = model.evaluate(validation_data)

print("The loss is : ", loss)
print("The accuracy is : {:2.2%}".format(accuracy))

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

出力結果

Configure the dataset for better performance
Train the model
Fit the training data to the model
Epoch 1/3
697/697 [==============================] - 35s 17ms/step - loss: 0.6891 - accuracy: 0.6736 -
val_loss: 0.3718 - val_accuracy: 0.8404
Epoch 2/3
697/697 [==============================] - 8s 11ms/step - loss: 0.3149 - accuracy: 0.8713 -
val_loss: 0.3621 - val_accuracy: 0.8422
Epoch 3/3
697/697 [==============================] - 8s 11ms/step - loss: 0.2165 - accuracy: 0.9162 -
val_loss: 0.4002 - val_accuracy: 0.8404
Finding the accuracy and loss associated with training
79/79 [==============================] - 1s 2ms/step - loss: 0.4002 - accuracy: 0.8404
The loss is : 0.40021833777427673
The accuracy is : 84.04%

解説

  • モデルは、前処理・ベクトル化済みのデータセットを使って学習されます。

  • 学習後、モデルをコンパイルし、訓練データを適合(fit)させます。

  • モデルの損失(loss)と精度(accuracy)は、「evaluate」メソッドを使って評価します。

  • 評価結果はコンソールに出力されます。

実行結果を見ると、エポックを重ねるごとに訓練データに対する精度が向上している一方、検証データの精度は約84%で安定しており、過学習の兆候も確認できます。損失関数にはSparseCategoricalCrossentropy、最適化手法にはAdamを採用しており、多クラス分類問題に適した構成となっています。

  1. TensorFlowとPythonを使って花のデータセットを可視化する方法

    花のデータセットは、matplotlibライブラリを使用することで簡単に可視化できます。imshowメソッドを使うと、画像をコンソール上に表示でき、データセット全体を反復処理しながら最初の数枚の画像だけを出力するといったことも可能です。使用するデータセットについて本記事では、数千枚の花の画像を含む「flowers(花)」データセットを使用します。このデータセットには5つのサブディレクトリが含まれており、各クラス(花の種類)ごとに1つのサブディレクトリが割り当てられています。なお、以下のコードはGoogle Colaboratoryで実行することを想定しています。Google Colab(Col

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

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