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

TensorFlowを使ってPythonで学習するためのIMDBデータセットを準備する方法

TensorFlowとは

TensorFlowは、Googleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせることで、機械学習アルゴリズムやディープラーニングアプリケーションの実装など、幅広い用途に活用できます。研究開発から本番運用まで利用されており、複雑な数値計算を高速に実行するための最適化技術を数多く備えています。

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

pip install tensorflow

テンソル(Tensor)とは

テンソルはTensorFlowで扱われる基本データ構造であり、データフロー図における各要素をつなぐ役割を果たします。このデータフロー図は「データフローグラフ」と呼ばれます。テンソルの実体は、多次元配列あるいはリストです。

IMDBデータセットについて

IMDBデータセットには5万件以上の映画レビューが収録されており、自然言語処理(NLP)関連のタスク、特にレビューのポジティブ/ネガティブ判定といった感情分析のモデル構築で広く利用されています。

以降のコードはGoogle Colaboratory上で実行しています。Google Colab(Colaboratory)を利用すると、ブラウザ上で直接Pythonコードを実行でき、面倒な環境構築が不要なうえ、GPU(グラフィック処理装置)にも無料でアクセス可能です。ColaboratoryはJupyter Notebookを基盤として構築されています。

コード例

def vectorize_text(text, label):
  text = tf.expand_dims(text, -1)
  return vectorize_layer(text), label

text_batch, label_batch = next(iter(raw_train_ds))
first_review, first_label = text_batch[0], label_batch[0]
print("Review is ", first_review)
print("Label is ", raw_train_ds.class_names[first_label])
print("Vectorized review is ", vectorize_text(first_review, first_label))

print("1222 ---> ",vectorize_layer.get_vocabulary()[1222])
print(" 451 ---> ",vectorize_layer.get_vocabulary()[451])
print('Vocabulary size: {}'.format(len(vectorize_layer.get_vocabulary())))

train_ds = raw_train_ds.map(vectorize_text)
val_ds = raw_val_ds.map(vectorize_text)
test_ds = raw_test_ds.map(vectorize_text)

コード引用元: https://www.tensorflow.org/tutorials/keras/text_classification

実行結果

Review is tf.Tensor(b'Silent Night, Deadly Night 5 is the very last of the series, and like part 4, it is unrelated to the first three except by title...(中略)... Anyway, I now have seeing the whole series out of my system. 4 out of 5.', shape=(), dtype=string)
Label is neg
Vectorized review is (<tf.Tensor: shape=(1, 250), dtype=int64, numpy=
array([[1287, 313, 2380, 313, 661, 7, 2, ...(中略)..., 158, 93, 1]])>, <tf.Tensor: shape=(), dtype=int32, numpy=0>)
1222 ---> stick
451 ---> already
Vocabulary size: 10000

コードの解説

  • まず「vectorize_text」という関数を定義します。この関数は、与えられたテキストをコンピュータが理解できる数値列(トークンID)へ変換する役割を担います。

  • IMDBデータセットをモデルの学習に使用します。

  • レビュー本文、ラベル、およびベクトル化後のデータのサンプルがコンソールに出力されます。

  • 語彙の内容も確認しており、インデックス1222は「stick」、451は「already」に対応していることがわかります。語彙サイズは10,000語です。

  • 最後にmapメソッドを使い、訓練データ(train_ds)、検証データ(val_ds)、テストデータ(test_ds)のすべてをベクトル化します。これにより、テキスト分類モデルの学習にそのまま使える形式へとデータが整えられます。

  1. TensorFlowを使ってMNISTデータセット用のモデルを定義する方法

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

  2. TensorFlowとPythonでIMDBデータセットの学習精度・検証精度をグラフ化する方法

    TensorFlowはGoogleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせて使用することで、各種アルゴリズムやディープラーニングアプリケーションの実装が可能になります。研究用途から本番環境まで幅広く活用されています。TensorFlowのインストールWindows環境では、以下のコマンドを実行するだけで「tensorflow」パッケージをインストールできます。pip install tensorflowIMDBデータセットについて「IMDB」データセットには、5万件を超える映画レビューが収録されています。このデータセットは、自然言語処理