老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

PyTorch如何搭建一維線性回歸模型-創(chuàng)新互聯(lián)

這篇文章主要介紹了PyTorch如何搭建一維線性回歸模型,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)建站專注于桐城企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè),商城建設(shè)。桐城網(wǎng)站建設(shè)公司,為桐城等地區(qū)提供建站服務(wù)。全流程按需定制設(shè)計,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)

PyTorch搭建一維線性回歸模型

1)一維線性回歸模型的理論基礎(chǔ)

給定數(shù)據(jù)集PyTorch如何搭建一維線性回歸模型,線性回歸希望能夠優(yōu)化出一個好的函數(shù)PyTorch如何搭建一維線性回歸模型,使得PyTorch如何搭建一維線性回歸模型能夠和PyTorch如何搭建一維線性回歸模型盡可能接近。

如何才能學(xué)習(xí)到參數(shù)PyTorch如何搭建一維線性回歸模型PyTorch如何搭建一維線性回歸模型呢?很簡單,只需要確定如何衡量PyTorch如何搭建一維線性回歸模型PyTorch如何搭建一維線性回歸模型之間的差別,我們一般通過損失函數(shù)(Loss Funciton)來衡量:PyTorch如何搭建一維線性回歸模型。取平方是因為距離有正有負(fù),我們于是將它們變?yōu)槿钦摹_@就是著名的均方誤差。我們要做的事情就是希望能夠找到PyTorch如何搭建一維線性回歸模型PyTorch如何搭建一維線性回歸模型,使得:

PyTorch如何搭建一維線性回歸模型

PyTorch如何搭建一維線性回歸模型

均方差誤差非常直觀,也有著很好的幾何意義,對應(yīng)了常用的歐式距離。現(xiàn)在要求解這個連續(xù)函數(shù)的最小值,我們很自然想到的方法就是求它的偏導(dǎo)數(shù),讓它的偏導(dǎo)數(shù)等于0來估計它的參數(shù),即:

PyTorch如何搭建一維線性回歸模型

PyTorch如何搭建一維線性回歸模型

求解以上兩式,我們就可以得到最優(yōu)解。

2)代碼實現(xiàn)

首先,我們需要“制造”出一些數(shù)據(jù)集:

import torch
import matplotlib.pyplot as plt
 
 
x = torch.unsqueeze(torch.linspace(-1, 1, 100), dim=1)
y = 3*x + 10 + torch.rand(x.size())
# 上面這行代碼是制造出接近y=3x+10的數(shù)據(jù)集,后面加上torch.rand()函數(shù)制造噪音
 
# 畫圖
plt.scatter(x.data.numpy(), y.data.numpy())
plt.show()

我們想要擬合的一維回歸模型是PyTorch如何搭建一維線性回歸模型。上面制造的數(shù)據(jù)集也是比較接近這個模型的,但是為了達(dá)到學(xué)習(xí)效果,人為地加上了torch.rand()值增加一些干擾。

上面人為制造出來的數(shù)據(jù)集的分布如下:

PyTorch如何搭建一維線性回歸模型

有了數(shù)據(jù),我們就要開始定義我們的模型,這里定義的是一個輸入層和輸出層都只有一維的模型,并且使用了“先判斷后使用”的基本結(jié)構(gòu)來合理使用GPU加速。

class LinearRegression(nn.Module):
  def __init__(self):
    super(LinearRegression, self).__init__()
    self.linear = nn.Linear(1, 1) # 輸入和輸出的維度都是1
  def forward(self, x):
    out = self.linear(x)
    return out
 
if torch.cuda.is_available():
  model = LinearRegression().cuda()
else:
  model = LinearRegression()

然后我們定義出損失函數(shù)和優(yōu)化函數(shù),這里使用均方誤差作為損失函數(shù),使用梯度下降進(jìn)行優(yōu)化:

criterion = nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=1e-2)

接下來,開始進(jìn)行模型的訓(xùn)練。

num_epochs = 1000
for epoch in range(num_epochs):
  if torch.cuda.is_available():
    inputs = Variable(x).cuda()
    target = Variable(y).cuda()
  else:
    inputs = Variable(x)
    target = Variable(y)
 
  # 向前傳播
  out = model(inputs)
  loss = criterion(out, target)
 
  # 向后傳播
  optimizer.zero_grad() # 注意每次迭代都需要清零
  loss.backward()
  optimizer.step()
 
  if (epoch+1) %20 == 0:
    print('Epoch[{}/{}], loss:{:.6f}'.format(epoch+1, num_epochs, loss.data[0]))

首先定義了迭代的次數(shù),這里為1000次,先向前傳播計算出損失函數(shù),然后向后傳播計算梯度,這里需要注意的是,每次計算梯度前都要記得將梯度歸零,不然梯度會累加到一起造成結(jié)果不收斂。為了便于看到結(jié)果,每隔一段時間輸出當(dāng)前的迭代輪數(shù)和損失函數(shù)。

接下來,我們通過model.eval()函數(shù)將模型變?yōu)闇y試模式,然后將數(shù)據(jù)放入模型中進(jìn)行預(yù)測。最后,通過畫圖工具matplotlib看一下我們擬合的結(jié)果,代碼如下:

model.eval()
if torch.cuda.is_available():
  predict = model(Variable(x).cuda())
  predict = predict.data.cpu().numpy()
else:
  predict = model(Variable(x))
  predict = predict.data.numpy()
plt.plot(x.numpy(), y.numpy(), 'ro', label='Original Data')
plt.plot(x.numpy(), predict, label='Fitting Line')
plt.show()

其擬合結(jié)果如下圖:

PyTorch如何搭建一維線性回歸模型

附上完整代碼:

# !/usr/bin/python
# coding: utf8
# @Time  : 2018-07-28 18:40
# @Author : Liam
# @Email  : luyu.real@qq.com
# @Software: PyCharm
#            .::::.
#           .::::::::.
#           :::::::::::
#         ..:::::::::::'
#        '::::::::::::'
#         .::::::::::
#      '::::::::::::::..
#         ..::::::::::::.
#        ``::::::::::::::::
#        ::::``:::::::::'    .:::.
#        ::::'  ':::::'    .::::::::.
#       .::::'   ::::   .:::::::'::::.
#      .:::'    ::::: .:::::::::' ':::::.
#      .::'    :::::.:::::::::'   ':::::.
#     .::'     ::::::::::::::'     ``::::.
#   ...:::      ::::::::::::'       ``::.
#   ```` ':.     ':::::::::'         ::::..
#            '.:::::'          ':'````..
#           美女保佑 永無BUG
 
import torch
from torch.autograd import Variable
import numpy as np
import random
import matplotlib.pyplot as plt
from torch import nn
 
 
x = torch.unsqueeze(torch.linspace(-1, 1, 100), dim=1)
y = 3*x + 10 + torch.rand(x.size())
# 上面這行代碼是制造出接近y=3x+10的數(shù)據(jù)集,后面加上torch.rand()函數(shù)制造噪音
 
# 畫圖
# plt.scatter(x.data.numpy(), y.data.numpy())
# plt.show()
class LinearRegression(nn.Module):
  def __init__(self):
    super(LinearRegression, self).__init__()
    self.linear = nn.Linear(1, 1) # 輸入和輸出的維度都是1
  def forward(self, x):
    out = self.linear(x)
    return out
 
if torch.cuda.is_available():
  model = LinearRegression().cuda()
else:
  model = LinearRegression()
 
criterion = nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=1e-2)
 
num_epochs = 1000
for epoch in range(num_epochs):
  if torch.cuda.is_available():
    inputs = Variable(x).cuda()
    target = Variable(y).cuda()
  else:
    inputs = Variable(x)
    target = Variable(y)
 
  # 向前傳播
  out = model(inputs)
  loss = criterion(out, target)
 
  # 向后傳播
  optimizer.zero_grad() # 注意每次迭代都需要清零
  loss.backward()
  optimizer.step()
 
  if (epoch+1) %20 == 0:
    print('Epoch[{}/{}], loss:{:.6f}'.format(epoch+1, num_epochs, loss.data[0]))
model.eval()
if torch.cuda.is_available():
  predict = model(Variable(x).cuda())
  predict = predict.data.cpu().numpy()
else:
  predict = model(Variable(x))
  predict = predict.data.numpy()
plt.plot(x.numpy(), y.numpy(), 'ro', label='Original Data')
plt.plot(x.numpy(), predict, label='Fitting Line')
plt.show()

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“PyTorch如何搭建一維線性回歸模型”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!


網(wǎng)頁名稱:PyTorch如何搭建一維線性回歸模型-創(chuàng)新互聯(lián)
URL鏈接:http://www.xueling.net.cn/article/jegoi.html

其他資訊

在線咨詢
服務(wù)熱線
服務(wù)熱線:028-86922220
TOP
主站蜘蛛池模板: 成人91网站| 美女h片| 亚洲AV无码成人影片在线观看 | avv天堂网 | 蜜桃视频麻豆 | 日本不卡在线一区二区三区视频 | 91rb成人 | 免费看片A级毛片免费看 | 91av社区 | 国产精品免费高清在线观看 | 男生戳美女两腿中间那个视频 | 在线二区三区 | 亚洲欧洲日韩在线 | 国产精品久久久久影院色老大 | 亚洲中文字幕无码中文 | 少妇人妻无码永久免费视频 | 把腿张开老子cao烂你 | 一级特黄色毛片 | 久久另类ts人妖一区二区 | 这里只有久久精品 | 精品中文日本三级 | 日韩人妻中文无码一区二区 | 中文字幕一线产区和二线区的区别 | 无码专区丰满人妻斩六十路 | 91福利精品第一导航禁漫天堂 | 亚洲AV日韩AV永久无码绿巨人 | 少妇人妻真实偷人精品视频 | 国产精品久久久高清免费 | 精品成av人一区二区三区 | 综合成人在线 | 美女啪啪一区二区三区 | 又粗又大又硬毛片免费看 | 日本婷婷 | 男女啪啪做爰高潮全过程短片 | 九九热黄色片 | 欧美成在线视频 | 久久丫精品系列 | 日本中文字幕一区二区有码在线 | 亚洲精品专区一区8v | 国产欧洲精品色在线 | 久亚洲一线产区二线产区三线区 |