kersを使用して非線形回帰を実現する(2つのプラスアクティブ関数の方式)
余計なことを言わないで、コードを見てください。
以上のように、kersを使って非線形回帰を実現しました。つまり、小編集が皆さんに共有している内容です。参考にしていただければと思います。よろしくお願いします。
import keras
import numpy as np
import matplotlib.pyplot as plt
#Sequential
from keras.models import Sequential#Sequential , , ,
#Dense ,Activation
from keras.layers import Dense,Activation
from keras.optimizers import SGD
x_data=np.linspace(-0.5,0.5,200)# -0.5 0.5 200
noise=np.random.normal(0,0.02,x_data.shape)# x_data
y_data=np.square(x_data)+noise
#
#plt.scatter(x_data,y_data)
#plt.show()
#
model=Sequential()
#1-10-1,
model.add(Dense(units=10,input_dim=1,activation='relu'))#units , , y,input_dim , x
#model.add(Activation('tanh'))# tanh
model.add(Dense(units=1,input_dim=10,activation='relu'))#input_dim , 10
#model.add(Activation('tanh'))# tanh
#
sgd=SGD(lr=0.3)# 0.3,
model.compile(optimizer=sgd,loss='mse')# ,sgd , .mse
#
for step in range(5001):
#
cost=model.train_on_batch(x_data,y_data)# , loss
# 500 batch cost
if step %500==0:
print('cost:',cost)
#
W,b=model.layers[0].get_weights()# ,
print('W:',W,'b:',b)
#x_data , y_pred
y_pred=model.predict(x_data)
# s
plt.scatter(x_data,y_data)
#
plt.plot(x_data,y_pred,'r-',lw=3)#r- ,lw
plt.show()
結果:
cost: 0.0077051604
cost: 0.0004980223
cost: 0.00047812634
cost: 0.00047762066
cost: 0.00047761563
cost: 0.00047761557
cost: 0.0004776156
cost: 0.0004776156
cost: 0.0004776156
cost: 0.00047761566
cost: 0.0004776156
W: [[ 0.37828678 0.37509003 0.1847014 -0.46519393 -0.6347979 -0.70865685
0.55382997 -0.66780925 0.08229994 0.5980157 ]] b: [-0.00412499 -0.01216194 0.01939214 -0.03005166 -0.00475936 -0.00794064
-0.00015427 -0.01620528 0.08056344 -0.01741577]
以上のように、kersを使って非線形回帰を実現しました。つまり、小編集が皆さんに共有している内容です。参考にしていただければと思います。よろしくお願いします。