ユーザ用ツール

サイト用ツール


2_データ準備_keras

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
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>​ 
  
-(参考) +初めての場合は、次は、とりあえず、<​wrap hi>[[(3)ル設定(Keras)]]</​wrap>​進んでくださ
- +
-one-hotエンコーィング て\\ +
-2016-11-08 +
-Kerasによる多クラス分類(Iris)\\ +
-http://​aidiary.hatenablog.com/​entry/​20161108/​1478609028+
  
 ===== keras.datasets.mnist.load_data()関数について ===== ===== keras.datasets.mnist.load_data()関数について =====
ライン 194: ライン 186:
 今回はそれにあたります(MNISTなんてグレースケールで十分)が、 今回はそれにあたります(MNISTなんてグレースケールで十分)が、
 <​code>​ <​code>​
-traintest = mnist.get_mnist(withlabel=True,​ ndim=1)+from keras.datasets import mnist 
 + 
 +(x_trainy_train), (x_test, y_test) ​= mnist.load_data()
 </​code>​ </​code>​
-のように、引数に、withlabel=True,​ ndim=1と入ます。+のように、x_trainとx_testに、画像データをNumpy配列に変換済みのものを代入し、y_trainy_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プログラミングをやるときの超おすすめ本。\\

2_データ準備_keras.1509915141.txt.gz · 最終更新: 2018/10/07 (外部編集)