TensorFlowを使ってIlliadデータセットをPythonのトレーニングデータとテストデータに分割する方法
TensorFlowはGoogleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせてアルゴリズムやディープラーニングアプリケーションなどを実装するために広く利用されています。研究用途から本番環境まで、幅広い場面で活用されています。
TensorFlowのインストール
Windows環境では、以下のコマンドで「tensorflow」パッケージをインストールできます。
pip install tensorflow
Tensorとは何か
Tensor(テンソル)はTensorFlowで使われる基本的なデータ構造です。フロー図におけるエッジ(辺)を接続する役割を担っており、このフロー図は「データフローグラフ」と呼ばれます。Tensorは、多次元配列またはリストに相当します。
Tensorは主に以下の3つの属性で識別されます。
ランク(Rank) − Tensorの次元数を表します。Tensorの階数、つまり定義されたTensorが持つ次元の数として理解できます。
型(Type) − Tensorの要素に関連付けられたデータ型を示します。1次元、2次元、あるいはn次元のTensorがあり得ます。
形状(Shape) − 行数と列数の組み合わせを表します。
Illiadデータセットについて
ここでは、William Cowper、Edward(Derby伯爵)、Samuel Butlerによる3つの翻訳作品のテキストデータを含む「Illiad(イリアス)」データセットを使用します。モデルは、1行のテキストが与えられたときに、それがどの翻訳者によるものかを識別できるように訓練されます。
使用するテキストファイルは前処理済みです。具体的には、文書のヘッダーとフッター、行番号、章タイトルが削除されています。
以下のコードはGoogle Colaboratory上で実行しています。Google Colab(Colaboratory)を使うと、ブラウザ上でPythonコードを実行でき、設定は一切不要で、GPU(グラフィックス処理装置)にも無料でアクセスできます。ColaboratoryはJupyter Notebookをベースに構築されています。
コード例
以下がコードスニペットです。
train_data = all_encoded_data.skip(VALIDATION_SIZE).shuffle(BUFFER_SIZE)
validation_data = all_encoded_data.take(VALIDATION_SIZE)
train_data = train_data.padded_batch(BATCH_SIZE)
validation_data = validation_data.padded_batch(BATCH_SIZE)
sample_text, sample_labels = next(iter(validation_data))
print("テキストバッチの形状 : ", sample_text.shape)
print("ラベルバッチの形状 : ", sample_labels.shape)
print("テキストの例 : ", sample_text[5])
print("ラベルの例 : ", sample_labels[5])コード出典 − https://www.tensorflow.org/tutorials/load_data/text
出力結果
テキストバッチの形状 : (64, 18) ラベルバッチの形状 : (64,) テキストの例 : tf.Tensor( [ 20 391 2 11 144 787 2 3498 16 49 2 0 0 0 0 0 0 0], shape=(18,), dtype=int64) ラベルの例 : tf.Tensor(1, shape=(), dtype=int64)
解説
KerasのTextVectorizationレイヤーを使用することで、ベクトル化されたデータのグループ化(バッチ化)とパディングを行えます。
パディングが必要な理由は、同一バッチ内のサンプルは同じサイズ・同じ形状である必要がある一方で、データセット内のサンプルは必ずしも同じサイズとは限らないためです。
テキストの各行は、単語数が異なる場合があります。
「tf.data.Dataset」メソッドを使うと、データセットの分割とパディング付きバッチ処理を簡単に行えます。
「validation_data」と「train_data」は、バッチ化されたデータのコレクションです。
各バッチは、(多数のサンプル、多数のラベル)というペアで構成され、配列として表現されます。
-
TensorFlowと事前学習済みモデルを使ってPythonでデータを可視化する方法
TensorFlowと事前学習済みモデルを組み合わせることで、matplotlibライブラリを使用してデータを簡単に可視化できます。グラフの描画には「plot」メソッドを使い、学習の進捗や精度の推移をコンソール上で確認できます。関連記事: TensorFlowとは何か?KerasがTensorFlowと連携してニューラルネットワークを構築する仕組み転移学習(Transfer Learning)の基本少なくとも1つの畳み込み層(Convolutional Layer)を含むニューラルネットワークは、畳み込みニューラルネットワーク(CNN)と呼ばれ、学習モデルの構築に広く活用されています。本記事で
-
TensorFlowとPythonを使ってデータセットを視覚化する方法
ここでは、花のデータセットを使用します。このデータセットは、Googleが提供するAPI経由でダウンロードでき、「get_file」メソッドにAPIのURLを引数として渡すことで、データを開発環境に取得できます。 ダウンロードしたデータは「matplotlib」ライブラリを使って視覚化できます。「imshow」メソッドを使用すると、コンソール上に画像を表示することが可能です。 TensorFlowとKerasの連携 関連記事: TensorFlowとは何か?KerasはどのようにTensorFlowと連携してニューラルネットワークを構築するのか? 本記事ではKeras Sequential