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

2021-08-11 09:20:04 字數 3514 閱讀 2605

import keras

import numpy as np

import matplotlib.pyplot as plt

#按順序構成的模型

from keras.models import sequential

#dense全連線層

from keras.layers import dense

#構建乙個順序模型

model=sequential()

#在模型中新增乙個全連線層

#units是輸出維度,input_dim是輸入維度(shift+兩次tab檢視函式引數)

model.add(dense(units=1,input_dim=1))

#編譯模型

model.compile(optimizer='sgd',loss='mse') #optimizer引數設定優化器,loss設定目標函式

#訓練模型

for step in range(3001):

#每次訓練乙個批次

cost=model.train_on_batch(x_data,y_data)

#每500個batch列印乙個cost值

if step%500==0:

print('cost:',cost)

#列印權值和偏置值

w,b=model.layers[0].get_weights() #layers[0]只有乙個網路層

print('w:',w,'b:',b)

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

#加啟用函式的方法1:mode.add(activation(''))

from keras.optimizers import sgd

from keras.layers import dense,activation

import numpy as np

np.random.seed(0)

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

#構建乙個順序模型

model=sequential()

#在模型中新增乙個全連線層

#units是輸出維度,input_dim是輸入維度(shift+兩次tab檢視函式引數)

#輸入1個神經元,隱藏層10個神經元,輸出層1個神經元

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

model.add(activation('tanh')) #增加非線性啟用函式

model.add(dense(units=1)) #預設連線上一層input_dim=10

model.add(activation('tanh'))

#定義優化演算法(修改學習率)

defsgd=sgd(lr=0.3)

#編譯模型

model.compile(optimizer=defsgd,loss='mse') #optimizer引數設定優化器,loss設定目標函式

#訓練模型

for step in range(3001):

#每次訓練乙個批次

cost=model.train_on_batch(x_data,y_data)

#每500個batch列印乙個cost值

if step%500==0:

print('cost:',cost)

#列印權值和偏置值

w,b=model.layers[0].get_weights() #layers[0]只有乙個網路層

print('w:',w,'b:',b)

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

#加啟用函式的方法2:model.add(dense(units=10,input_dim=1,activation=' '))

from keras.optimizers import sgd

from keras.layers import dense,activation

#構建乙個順序模型

model=sequential()

#在模型中新增乙個全連線層

#units是輸出維度,input_dim是輸入維度(shift+兩次tab檢視函式引數)

#輸入1個神經元,隱藏層10個神經元,輸出層1個神經元

model.add(dense(units=10,input_dim=1,activation='relu')) #增加非線性啟用函式

model.add(dense(units=1,activation='relu')) #預設連線上一層input_dim=10

#定義優化演算法(修改學習率)

defsgd=sgd(lr=0.3)

#編譯模型

model.compile(optimizer=defsgd,loss='mse') #optimizer引數設定優化器,loss設定目標函式

#訓練模型

for step in range(3001):

#每次訓練乙個批次

cost=model.train_on_batch(x_data,y_data)

#每500個batch列印乙個cost值

if step%500==0:

print('cost:',cost)

#列印權值和偏置值

w,b=model.layers[0].get_weights() #layers[0]只有乙個網路層

print('w:',w,'b:',b)

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

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 from keras.layers import dense,activation 啟用函式 fro...