kerasはGoogleで開発され、GoogleのTensorFlowをバックエンドで用いるAPIラッパーで、コーディングが簡単になります。
Anacondaの場合、conda install numpy
、conda install matplotlib
、conda install pandas
、conda install keras-gpu
等でインストールしてください。condaでインストールできない場合は、pip install ternsorflow keras
のようにpipでインストールしてください
#%matplotlib inline
import keras
from keras.models import Sequential
from keras.layers import Dense, Activation
import numpy as np
import matplotlib.pyplot as plt
1.データの作成
x = data = np.linspace(1, 2, 200) # 等差数列 始点、終点、配列の長さ
y = x*4 + np.random.randn(*x.shape) * 0.3 # 正規分布の乱数生成
print(x[0:6]) # 最初のデータをサンプル表示
print(y[0:6]) # 最初のデータをサンプル表示
2.モデルの構築(簡単なSequentialモデルで)
model = Sequential()
model.add(Dense(1, # NNのレイヤーを追加します 出力は1
input_dim = 1, # 入力 1次元(ノード)
activation = 'linear')) #線形 単純に係数をとバイアスを加える
# 確率的勾配降下法(Stochastic Gradient Descent)
# 正解からの誤差が大きいほど逆方向により大きく調整し最適化を図る
# トレーニングに用いるデータをランダムにシャッフルして与える
model.compile(optimizer = 'sgd', # 訓練プロセスを作ります
loss = 'mse', # 損失関数として、平均二乗誤差mean_squred_errorを指定
metrics = ['mse'])
weights = model.layers[0].get_weights()
w_init = weights[0][0][0]
b_init = weights[1][0]
print('Linear regression model is initialized with weights w: %.2f, b: %.2f' % (w_init, b_init))
3.モデルにデータを学習させる
model.fit(x, y, batch_size = 1, epochs = 30, shuffle = False)
4.モデルを評価する
weights = model.layers[0].get_weights()
w_final = weights[0][0][0]
b_final = weights[1][0]
print('Linear regression model is trained to have weight w: %.2f, b: %.2f' % (w_final, b_final))
predict = model.predict(data)
plt.plot(data, predict, 'r', # 予測値を赤線で
data , y, 'g.') # yのデータを緑のドットで
plt.show()