TensorFlowとPythonを使ってデータセットを視覚化する方法
ここでは、花のデータセットを使用します。このデータセットは、Googleが提供するAPI経由でダウンロードでき、「get_file」メソッドにAPIのURLを引数として渡すことで、データを開発環境に取得できます。
ダウンロードしたデータは「matplotlib」ライブラリを使って視覚化できます。「imshow」メソッドを使用すると、コンソール上に画像を表示することが可能です。
TensorFlowとKerasの連携
関連記事: TensorFlowとは何か?KerasはどのようにTensorFlowと連携してニューラルネットワークを構築するのか?
本記事ではKeras Sequential APIを使用します。これは、各レイヤーが正確に1つの入力テンソルと1つの出力テンソルを持つ、単純なレイヤーのスタックで構成される逐次モデルを構築するのに適したAPIです。
keras.Sequentialモデルを使って画像分類器を作成し、preprocessing.image_dataset_from_directoryを利用してデータを読み込みます。これにより、ディスクから効率的にデータをロードできます。さらに、過学習(オーバーフィッティング)を検出し、それを軽減するための手法として、データ拡張やドロップアウトなどを適用します。
使用するデータセットには約3,700枚の花の画像が含まれており、5つのサブディレクトリ(クラスごとに1つずつ)に分かれています。クラスは以下の通りです。
- daisy(デイジー)
- dandelion(タンポポ)
- roses(バラ)
- sunflowers(ひまわり)
- tulips(チューリップ)
以下のコードはGoogle Colaboratory上で実行しています。Google Colab(Colaboratory)はブラウザ上でPythonコードを実行できるサービスで、事前設定が一切不要であり、GPU(グラフィックス処理装置)にも無料でアクセスできます。ColaboratoryはJupyter Notebookをベースに構築されています。
print("Visualizing the dataset")
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 10))
for images, labels in train_ds.take(1):
for i in range(6):
ax = plt.subplot(3, 3, i + 1)
plt.imshow(images[i].numpy().astype("uint8"))
plt.title(class_names[labels[i]])
plt.axis("off")
for image_batch, labels_batch in train_ds:
print(image_batch.shape)
print(labels_batch.shape)
break
コード出典:https://www.tensorflow.org/tutorials/images/classification
出力結果
Visualizing the dataset (32, 180, 180, 3) (32,)
解説
- fitメソッドでモデルを学習した後でも、データセットを手動で反復処理し、画像のバッチを取得することができます。
- 取得したデータはコンソールに表示されます。
- image_batchは形状(32, 180, 180, 3)のテンソルです。
- これは32枚の画像からなるバッチで、各画像の形状は180×180×3です。
- labels_batchは形状(32,)のテンソルで、32枚の画像に対応するラベルが格納されています。
- image_batchおよびlabels_batchテンソルに対して.numpy()を呼び出すことで、numpy.ndarrayへ変換できます。
-
TensorFlowとPythonを使ってモデルをトレーニングする方法
TensorFlowでは、fitメソッドを使ってモデルをトレーニングできます。このメソッドには、エポック数(データセット全体を何回繰り返して学習させるかを示す数値)とトレーニング用データを指定します。実行環境について本記事のコードはGoogle Colaboratory(Google Colab)で実行しています。Google Colabはブラウザ上でPythonコードを実行できるサービスで、面倒な環境構築が不要なうえ、GPU(グラフィックス処理ユニット)を無料で利用できるのが大きな特徴です。ColaboratoryはJupyter Notebookをベースに構築されています。モデルのトレーニ
-
TensorFlowとPythonを使って花のデータセットを可視化する方法
花のデータセットは、matplotlibライブラリを使用することで簡単に可視化できます。imshowメソッドを使うと、画像をコンソール上に表示でき、データセット全体を反復処理しながら最初の数枚の画像だけを出力するといったことも可能です。使用するデータセットについて本記事では、数千枚の花の画像を含む「flowers(花)」データセットを使用します。このデータセットには5つのサブディレクトリが含まれており、各クラス(花の種類)ごとに1つのサブディレクトリが割り当てられています。なお、以下のコードはGoogle Colaboratoryで実行することを想定しています。Google Colab(Col