この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
2_データ準備_keras [2017/11/05] adash333 [1. データセットの準備] |
2_データ準備_keras [2018/10/07] (現在) |
||
---|---|---|---|
ライン 50: | ライン 50: | ||
Keras 2.0.9\\ | Keras 2.0.9\\ | ||
- | Keras2.0のインストール方法は[[windowsにkeras2.0をインストール]]をご覧下さい。 | + | Keras2.0のインストール方法は<wrap hi>[[windowsにkeras2.0をインストール]]</wrap>をご覧下さい。 |
- | このページは、[[(1)Kerasを使用するためのimport文]]の続きであり、今回は、MNISTのデータの準備・設定を行っていきます。 | + | このページは、<wrap hi>[[(1)Kerasを使用するためのimport文]]</wrap>の続きであり、今回は、MNISTのデータの準備・設定を行っていきます。 |
データの準備が難しいところなのですが、今回は、最初なので、Kerasであらかじめ用意されているMNISTデータセットを利用します。 | データの準備が難しいところなのですが、今回は、最初なので、Kerasであらかじめ用意されているMNISTデータセットを利用します。 | ||
- | オリジナルデータセットの準備については、後日、[[Keras2用自前データの準備]]に記載予定です。 | + | オリジナルデータセットの準備については、後日、<wrap hi>[[Keras2用自前データの準備]]</wrap>に記載予定です。 |
===== 手順 ===== | ===== 手順 ===== | ||
ライン 122: | ライン 122: | ||
手書き数字MNISTは、本来は28x28pixelのグレースケールの画像と、それが何の数字であるかの正解ラベルのセットです。この画像と正解ラベルのセットが、training用の6万セット、test用の1万セットとなっています。 | 手書き数字MNISTは、本来は28x28pixelのグレースケールの画像と、それが何の数字であるかの正解ラベルのセットです。この画像と正解ラベルのセットが、training用の6万セット、test用の1万セットとなっています。 | ||
- | ただ、画像のままではKerasでは読み込めません。そのため、画像を0~255の値をとる284個の数字が1列に並んだ配列に変換(reshape(60000, 784))し、さらに正規化といって全部255で割ったたものをx_trainに代入しています。\\ | + | ただ、画像のままではKerasでは読み込めません。そのため、画像を0~255の値をとる784個の数字が1列に並んだ配列に変換(reshape(60000, 784))し、さらに正規化といって全部255で割ったたものをx_trainに代入しています。\\ |
さらに、以下のコードで、正解ラベルをone hot ベクトルに変換したものを、y_trainに代入しています。 | さらに、以下のコードで、正解ラベルをone hot ベクトルに変換したものを、y_trainに代入しています。 | ||
ライン 176: | ライン 176: | ||
Kerasが用意しているMNISTデータセットを用いる手順は上記でおしまいです。 | Kerasが用意しているMNISTデータセットを用いる手順は上記でおしまいです。 | ||
- | <wrap hi> | + | |
- | 初めての場合は、次は、とりあえず、</wrap>[[(3)モデルの記述]]<wrap hi>に進んでください。 | + | 初めての場合は、次は、とりあえず、<wrap hi>[[(3)モデル設定(Keras)]]</wrap>に進んでください。 |
- | </wrap> | + | |
===== keras.datasets.mnist.load_data()関数について ===== | ===== keras.datasets.mnist.load_data()関数について ===== | ||
ライン 187: | ライン 186: | ||
今回はそれにあたります(MNISTなんてグレースケールで十分)が、 | 今回はそれにあたります(MNISTなんてグレースケールで十分)が、 | ||
<code> | <code> | ||
- | train, test = mnist.get_mnist(withlabel=True, ndim=1) | + | from keras.datasets import mnist |
+ | |||
+ | (x_train, y_train), (x_test, y_test) = mnist.load_data() | ||
</code> | </code> | ||
- | のように、引数に、withlabel=True, ndim=1と入れます。 | + | のように、x_trainとx_testに、画像データをNumpy配列に変換済みのものを代入し、y_trainとy_testに対応する正解ラベルを代入します。 |
(2)もともとのデータセットがグレースケール画像のデータとなっています。 | (2)もともとのデータセットがグレースケール画像のデータとなっています。 | ||
Keras関連の関数については、公式マニュアルを読むのが一番です。日本語もあります!公式マニュアルが比較的読みやすいです。 | Keras関連の関数については、公式マニュアルを読むのが一番です。日本語もあります!公式マニュアルが比較的読みやすいです。 | ||
- | |||
https://keras.io/ja/datasets/#mnist\\ | https://keras.io/ja/datasets/#mnist\\ | ||
{{:pasted:20171106-052812.png}} | {{:pasted:20171106-052812.png}} | ||
+ | |||
+ | ===== one-hotエンコーディング について ===== | ||
+ | たとえば、正解ラベルが0,1,2, ..., 9 と10個あったときに、 | ||
+ | <code> | ||
+ | 0 => [1, 0, 0, 0, 0, 0, 0 ,0, 0, 0] | ||
+ | 1 => [0, 1, 0, 0, 0, 0, 0 ,0, 0, 0] | ||
+ | 2 => [0, 0, 1, 0, 0, 0, 0 ,0, 0, 0] | ||
+ | ... | ||
+ | 9 => [0, 0, 0, 0, 0, 0, 0 ,0, 0, 1] | ||
+ | </code> | ||
+ | のように、数値をベクトルで表現することを、one-hot エンコーディングといいます。 | ||
+ | |||
+ | 機械学習の計算では、コンピュータに行列計算をさせることが多い(だからGPUをうまく使用すると計算スピードが速くなる)ので、正解ラベルもベクトルで表現しておくと都合がよいらしいです。コンピュータに効率良く計算させるために、ミニバッチ学習とか、プログラミング的には面倒なだけで意味不明なことをやっていたりするという噂を聞いたりしたことがあります(まだちゃんと理解していません、間違っていたらすみません、、、)。 | ||
+ | |||
+ | ちなみに、one-hotベクトルを、通常のラベルに戻すときには、Numpyのargmax()関数を利用して、one-hotベクトル(=配列)の、最大要素のインデックスを取り出して、数値に戻します。具体的な方法は、[[Keras2用自前データの準備]]に記載予定です。 | ||
+ | |||
+ | |||
+ | 2016-11-08 Kerasによる多クラス分類(Iris) | ||
+ | http://aidiary.hatenablog.com/entry/20161108/1478609028 | ||
===== 参考文献 ===== | ===== 参考文献 ===== | ||
初めてKerasプログラミングをやるときの超おすすめ本。\\ | 初めてKerasプログラミングをやるときの超おすすめ本。\\ |