学習モデル 第19回 人工知能
# Keras読込
from keras.models import Sequential
from keras.layers import Dense
from keras.wrappers.scikit_learn import KerasRegressor
# モデル生成用関数
def reg_model():
reg = Sequential()
reg.add(Dense(10, input_dim=len(x_cols), activation='relu'))
reg.add(Dense(16, activation='relu'))
reg.add(Dense(1))
reg.compile(loss='mean_squared_error', optimizer='adam', metrics=['accuracy'])
reg.summary()
return reg
# モデルの取得
model = KerasRegressor(build_fn=reg_model, epochs=200, batch_size=16, verbose=0)
# 学習
model.fit(X_train, y_train)
# スコア(参考値)
model.score(X_test, y_test)
from keras.models import Sequential
from keras.layers import Dense
from keras.wrappers.scikit_learn import KerasRegressor
# モデル生成用関数
def reg_model():
reg = Sequential()
reg.add(Dense(10, input_dim=len(x_cols), activation='relu'))
reg.add(Dense(16, activation='relu'))
reg.add(Dense(1))
reg.compile(loss='mean_squared_error', optimizer='adam', metrics=['accuracy'])
reg.summary()
return reg
# モデルの取得
model = KerasRegressor(build_fn=reg_model, epochs=200, batch_size=16, verbose=0)
# 学習
model.fit(X_train, y_train)
# スコア(参考値)
model.score(X_test, y_test)
ここが核。
今まで用意してきたデータ。
次は計算式です。
ここも理解が薄くて、よくわかっていない。
最初の
def reg_model():
ここは関数の宣言。ref_modelで呼び出せるようにしてる。
で、中身です。
reg = Sequential()
regは、シーケンシャルですよと宣言していますが、シーケンシャルの意味が分かりません。
ここも定義で。
「シーケンシャルは人工知能の設計図のこと」
この解釈で大体、いいとは思う。
次の行
reg.add(Dense(10, input_dim=len(x_cols), activation='relu'))
最初の reg.add は、 さきほど書いた定義に合わせて言うと
「regという人工知能の設計図に書き加えるよ!」と言ってます。
書き加える内容は、カッコの中です。
カッコの中を見ます。
Dense(10, input_dim=len(x_cols), activation='relu')
最初にDense(10,~~~)とありますね。
これは、10個のニューラルを用意することを宣言ですね。
ニューラルは、前に書いたこれ↓
この画像の右側の丸を10個とするわけです。
で次に、input_dim=len(x_cols)は、入力層のニューラルの数を指定しています。
当然ここでは、x_colsの要素数分だけニューラルが必要ですね。
なので、lenで要素数を出しています。
次に、activation='relu'です。
これは、活性化関数と言いますが、・・・・計算の仕方を指定するという見方でいいかもしれません。
ここでは、reluと指定してます。
他にもsoftmax, sigmoidとかある。
次の行
reg.add(Dense(16, activation='relu'))
また同じように見えますが、inputがありません。
これは中間層です。
この真ん中↓
今度は、ニューラルは、16個だそうです。
そして出力層↓
reg.add(Dense(1))
ニューラルは、1個。つまり答えがここに来ます。
次の行
reg.compile(loss='mean_squared_error', optimizer='adam', metrics=['accuracy'])
これは、計算で誤差が出た場合、修正の方法を指定しています。
これ全般、よくわかっていないので、このままでいいのでは?と思っています。
損失関数というらしいです。
次の行
reg.summary()
これ最初分からないかったんですが、ログの出力でした。
これを入れると画面にこれが表示されます。
無かったら、表示はされません。計算に影響しません。
最後が
return reg
これは、計算終わったデータを呼び出し元に返してます。
ここまでがdefで宣言したreg_model
次の行
# モデルの取得
model = KerasRegressor(build_fn=reg_model, epochs=200, batch_size=16, verbose=0)
model = KerasRegressor(build_fn=reg_model, epochs=200, batch_size=16, verbose=0)
さっきまでは、モデルの中を構築して計算式を書いていきました。モデル自体の設定です。
中の解説を。KerasRegressorというのは、カッコで書かれてる設定のモデルに使うよ!と宣言みたいなもんです。
build_fn
built_fnというのは、計算するモデルを指定します。
さっき、def reg_model()という名前で書きましたね。
なので、built_fn = ref_model
次のepochs
これは、回数です。学習の回数を設定できます。このソースでは200回繰り返し学習。
ここは、上げすぎると過学習と言っても、予測が悪化することもあります。
次のbatch_size
これは、数字が大きければ、メモリを消費し速くなるらしい。 したことないからわからない。
verboseは、、、分からない。なんだろう?
いよいよ学習ですね。これです↓
# 学習
model.fit(X_train, y_train)
model.fit(X_train, y_train)
これは、学習です。fitはパラーメータと言いましたが、そのとおりで、
X_trainにあるデータを何か計算して答えがy_trainになるパラメーターを探します。
次の行
# スコア(参考値)
model.score(X_test, y_test)
model.score(X_test, y_test)
さっき学習したので、X_testを試しにやってみて、y_testになるかを検証します。
このscoreは次回の記事にちょっと絡みます。
一応、ここまで
コメント
0 件のコメント :
コメントを投稿