真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么使用Keras實(shí)現(xiàn)簡單線性回歸模型操作?-創(chuàng)新互聯(lián)

不懂怎么使用Keras實(shí)現(xiàn)簡單線性回歸模型操作??其實(shí)想解決這個(gè)問題也不難,下面讓小編帶著大家一起學(xué)習(xí)怎么去解決,希望大家閱讀完這篇文章后大所收獲。

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了建陽免費(fèi)建站歡迎大家使用!

神經(jīng)網(wǎng)絡(luò)可以用來模擬回歸問題 (regression),實(shí)質(zhì)上是單輸入單輸出神經(jīng)網(wǎng)絡(luò)模型,例如給下面一組數(shù)據(jù),用一條線來對(duì)數(shù)據(jù)進(jìn)行擬合,并可以預(yù)測新輸入 x 的輸出值。

一、詳細(xì)解讀

我們通過這個(gè)簡單的例子來熟悉Keras構(gòu)建神經(jīng)網(wǎng)絡(luò)的步驟:

1.導(dǎo)入模塊并生成數(shù)據(jù)

首先導(dǎo)入本例子需要的模塊,numpy、Matplotlib、和keras.models、keras.layers模塊。Sequential是多個(gè)網(wǎng)絡(luò)層的線性堆疊,可以通過向Sequential模型傳遞一個(gè)layer的list來構(gòu)造該模型,也可以通過.add()方法一個(gè)個(gè)的將layer加入模型中。layers.Dense 意思是這個(gè)神經(jīng)層是全連接層。

2.建立模型

然后用 Sequential 建立 model,再用 model.add 添加神經(jīng)層,添加的是 Dense 全連接神經(jīng)層。參數(shù)有兩個(gè),(注意此處Keras 2.0.2版本中有變更)一個(gè)是輸入數(shù)據(jù)的維度,另一個(gè)units代表神經(jīng)元數(shù),即輸出單元數(shù)。如果需要添加下一個(gè)神經(jīng)層的時(shí)候,不用再定義輸入的緯度,因?yàn)樗J(rèn)就把前一層的輸出作為當(dāng)前層的輸入。在這個(gè)簡單的例子里,只需要一層就夠了。

3.激活模型

model.compile來激活模型,參數(shù)中,誤差函數(shù)用的是 mse均方誤差;優(yōu)化器用的是 sgd 隨機(jī)梯度下降法。

4.訓(xùn)練模型

訓(xùn)練的時(shí)候用 model.train_on_batch 一批一批的訓(xùn)練 X_train, Y_train。默認(rèn)的返回值是 cost,每100步輸出一下結(jié)果。

5.驗(yàn)證模型

用到的函數(shù)是 model.evaluate,輸入測試集的x和y,輸出 cost,weights 和 biases。其中 weights 和 biases 是取在模型的第一層 model.layers[0] 學(xué)習(xí)到的參數(shù)。從學(xué)習(xí)到的結(jié)果你可以看到, weights 比較接近0.5,bias 接近 2。

Weights= [[ 0.49136472]]

biases= [ 2.00405312]

6.可視化學(xué)習(xí)結(jié)果

最后可以畫出預(yù)測結(jié)果,與測試集的值進(jìn)行對(duì)比。

二、完整代碼

import numpy as np
np.random.seed(1337) 
from keras.models import Sequential
from keras.layers import Dense
import matplotlib.pyplot as plt
 
# 生成數(shù)據(jù)
X = np.linspace(-1, 1, 200) #在返回(-1, 1)范圍內(nèi)的等差序列
np.random.shuffle(X) # 打亂順序
Y = 0.5 * X + 2 + np.random.normal(0, 0.05, (200, )) #生成Y并添加噪聲
# plot
plt.scatter(X, Y)
plt.show()
 
X_train, Y_train = X[:160], Y[:160]  # 前160組數(shù)據(jù)為訓(xùn)練數(shù)據(jù)集
X_test, Y_test = X[160:], Y[160:]  #后40組數(shù)據(jù)為測試數(shù)據(jù)集
 
# 構(gòu)建神經(jīng)網(wǎng)絡(luò)模型
model = Sequential()
model.add(Dense(input_dim=1, units=1))
 
# 選定loss函數(shù)和優(yōu)化器
model.compile(loss='mse', optimizer='sgd')
 
# 訓(xùn)練過程
print('Training -----------')
for step in range(501):
 cost = model.train_on_batch(X_train, Y_train)
 if step % 50 == 0:
  print("After %d trainings, the cost: %f" % (step, cost))
 
# 測試過程
print('\nTesting ------------')
cost = model.evaluate(X_test, Y_test, batch_size=40)
print('test cost:', cost)
W, b = model.layers[0].get_weights()
print('Weights=', W, '\nbiases=', b)
 
# 將訓(xùn)練結(jié)果繪出
Y_pred = model.predict(X_test)
plt.scatter(X_test, Y_test)
plt.plot(X_test, Y_pred)
plt.show()

當(dāng)前文章:怎么使用Keras實(shí)現(xiàn)簡單線性回歸模型操作?-創(chuàng)新互聯(lián)
地址分享:http://weahome.cn/article/dehicd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部