PythonとTensorFlowでトレーニング用のイリアス(Illiad)データセットを準備する方法
TensorFlowは、Googleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせてアルゴリズムやディープラーニングアプリケーションなどを実装するために広く利用されています。研究用途から本番環境まで、さまざまな場面で活用されています。
Windowsに「tensorflow」パッケージをインストールするには、以下のコマンドを実行します。
pip install tensorflow
テンソル(Tensor)は、TensorFlowで使用される基本的なデータ構造です。フロー図の中でエッジ同士を接続する役割を担っており、このフロー図は「データフローグラフ」と呼ばれます。テンソルとは、端的に言えば多次元配列やリストのことです。
ここでは、ウィリアム・カウパー(William Cowper)、ダービー伯爵エドワード(Edward, Earl of Derby)、サミュエル・バトラー(Samuel Butler)による3つの翻訳作品のテキストデータを含む「イリアス(Illiad)」データセットを使用します。このモデルは、1行のテキストが与えられたときに、それがどの翻訳者によるものかを識別できるように訓練されます。使用するテキストファイルはすでに前処理されており、文書のヘッダー・フッター、行番号、章タイトルなどは削除されています。
以下のコードは、Google Colaboratory上で実行しています。Google Colab(Colaboratory)は、ブラウザ上でPythonコードを実行できるサービスで、事前の設定が一切不要であり、GPU(Graphics Processing Unit)にも無料でアクセスできます。ColaboratoryはJupyter Notebookをベースに構築されています。
コード例
以下がコードスニペットです。
print("Prepare the dataset for training")
tokenizer = tf_text.UnicodeScriptTokenizer()
print("Defining a function named 'tokenize' to tokenize the text data")
def tokenize(text, unused_label):
lower_case = tf_text.case_fold_utf8(text)
return tokenizer.tokenize(lower_case)
tokenized_ds = all_labeled_data.map(tokenize)
print("Iterate over the dataset and print a few samples")
for text_batch in tokenized_ds.take(6):
print("Tokens: ", text_batch.numpy())
コード出典:https://www.tensorflow.org/tutorials/load_data/text
実行結果
Prepare the dataset for training Defining a function named 'tokenize' to tokenize the text data WARNING:tensorflow:From /usr/local/lib/python3.6/distpackages/tensorflow/python/util/dispatch.py:201: batch_gather (from tensorflow.python.ops.array_ops) is deprecated and will be removed after 2017-10-25. Instructions for updating: `tf.batch_gather` is deprecated, please use `tf.gather` with `batch_dims=-1` instead. Iterate over the dataset and print a few samples Tokens: [b'but' b'i' b'have' b'now' b'both' b'tasted' b'food' b',' b'and' b'given'] Tokens: [b'all' b'these' b'shall' b'now' b'be' b'thine' b':' b'but' b'if' b'the' b'gods'] Tokens: [b'their' b'spiry' b'summits' b'waved' b'.' b'there' b',' b'unperceived'] Tokens: [b'"' b'i' b'pray' b'you' b',' b'would' b'you' b'show' b'your' b'love' b',' b'dear' b'friends' b','] Tokens: [b'entering' b'beneath' b'the' b'clavicle' b'the' b'point'] Tokens: [b'but' b'grief' b',' b'his' b'father' b'lost' b',' b'awaits' b'him' b'now' b',']
解説
まず、データセット内の文を空白を基準に単語へ分割する「tokenize」関数を定義します。この関数内では、
case_fold_utf8によってテキストを小文字に統一してからトークン化を行っています。定義した関数を、
mapメソッドを使ってデータセット全体に適用し、すべてのテキストをトークン化します。take(6)により先頭の6件を取り出し、トークン化後のデータセットのサンプルをコンソールに表示しています。
-
TensorFlowとPythonを使ってデータセットを視覚化する方法
ここでは、花のデータセットを使用します。このデータセットは、Googleが提供するAPI経由でダウンロードでき、「get_file」メソッドにAPIのURLを引数として渡すことで、データを開発環境に取得できます。 ダウンロードしたデータは「matplotlib」ライブラリを使って視覚化できます。「imshow」メソッドを使用すると、コンソール上に画像を表示することが可能です。 TensorFlowとKerasの連携 関連記事: TensorFlowとは何か?KerasはどのようにTensorFlowと連携してニューラルネットワークを構築するのか? 本記事ではKeras Sequential
-
TensorFlowとPythonを使って花のデータセットを可視化する方法
花のデータセットは、matplotlibライブラリを使用することで簡単に可視化できます。imshowメソッドを使うと、画像をコンソール上に表示でき、データセット全体を反復処理しながら最初の数枚の画像だけを出力するといったことも可能です。使用するデータセットについて本記事では、数千枚の花の画像を含む「flowers(花)」データセットを使用します。このデータセットには5つのサブディレクトリが含まれており、各クラス(花の種類)ごとに1つのサブディレクトリが割り当てられています。なお、以下のコードはGoogle Colaboratoryで実行することを想定しています。Google Colab(Col