「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfrastructure.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。
散布図
-[[戻る>ビジネス インテリジェンス(BI)]]
--[[CRISP-DM>データマイニング(DM)- CRISP-DM]]
--[[Excel>データマイニング(DM)- Excel]]
--[[KNIME>データマイニング(DM)- KNIME]]
--[[Python>データマイニング(DM)- Python]]
--Python - DL
---[[Python - DNN>データマイニング(DM)- Python - DNN]]
---[[Python - RNN>データマイニング(DM)- Python - RNN]]
---[[Python - CNN>データマイニング(DM)- Python - CNN]]
--[[DataSet>データマイニング(DM)- DataSet]]

*目次 [#p9f45a9f]
#contents

*概要 [#bff75e2e]
[[TensorFlow・Keras]]を使ったPythonでの[[Deep Learning>深層学習(deep learning)]]

*詳細 [#e0bc9e5a]

**準備 [#g9d39755]

***on Jupyter on Docker [#z4680a02]
-イメージを変えて[[コチラ>PySpark#ffe40eef]]の例と同様にできる。
-使用するイメージは、tensorflow/tensorflow:latest-jupyter

***インストール ~ 初期化 [#jc917721]

-インストール
 !pip install --upgrade pip

--tensorflow
 !pip install -U tensorflow

--keras
 !pip install -U keras

--その他~
色々、足りてない。
 !pip install numpy
 !pip install pandas
 !pip install seaborn
 !pip install statsmodels
 !pip install scikit-learn
 !pip install opencv-python

-警告の非表示
 import warnings
 warnings.filterwarnings('ignore')

-インポート

--基本的なライブラリ~
[[NumPy]], [[Pandas]], [[Matplotlib]]
 import pandas as pd
 import numpy as np
 import matplotlib.pyplot as plt
 %matplotlib inline

--TensorFlow
 import tensorflow as tf
 from tensorflow.keras.layers import BatchNormalization
 print(tf.__version__)

--Keras
 import keras
 print(keras.__version__)
 # モデル定義
 from keras.models import Model, Sequential, model_from_json
 from keras.layers import Dense, Input, Activation, Flatten, Dropout, LSTM
 from keras.layers.convolutional import Conv2D
 from keras.layers.pooling import MaxPool2D
 from keras.callbacks import EarlyStopping, ModelCheckpoint
 from keras import optimizers
 from keras.optimizers import SGD, Adam
 # その他
 from keras.applications.vgg16 import VGG16
 from keras.utils import np_utils

--[[scikit-learn]]
 from sklearn import metrics
 from sklearn.metrics import confusion_matrix as cm
 from sklearn.model_selection import train_test_split

--opencv-python

---import
 import cv2 # OpenCV

---以下のエラーになる場合、~
「cannot open shared object file: No such file or directory」~
以下のコマンドを[[Terminal>Jupyter Notebook#h0b79990]]から実行する。
 apt-get update && apt-get upgrade -y
 apt-get install -y libgl1-mesa-dev
 apt-get install -y libopencv-dev

--その他
 from statsmodels.tsa.seasonal import seasonal_decompose

**共通 [#q344050b]

***[[勾配降下法>ニューラルネットワーク(学習)#v7a3cd9d]]アルゴリズムの選択 [#d4ef6dca]

-SGD
--[[概要・欠点>深層学習のテクニック#o2fe1f26]]
--コード~
-SGD~
lr:学習率(0以上のfloat
 optimizer = optimizers.SGD(lr=0.01)

-MomentumSGD
--[[概要・欠点>深層学習のテクニック#afd9f568]]
--コード~
-MomentumSGD~
SGDのコードに「momentum」(慣性項の係数(0以上のF)を追加。
 optimizer = optimizers.SGD(lr=0.01, momentum=0.9)

-NesterovAG~
(Nesterov Accelerated Gradient)~
--[[概要・欠点>深層学習のテクニック#ja838935]]
--コード~
MomentumSGDのコードに「nesterov=True」を追加。
 optimizer = optimizers.SGD(lr=0.01, momentum=0.9, nesterov=True)

-AdaGrad~
--[[概要・欠点>深層学習のテクニック#u12d8d2f]]
--コード~
デフォルト・パラメタが推奨
---lr     :学習率(0以上のfloat
---epsilon:分母の最小値(0以上のfloat
---decay  :学習率減衰(0以上のfloat
--lr     :学習率(0以上のfloat
--epsilon:分母の最小値(0以上のfloat
--decay  :学習率減衰(0以上のfloat
 optimizer = optimizers.Adagrad(lr=0.01, epsilon=None, decay=0.0)

-RMSprop~
(Root Mean Square Propagation)
--[[概要・欠点>深層学習のテクニック#kdd7cbe0]]
--コード~
---AdaGradのコードに「rho」(指数移動平均)を追加。
---学習率以外はデフォルト・パラメタが推奨
--AdaGradのコードに「rho」(指数移動平均)を追加。
--学習率以外はデフォルト・パラメタが推奨
 optimizer = optimizers.RMSprop(lr=0.001, rho=0.9, epsilon=None, decay=0.0)

-AdaDelta
--[[概要・欠点>深層学習のテクニック#dc5e4977]]
--コード~
---AdaGradのコードに「rho」(指数移動平均)を追加。
---デフォルト・パラメタが推奨
--AdaGradのコードに「rho」(指数移動平均)を追加。
--デフォルト・パラメタが推奨
 optimizer = optimizers.Adadelta(lr=1.0, rho=0.95, epsilon=None, decay=0.0)

-Adam~
(ADAptive Moment estimation)
--[[概要・欠点>深層学習のテクニック#z75dbbb3]]
--コード~
---beta_1 :MomentumSGDのmomentum
---beta_2 :AdaGradのrho
---amsgrad:AMSGradを適用するかどうか。
--beta_1 :MomentumSGDのmomentum
--beta_2 :AdaGradのrho
--amsgrad:AMSGradを適用するかどうか。
 optimizer = optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=None, decay=0.0, amsgrad=False)

***[[過学習を抑止する手法>深層学習のテクニック#f5d40509]] [#c8642902]
-[[データ正規化>データマイニング(DM)- CRISP-DM#v9d19242]]

-重みの初期化

-早期終了(early stopping)

--EarlyStoppingクラス
---monitor :監視する値
---patience:指定[[エポック>ニューラルネットワーク(学習)#t183c375]]数の間、改善がない場合、学習を停止
---mode    :収束判定(auto: 自動, min: 最小時, max: 最大時)
---verbose :標準出力で通知をするか否か
 es = EarlyStopping(monitor='val_loss', patience=5, mode='min', verbose=0)
 hist = model.fit(x_train_std , y_train,
                  validation_data=(x_test_std, y_test),
                  batch_size=batch_size,
                  epochs=n_epoch,
                  verbose=1,
                  callbacks=[es]) # EarlyStoppingを適用

--ModelCheckpointクラス~
検証誤差が最も低い状態のモデルを保存
---monitor       :監視する値(デフォルト: val_loss)
---mode          :収束判定(auto: 自動, min: 最小時, max: 最大時)
---verbose       :標準出力で通知をするか否か
---filepath      :モデルを保存するファイルパス
---save_best_only:最良の状態のモデルのみを保存するかどうか(bool)
 mc = ModelCheckpoint(monitor='val_loss', mode='min', verbose=1, filepath='./dl4', save_best_only=True)
 hist = model.fit(x_train_std , y_train,
                  validation_data=(x_test_std, y_test),
                  batch_size=batch_size,
                  epochs=n_epoch,
                  verbose=1,
                  callbacks=[mc]) # ModelCheckpointを適用

-バッチ正規化(Batch Normalization)
 model.add(BatchNormalization())

-ドロップアウト(Dropout)~
最終層より前に以下を追加。
 # 無効化比率0.5のDropout
 model.add(Dropout(rate=0.5))

-[[CNNの場合、>データマイニング(DM)- Python - CNN#yb34decb]]
--データ拡張(data augmentation)
--バッチ正規化(Batch Normalization)

***モデルの保存と復元 [#b4446374]
-モデルの保存
 # モデルはjson形式
 json_string = model.to_json()
 with open('mnist.model', 'w') as f:
     f.write(json_string)
 # パラメータはhdf5形式
 model.save_weights('param.hdf5')

-モデルの復元~
復元後、再度コンパイルが必要になる。
 # モデルはjson形式
 with open('mnist.model', 'r') as f:
     json_string = f.read()
 model = model_from_json(json_string)
 # パラメータはhdf5形式
 model.load_weights('param.hdf5')

**次のステップ [#y53030a2]
***[[Python - DNN>データマイニング(DM)- Python - DNN]] [#hcc4b3ee]
***[[Python - RNN>データマイニング(DM)- Python - RNN]] [#x589056a]
***[[Python - CNN>データマイニング(DM)- Python - CNN]] [#w55aca5f]

***[[on Azure Machine Learning>https://techinfoofmicrosofttech.osscons.jp/index.php?Azure%20Machine%20Learning%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB]] [#e9f9e334]


*参考 [#h7e27aca]

**[[scikit-learn]] [#w7ee6c9b]
**[[TensorFlow・Keras]] [#f12c56ee]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS