TensorFlowとPythonで前処理レイヤーの状態をデータセットに適応させる方法
TensorFlowはGoogleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせてアルゴリズムやディープラーニングアプリケーションなどを実装できます。研究用途から本番環境まで幅広く利用され、複雑な数値計算を高速に実行するための最適化技術が組み込まれています。
その理由は、NumPyと多次元配列を活用しているためです。この多次元配列は「テンソル(tensor)」とも呼ばれます。TensorFlowはディープニューラルネットワークの構築をサポートしており、高い拡張性を備え、多くの人気データセットが付属しています。GPU演算を活用し、リソース管理も自動化されます。豊富な機械学習ライブラリが同梱され、ドキュメントも充実しているため、深層学習モデルの構築・学習、そしてデータセットの特徴を予測するアプリケーションの作成まで一貫して行えます。
TensorFlowのインストール
Windows環境では、以下のコマンドで「tensorflow」パッケージをインストールできます。
pip install tensorflow
テンソルはTensorFlowで使われる基本的なデータ構造です。フロー図(計算グラフ)のエッジを接続する役割を担い、このフロー図は「データフローグラフ」と呼ばれます。テンソルとは、要するに多次元配列またはリストのことです。
以降のコードはGoogle Colaboratory上で実行します。Google Colab(Colaboratory)を使えば、ブラウザ上でPythonコードを実行でき、環境構築は不要で、GPUにも無料でアクセスできます。ColaboratoryはJupyter Notebookをベースに構築されています。
コード例:前処理レイヤーをデータセットに適応させる
テキスト分類モデルでは、TextVectorizationレイヤーなどの前処理レイヤーの内部状態(語彙やインデックス情報)をデータセットに基づいて構築する必要があります。これには「adapt」メソッドを使用します。以下がコードスニペットです。
print("ラベルなしのテキストのみのデータセットを準備します")
train_text = raw_train_ds.map(lambda text, labels: text)
print("adaptメソッドを呼び出します")
binary_vectorize_layer.adapt(train_text)
int_vectorize_layer.adapt(train_text)
print("結果がコンソールに表示されます")
def binary_vectorize_text(text, label):
text = tf.expand_dims(text, -1)
return binary_vectorize_layer(text), labelコード引用元: https://www.tensorflow.org/tutorials/load_data/text
出力結果
ラベルなしのテキストのみのデータセットを準備します adaptメソッドを呼び出します 結果がコンソールに表示されます
コードの解説
まず、ラベルを除いたテキストのみのデータセットを準備します。
map関数とラムダ式を使い、(text, labels)のタプルからテキスト部分だけを抽出しています。次に、準備したデータに対して「adapt」メソッドを呼び出します。このメソッドにより、レイヤーが訓練データを分析し、語彙(vocabulary)などの内部状態を学習します。
これにより、データセットはモデルの「binary」(マルチホットエンコーディング)形式でベクトル化できるようになります。「int_vectorize_layer」についても同様にadaptすることで、整数インデックスによるベクトル化が可能になります。
なお、adaptメソッドは訓練データのみに対して呼び出すのが一般的です。検証用データやテスト用データの情報がモデルに漏れる(データリークが発生する)のを防ぐためです。adaptが完了した後は、前述のbinary_vectorize_textのような関数を使って、生のテキストを前処理レイヤー経由でベクトル化し、モデルに入力できる形へ変換します。
-
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