ディープラーニングの勉強を最近はじめた。手始めに評判がいいkerasを使用している。
参考にしているサイトは以下のサイトでひたすら写経している感じである。
その中でMINISTの求め方について以下のコードが記述されている。
from keras.datasets import mnist from keras.utils import np_utils (X_train, y_train),(X_test,y_test) = mnist.load_data() X_train = X_train.reshape(60000,784).astype('float32') X_test = X_test.reshape(10000,784).astype('float32') #[0,255]の値を[0,1]に正規化 X_train /= 255.0 X_test /= 255.0 # 1 of Kのベクトルに変換 y_train = np_utils.to_categorical(y_train, 10) y_test = np_utils.to_categorical(y_test, 10)
ministデータを読み込んで、0 OR 1に正規化しているのだけど、np_utils.to_categoricalで行っている1 OF Kのベクトルに変換がよくわからなかった。調べてみると以下の記事を発見。
Kerasはラベルを数値ではなく、0or1を要素に持つベクトルで扱うらしい つまりあるサンプルに対するターゲットを「3」だとすると[0, 0, 0, 1, 0, 0, 0, 0, 0, 0]みたいな感じにしなければならない。
np_utils.to_categoricalを使用する事により、ラベルをベクトルに変換出来る。今回のコードは
y_train = np_utils.to_categorical(y_train, 10)
となっているが、第一引数がベクトルに変換したいラベルで、第二引数がベクトル配列の個数となる。今回は0〜9の範囲なので10個の配列が必要となる為、10を設定している。