kersを使用して非線形回帰を実現する(2つのプラスアクティブ関数の方式)


余計なことを言わないで、コードを見てください。

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を使って非線形回帰を実現しました。つまり、小編集が皆さんに共有している内容です。参考にしていただければと思います。よろしくお願いします。