kerasプログラミングの全体図
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
kerasプログラミングの全体図 [2017/10/27] – [参考文献] adash333 | kerasプログラミングの全体図 [2018/10/07] (現在) – 外部編集 127.0.0.1 | ||
---|---|---|---|
行 1: | 行 1: | ||
===== Kerasプログラミングの全体図 ===== | ===== Kerasプログラミングの全体図 ===== | ||
+ | <wrap hi> | ||
+ | [[Kerasプログラミングの全体図]] | ||
+ | -[[(1)Kerasを使用するためのimport文]] | ||
+ | -[[(2)データ準備(Keras)]] | ||
+ | -[[(3)モデル設定(Keras)]] | ||
+ | -[[(4)モデル学習(Keras)]] | ||
+ | -[[(5)結果の出力(Keras)]] | ||
+ | -[[(6)学習結果の保存(Keras)]] | ||
+ | -[[(7)推測(Keras)]] | ||
- | 以下のような流れでプログラミング文を読んだり書いたりしていくと、分かりやすいと思います。 | + | Kerasを用いて機械学習を行う場合、以下のような流れでプログラミング文を読んだり書いたりしていくと、分かりやすいと思います。 |
実際に自前データを動かそうとするときは、ある程度、pythonの勉強と、機械学習の勉強が必要だと思われます。 | 実際に自前データを動かそうとするときは、ある程度、pythonの勉強と、機械学習の勉強が必要だと思われます。 | ||
行 7: | 行 16: | ||
< | < | ||
# train.py | # train.py | ||
- | |||
#1 Kerasを使用するためのimport文 | #1 Kerasを使用するためのimport文 | ||
- | |||
#2 データ準備(Keras) | #2 データ準備(Keras) | ||
- | |||
#3 モデル設定(Keras) | #3 モデル設定(Keras) | ||
- | |||
#4 モデル学習(Keras) | #4 モデル学習(Keras) | ||
- | |||
#5 結果の出力(Keras) | #5 結果の出力(Keras) | ||
- | |||
#6 学習結果の保存(Keras) | #6 学習結果の保存(Keras) | ||
行 27: | 行 30: | ||
# predict.py | # predict.py | ||
#7 推測(Keras) | #7 推測(Keras) | ||
- | (1)#1 Chainerを使用するためのimport文 | + | </ |
- | (2)#2 tuple_datasetによるデータの準備・設定 | + | ===== Kerasプログラミングの全体図(コード記載) ===== |
- | (3)#3 モデルの記述 | + | 上記にコードの一部を入れて、再度記載します。 |
- | class MyModel(Chain): | + | |
- | def __init__(self): | + | |
- | super(MyModel, | + | |
- | # パラメータを含む関数の宣言 | + | |
- | ) | + | |
- | def __call__(self, | + | < |
- | | + | # train.py |
- | (4)#4 モデルと最適化アルゴリズムの設定(ほぼお約束の3行) | + | #1 Kerasを使用するためのimport文 |
- | model = MyModel() | + | import keras |
- | optimizer = optimizers.Adam() | + | from keras.models import Sequential |
- | optimizer.setup(model) | + | from keras.layers import Dense, Dropout |
+ | from keras.optimizers | ||
+ | from keras.utils import np_utils | ||
+ | # その他、以下が必要になることが多い | ||
+ | from sklearn.model_selection import train_test_split | ||
+ | import numpy as np | ||
+ | from PIL import Image | ||
+ | import os | ||
- | (5)#5 学習(Trainerを利用する場合) | + | #2 データ準備(Keras) |
- | iterator | + | image_list = [] |
- | updater | + | label_list = [] |
- | trainer | + | # 画像を読み込み、リサイズ、正規化などを行い、 |
- | trainer.extend(extensions.ProgressBar()) | + | # Numpy配列に変換し、「学習用データ」と「テストデータ」を作成する。 |
+ | X_train, X_test, y_train, y_test | ||
- | trainer.run() | + | #3 モデル設定(Keras) |
+ | model = Sequential() | ||
+ | model.add(Dense(512, | ||
+ | model.add(Dropout(0.2)) | ||
+ | (以下、model.add()でモデルを加えていき、) | ||
+ | model.summary() # | ||
+ | model.compile(loss=' | ||
+ | optimizer=RMSprop(), | ||
+ | metrics=[' | ||
+ | |||
+ | #4 モデル学習(Keras) | ||
+ | history = model.fit(X_train, | ||
+ | batch_size=batch_size, | ||
+ | verbose=1, validation_data=(X_test, y_test)) | ||
- | (6)#6 結果の出力 | + | #5 結果の出力(Keras) |
+ | score = model.evaluate(X_test, | ||
+ | print(' | ||
+ | |||
+ | #6 学習結果の保存(Keras) | ||
+ | json_string = model.to_json() | ||
+ | open(' | ||
+ | model.save_weights(' | ||
+ | |||
+ | # predict.py | ||
+ | #7 推測(Keras) | ||
+ | from keras.preprocessing import image | ||
+ | import numpy as np | ||
+ | import sys | ||
+ | |||
+ | filepath = " | ||
+ | image = np.array(Image.open(filepath).convert(" | ||
+ | print(filepath) | ||
+ | image = image.reshape(1, | ||
+ | result = model.predict_classes(np.array([image / 255.])) | ||
+ | print(" | ||
</ | </ | ||
+ | ===== Kerasプログラミングの例(train.pyとpredict.py) ===== | ||
+ | C:/ | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ==== train.py ==== | ||
+ | |||
+ | < | ||
+ | <script src=" | ||
+ | </ | ||
+ | |||
+ | Jupyter Notebookでの実行結果 | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ==== predict.py ==== | ||
+ | |||
+ | < | ||
+ | <script src=" | ||
+ | </ | ||
+ | |||
+ | Jupyter Notebookでの実行結果 | ||
+ | |||
+ | {{: | ||
+ | |||
+ | とりあえず、コードをJupyter Notebook上でコピペして実行するところまででした。 | ||
+ | |||
+ | 次回から、このコードを順に解説させていただきたいと思います。 | ||
+ | |||
+ | 次:< | ||
===== 参考文献 ===== | ===== 参考文献 ===== | ||
初めてKerasプログラミングをやるときは、以下の2つの本がおすすめです。[[http:// | 初めてKerasプログラミングをやるときは、以下の2つの本がおすすめです。[[http:// | ||
\\ | \\ | ||
+ | |||
< | < | ||
行 69: | 行 139: | ||
</ | </ | ||
+ | Keras公式GitHub\\ | ||
+ | keras/ | ||
+ | Branch: | ||
+ | https:// | ||
+ | kerasのmnistのサンプルを読んでみる | ||
+ | ash8h | ||
+ | 2017年07月29日に投稿\\ | ||
+ | https:// | ||
===== 次節以降 ===== | ===== 次節以降 ===== | ||
- | MNISTを例に、一つずつ解説させていただきたいと思います。 | + | [[https:// |
いつもあまり面白くないMNISTですが、Kerasプログラミングを理解する上で避けて通れないので、頑張ってやってみたいと思います。 | いつもあまり面白くないMNISTですが、Kerasプログラミングを理解する上で避けて通れないので、頑張ってやってみたいと思います。 | ||
行 79: | 行 157: | ||
===== リンク ===== | ===== リンク ===== | ||
- | 目次 | + | 次 [[(1)Kerasを使用するためのimport文]] |
- | -[[Kerasプログラミングの全体図]] | + | |
+ | 前 [[Kerasで手書き文字認識MNIST]] | ||
+ | |||
+ | |||
+ | <wrap hi> | ||
+ | [[Kerasプログラミングの全体図]] | ||
-[[(1)Kerasを使用するためのimport文]] | -[[(1)Kerasを使用するためのimport文]] | ||
-[[(2)データ準備(Keras)]] | -[[(2)データ準備(Keras)]] | ||
行 88: | 行 171: | ||
-[[(6)学習結果の保存(Keras)]] | -[[(6)学習結果の保存(Keras)]] | ||
-[[(7)推測(Keras)]] | -[[(7)推測(Keras)]] | ||
+ | |||
+ |
kerasプログラミングの全体図.1509108136.txt.gz · 最終更新: 2018/10/07 (外部編集)