3 使用Keras 神經網路來擬合非線性模型

2021-09-29 08:27:13 字數 3339 閱讀 4300

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個-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= x_data**2 + noise

y_data = np.square(x_data)

+ noise # 效果與上面一致

# 顯示隨機點

# 建立乙個順序模型

model = sequential(

)# 1-10-1: 加入乙個隱藏層(10個神經元):來擬合更加複雜的線性模型。新增啟用函式,來計算函式的非線性

model.add(dense(units=

10, input_dim=

1, activation=

'relu'))

# 全連線層:輸入一維資料,輸出10個神經元

# model.add(activation('tanh')) # 也可以直接在dense裡面加啟用函式

model.add(dense(units=

1, activation=

'tanh'))

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

# 自定義優化器sdg , 學習率預設是0.01(太小,導致要迭代好多次才能較好的擬合資料)

sgd = sgd(lr=

0.3)

model.

compile

(optimizer=sgd, loss=

'mse'

)# 訓練3000次資料

for step in

range

(3001):

cost = model.train_on_batch(x_data, y_data)

if step%

500==0:

print

('cost: '

,cost)

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

y_pred = model.predict(x_data)

# 顯示隨機點

# sequential按順序構成的模型

from keras.models import sequential

# dense全連線層

from keras.layers import dense,activation

from keras.optimizers import sgd

# 使用numpy生成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= x_data**2 + noise

y_data = np.square(x_data)

+ noise # 效果與上面一致

# 顯示隨機點

plt.scatter(x_data, y_data)

plt.show(

)# 建立乙個順序模型

model = sequential(

)# 1-10-1: 加入乙個隱藏層(10個神經元):來擬合更加複雜的線性模型。新增啟用函式,來計算函式的非線性

model.add(dense(units=

10, input_dim=

1, activation=

'relu'))

# 全連線層:輸入一維資料,輸出10個神經元

# model.add(activation('tanh')) # 也可以直接在dense裡面加啟用函式

model.add(dense(units=

1, activation=

'tanh'))

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

# 自定義優化器sdg , 學習率預設是0.01(太小,導致要迭代好多次才能較好的擬合資料)

sgd = sgd(lr=

0.3)

model.

compile

(optimizer=sgd, loss=

'mse'

)# 訓練3000次資料

for step in

range

(3001):

cost = model.train_on_batch(x_data, y_data)

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(

)

Keras 神經網路構建學習

keras 是簡單易用 高效強大的神經網路庫,底層計算可基於 tensorflow 或 theano 平台實現。本篇將詳細介紹 keras 模型構建的具體步驟。通過閱讀本篇內容您將了解到 keras 模型構建的主要步驟 keras 神經網路搭建的一般過程 keras 模型構建主要包括5個步驟 定義 ...

神經網路的keras實現

keras是構建在tensorflow基礎上的python第三方庫,專門用於神經網路的構建與計算,同時還整合了scikit learn庫,使得可以在神經網路的構建中運用機器學習的方法。現在就用keras來構建之前構建過的神經網路。實現 首先匯入所需要的包 from keras.models impo...

Keras實現神經網路步驟

from keras.models import sequential,model from keras.layers import dense,activation,input input input shape 784,x1 dense 64,activation relu input 第一根隱...