TensorFlowとPythonを使ってイリアス(Illiad)データセットを読み込む方法
TensorFlowはGoogleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせて、アルゴリズムの実装やディープラーニングアプリケーションの構築など、幅広い用途に活用できます。研究用途から本番環境まで、多くの場面で採用されている実績あるフレームワークです。
テンソル(Tensor)はTensorFlowで使われる基本的なデータ構造で、フロー図におけるエッジ(辺)を接続する役割を担います。このフロー図は「データフローグラフ」と呼ばれます。テンソルとは、端的に言えば多次元配列またはリストのことです。
テンソルは、次の3つの主要な属性によって識別できます。
- ランク(Rank):テンソルの次元数を表します。テンソルの階数、つまり定義されたテンソルが持つ次元の数として理解できます。
- 型(Type):テンソルの各要素に関連付けられたデータ型を示します。1次元、2次元、n次元など、任意の次元のテンソルに対応します。
- 形状(Shape):行数と列数の組み合わせを指します。
使用するデータセットについて
今回はイリアス(Illiad)のデータセットを使用します。このデータセットには、William Cowper、Edward(Derby伯爵)、Samuel Butlerによる3つの翻訳作品のテキストデータが含まれています。モデルは、1行のテキストが与えられたときに、それがどの翻訳者によるものかを識別できるように訓練されます。
使用するテキストファイルは前処理済みです。具体的には、文書のヘッダーとフッター、行番号、章タイトルなどが削除されています。
以下のコードはGoogle Colaboratory上で実行しています。Google Colab(Colaboratory)はブラウザ上でPythonコードを実行できるサービスで、環境設定は一切不要で、GPU(グラフィックス処理装置)にも無料でアクセスできます。ColaboratoryはJupyter Notebookをベースに構築されています。
コード例
以下がコードスニペットです。
def labeler(example, index):
return example, tf.cast(index, tf.int64)
print("空のリストを作成しました")
labeled_data_sets = []
print("ファイル名を反復処理し、TextLineDatasetメソッドで\nテキストファイルからデータセットを作成します")
for i, file_name in enumerate(FILE_NAMES):
lines_dataset = tf.data.TextLineDataset(str(parent_dir/file_name))
labeled_dataset = lines_dataset.map(lambda ex: labeler(ex, i))
labeled_data_sets.append(labeled_dataset)コード出典:https://www.tensorflow.org/tutorials/load_data/text
出力結果
空のリストを作成しました ファイル名を反復処理し、TextLineDatasetメソッドでテキストファイルからデータセットを作成します
コードの解説
- 「TextLineDataset」は、テキストファイルからtf.data.Datasetを作成するために使用されます。
- 各サンプル(example)は、元のファイルから読み込んだ1行のテキストに相当します。
- 「text_dataset_from_directory」はファイルの内容全体を1つのサンプルとして扱います。
- TextLineDatasetは、行単位で構成されるテキストデータを扱う際に特に便利です。
- 各ファイルを順番に反復処理し、すべての行をそれぞれ独立したデータセットとして読み込みます。
- 各サンプルには個別にラベルを付ける必要があるため、「tf.data.Dataset.map」を使ってlabeler関数を各行に適用します。
- これにより、データセット内のすべてのサンプルに対して反復処理が行われ、(example, label)のペアが出力として返されます。
-
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