Translate

#76 インポートとデータの読み込み

では、 実際にコードを体験してみましょう。


TensorFlow公式サイトチュートリアルから、初級の『KerasによるMLの基本』→『基本的な画像分類』を選んでクリックすると、『はじめてのニューラルネットワーク:分類問題の初歩』というチュートリアルが現れます。

今回は、この教材を基に解説していきます。

この教材は、TensorFlowのためのものでAPIとして『tf.keras』が用いられていますが、今回はこれを少し変更して、Keras3で進めていきたいと思います。

TensorFlowで『tf.keras』を用いた場合とKeras3の場合では、コードにどのような差があるのかを体験してみてください。

1.Kerasをインポート

コラボで Keras3を使うのは、実はとても簡単です!

コラボにプリインストールされている TensorFlow のバージョンはすでに 2.16 以上になっているため、特別なインストール操作をすることなく、最初からKeras3が使える状態になっています。さあ、Kerasをインポートしましょう!

公式チュートリアルでは、バージョンが「2.11.0」になっていますが、今回はバージョンが「2.20.0」になっていました。




2.データセットFashion MNIST

TensorFlow 公式チュートリアルで使用している『Fashion MNIST』とは、衣料品やバッグなど10種類のファッションアイテムの画像を集めた機械学習・画像認識用のデータセットです。

もともと手書き数字の画像セット『MNIST』が機械学習の入門用として広く使われていましたが、現在のAI技術では簡単になりすぎたので、ソフトウエアの企業Zalandoの研究チームが2017年に公開したものです。

各サンプルは、28×28ピクセル(マス)のグレースケール画像で、サンプル数は70,000、10種類のラベルと関連付けられています。

今回は、このデータセット『Fashion MNIST』をインポートしていきましょう。





3.データセットFashion MNISTをインポートする

『TensorFlow 公式チュートリアル』の通りに、コードを書くと、下記のようにエラーが出てしまいます。

よく見ると、『tf.keras.』という文字があります。これは、TensorFlowのコードですので、『keras.』に替えてみましょう!





fashion_mnist = keras.datasets.fashion_mnist』に変更することにより、データを読み込むことができます。

1行目で、Kerasがあらかじめ用意してくれている『Fashion-MNIST』というデータセットの場所に、『fashion_mnist』という名前(変数)をつけて宣言し、アクセスしやすくしています。

2行目は、データを読み込み、「訓練用(学習用)」と「テスト用(評価用)」の2グループに自動で分割して、さらにそれを「画像」と「正解ラベル(答え)」に分けて変数に代入するように指示しています。





4.クラス名を保存しておく

画像はそれぞれ単一のラベルに分類されています。ただし、データセットには上記のクラス名が含まれていないため、後ほど画像を出力するときのために、クラス名(スライド3参照)を保存しておきます。

1次元のデータですから、Seriesに格納します。





5.データの観察

まずは、トレーニング用データセットを観察してみましょう。公式チュートリアルにはありませんが、『train_images』を見てみましょう! 

最も内側の[ ]内は、『ベクトル(1次元配列)』で、画像の中の『横1行分のピクセル値(28個のマス)』を表しています。

2番目の内側の[ ]内は、『行列(2次元配列)』を表しています。これは画像1枚分の『縦28ピクセル(マス) × 横28ピクセル(マス)』を表しています。

0ばかりありますが、これは省略されている真ん中の部分に、0〜255で表されている数字で濃淡が表現されています。

一番外側の[ ]内は、下記のスライドでは省略していますが、60,000枚の画像データがすべて含まれています。

このようにデータが縦・横・奥行きのように3つの方向に広がっているものを『3次元テンソル』と呼びます。テンソルは、そう、『TensorFlow』のテンソルです。





公式チュートリアルに戻りましょう。

train_images.shape

『shape』は、NumPyの多次元配列やTensorFlowのテンソルが持っている「属性(データの形状を表す情報)」を示します。そのデータが「どんな構造(次元)で、どれくらいのサイズなのか」を教えてくれる便利なものです。ディープラーニングでは、この確認が重要で、後ほど、1次元配列に変換してレイヤーを作成する際にもこの属性を使います。

その他、ラベルの枚数、ラベルがどういったものかを観察しましょう。

●len(train_labels)
●train_labels





次は、テスト用データセットの観察です。 





データを取り込んだら、データがどのようなものかを確認することは、今までやってきた『基礎編』と同様、『5th STEP ディープラーニング』でも基本の動作になります。











コメント