Keras 實現非線性回歸

2021-08-21 05:29:52 字數 1648 閱讀 1978

import keras

import numpy as np

import matplotlib.pyplot as plt

# sequential按順序構成的模型

from keras.models import sequential

# dense全連線層

from keras.layers import dense,activation

from keras.optimizers import sgd

# 使用numpy生成200個隨機點 

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, 兩種新增啟用函式的方法

model.add(dense(units=10,input_dim=1,activation='tanh'))

# model.add(activation('tanh'))

model.add(dense(units=1,activation='tanh'))

# model.add(activation('tanh'))

# 定義優化演算法

sgd = sgd(lr=0.3)

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

# mse:mean squared error,均方誤差

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

# 訓練3001個批次

for step in range(3001):

# 每次訓練乙個批次

cost = model.train_on_batch(x_data,y_data)

# 每500個batch列印一次cost值

if step % 500 == 0:

print('cost:',cost)

# x_data輸入網路中,得到**值y_pred

y_pred = model.predict(x_data)

# 顯示隨機點

plt.scatter(x_data,y_data)

# 顯示**結果

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

plt.show()

cost: 0.12991342

cost: 0.005067909

cost: 0.0036316854

cost: 0.0016141604

cost: 0.0006263832

cost: 0.00053478405

cost: 0.00050455006

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 ...

keras速度複習 非線性回歸

import keras import numpy as np import matplotlib.pyplot as plt from keras.models import sequential from keras.layers import dense,activation 啟用函式 fro...