keras速度複習 非線性回歸

2021-09-11 23:43:23 字數 1510 閱讀 2031

import keras

import numpy as np

import matplotlib.pyplot as plt

from keras.models import sequential

from keras.layers import dense,activation#啟用函式

from keras.optimizers import sgd

#生成200個隨機點,區間[-0.5,0.5]

x_data=np.linspace(-0.5,0.5,200)

noise=np.random.normal(0,0.02,x_data.shape)

y_data=np.square(x_data)+noise

#顯示隨機點

plt.scatter(x_data,y_data)

plt.show()

#構建乙個順序模型

model=sequential()

#在模型中新增乙個全連線層(輸出一維,輸入一維)

#1-10-1,還要再加啟用函式!超強大的sigmod!

model.add(dense(units=10,input_dim=1))#第一層10出1進

model.add(activation('tanh'))#這是第一種啟用函式寫法,下面第二種

model.add(dense(units=1,activation='tanh'))#第二層1出10進(不寫input會自動連線上一層輸出)

#定義優化演算法(learning ratio學習率改為0.3)

sgd=sgd(lr=0.3)

#sgd:隨機梯度下降法stochastic gradient descent

#mse:均方誤差mean squared error

model.compile(optimizer=sgd,loss='mse')

#訓練3001個批次,每次都重複使用x_data,y_data中的資料

for step in range(3001):

#每次訓練乙個批次,隨機梯度每次都更新(批量梯度要全部掃一次)

cost=model.train_on_batch(x_data,y_data)

#每五百個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)

#顯示隨機點:x座標,y座標

plt.scatter(x_data,y_data)

#顯示**結果:x座標,y座標,顏色red,線粗3

plt.plot(x_data,y_pred,'r-',lw=3)

plt.show()

Keras 實現非線性回歸

import keras import numpy as np import matplotlib.pyplot as plt sequential按順序構成的模型 from keras.models import sequential dense全連線層 from keras.layers imp...

keras非線性回歸實現

這次非線性回歸實現,相比較於線性回歸,多新增了隱藏層層數,並且需要使用不同型別的啟用函式來進行適應非線性,分別使用了tanh和relu來顯示結果 非線性回歸 import keras import numpy as np import matplotlib.pyplot as plt 按順序構成的模...

Keras框架作線性回歸和非線性回歸

import keras import numpy as np import matplotlib.pyplot as plt 按順序構成的模型 from keras.models import sequential dense全連線層 from keras.layers import dense ...