最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pytorch實現(xiàn)多項式回歸

 更新時間:2021年04月09日 17:33:03   作者:逝去〃年華  
這篇文章主要為大家詳細介紹了pytorch實現(xiàn)多項式回歸,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

pytorch實現(xiàn)多項式回歸,供大家參考,具體內(nèi)容如下

一元線性回歸模型雖然能擬合出一條直線,但精度依然欠佳,擬合的直線并不能穿過每個點,對于復雜的擬合任務需要多項式回歸擬合,提高精度。多項式回歸擬合就是將特征的次數(shù)提高,線性回歸的次數(shù)使一次的,實際我們可以使用二次、三次、四次甚至更高的次數(shù)進行擬合。由于模型的復雜度增加會帶來過擬合的風險,因此需要采取正則化損失的方式減少過擬合,提高模型泛化能力。希望大家可以自己動手,通過一些小的訓練掌握pytorch(案例中有些觀察數(shù)據(jù)格式的代碼,大家可以自己注釋掉)

# 相較于一元線性回歸模型,多項式回歸可以很好的提高擬合精度,但要注意過擬合風險
# 多項式回歸方程 f(x) = -1.13x-2.14x^2+3.12x^3-0.01x^4+0.512
import torch
import matplotlib.pyplot as plt
import numpy as np
# 數(shù)據(jù)準備(測試數(shù)據(jù))
x = torch.linspace(-2,2,50)
print(x.shape)
y = -1.13*x - 2.14*torch.pow(x,2) + 3.15*torch.pow(x,3) - 0.01*torch.pow(x,4) + 0.512
plt.scatter(x.data.numpy(),y.data.numpy())
plt.show()

# 此時輸入維度為4維
# 為了拼接輸入數(shù)據(jù),需要編寫輔助數(shù)據(jù),輸入標量x,使其變?yōu)榫仃?,使用torch.cat拼接
def features(x): # 生成矩陣
    # [x,x^2,x^3,x^4]
    x = x.unsqueeze(1)
    print(x.shape)
    return torch.cat([x ** i for i in range(1,5)], 1)
result = features(x)
print(result.shape)
# 目標公式用于計算輸入特征對應的標準輸出
# 目標公式的權(quán)重如下
x_weight = torch.Tensor([-1.13,-2.14,3.15,-0.01]).unsqueeze(1)
b = torch.Tensor([0.512])
# 得到x數(shù)據(jù)對應的標準輸出
def target(x):
    return x.mm(x_weight) + b.item()

# 新建一個隨機生成輸入數(shù)據(jù)和輸出數(shù)據(jù)的函數(shù),用于生成訓練數(shù)據(jù)

def get_batch_data(batch_size):
    # 生成batch_size個隨機的x
    batch_x = torch.randn(batch_size)
    # 對于每個x要生成一個矩陣
    features_x = features(batch_x)
    target_y = target(features_x)
    return features_x,target_y

# 創(chuàng)建模型
class PolynomialRegression(torch.nn.Module):
    def __init__(self):
        super(PolynomialRegression, self).__init__()
        # 輸入四維度 輸出一維度
        self.poly = torch.nn.Linear(4,1)

    def forward(self, x):
        return self.poly(x)

# 開始訓練模型
epochs = 10000
batch_size = 32
model = PolynomialRegression()
criterion = torch.nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(),0.001)

for epoch in range(epochs):
    print("{}/{}".format(epoch+1,epochs))
    batch_x,batch_y = get_batch_data(batch_size)
    out = model(batch_x)
    loss = criterion(out,batch_y)
    optimizer.zero_grad()
    loss.backward()
    # 更新梯度
    optimizer.step()
    if (epoch % 100 == 0):
        print("Epoch:[{}/{}],loss:{:.6f}".format(epoch,epochs,loss.item()))
    if (epoch % 1000 == 0):
        predict = model(features(x))
        print(x.shape)
        print(predict.shape)
        print(predict.squeeze(1).shape)
        plt.plot(x.data.numpy(),predict.squeeze(1).data.numpy(),"r")
        loss = criterion(predict,y)
        plt.title("Loss:{:.4f}".format(loss.item()))
        plt.xlabel("X")
        plt.ylabel("Y")
        plt.scatter(x,y)
        plt.show()

擬合結(jié)果:

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python樹的雙親存儲結(jié)構(gòu)的實現(xiàn)示例

    python樹的雙親存儲結(jié)構(gòu)的實現(xiàn)示例

    本文主要介紹了python樹的雙親存儲結(jié)構(gòu),這種存儲結(jié)構(gòu)是一種順序存儲結(jié)構(gòu),采用元素形如“[結(jié)點值,雙親結(jié)點索引]”的列表表示,感興趣的可以了解一下
    2023-11-11
  • python使用lxml xpath模塊解析XML遇到的坑及解決

    python使用lxml xpath模塊解析XML遇到的坑及解決

    這篇文章主要介紹了python使用lxml xpath模塊解析XML遇到的坑及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Python httplib模塊使用實例

    Python httplib模塊使用實例

    這篇文章主要介紹了Python httplib模塊使用實例,httplib模塊是一個底層基礎(chǔ)模塊,本文講解了httplib模塊的常用方法及使用實例,需要的朋友可以參考下
    2015-04-04
  • 快速排序的算法思想及Python版快速排序的實現(xiàn)示例

    快速排序的算法思想及Python版快速排序的實現(xiàn)示例

    快速排序算法來源于分治法的思想策略,這里我們將來為大家簡單解析一下快速排序的算法思想及Python版快速排序的實現(xiàn)示例:
    2016-07-07
  • 使用keras實現(xiàn)densenet和Xception的模型融合

    使用keras實現(xiàn)densenet和Xception的模型融合

    這篇文章主要介紹了使用keras實現(xiàn)densenet和Xception的模型融合,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • python判斷變量是否為列表的方法

    python判斷變量是否為列表的方法

    在本篇文章里小編給大家整理了關(guān)于python判斷變量是否為列表的方法,有需要的朋友們可以學習下。
    2020-09-09
  • Python猜解網(wǎng)站數(shù)據(jù)庫管理員密碼的腳本

    Python猜解網(wǎng)站數(shù)據(jù)庫管理員密碼的腳本

    這篇文章主要和大家分享一個Python腳本,可以實現(xiàn)猜解網(wǎng)站數(shù)據(jù)庫管理員的密碼。文中的示例代碼講解詳細,需要的小伙伴可以參考一下
    2022-02-02
  • 詳解Python中高階函數(shù)(map,filter,reduce,sorted)的使用

    詳解Python中高階函數(shù)(map,filter,reduce,sorted)的使用

    高階函數(shù)就是能夠把函數(shù)當成參數(shù)傳遞的函數(shù)就是高階函數(shù),換句話說如果一個函數(shù)的參數(shù)是函數(shù),那么這個函數(shù)就是一個高階函數(shù)。本文為大家詳細講解了Python中常用的四個高階函數(shù),感興趣的可以了解一下
    2022-04-04
  • 通過Python腳本+Jenkins實現(xiàn)項目重啟

    通過Python腳本+Jenkins實現(xiàn)項目重啟

    Jenkins是一個流行的開源自動化服務器,用于快速構(gòu)建、測試和部署軟件,本文主要介紹了通過Python腳本+Jenkins實現(xiàn)項目重啟,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • 7個Python中的隱藏小技巧分享

    7個Python中的隱藏小技巧分享

    Python 是每個程序員都喜歡的語言,因為它易于編碼和易于閱讀的語法。但是,你知道 python 有一些很酷的技巧可以用來讓事情變得更簡單嗎?在今天的內(nèi)容中,我將與你分享7 個你可能從未使用過的Python 技巧
    2023-03-03

最新評論

壶关县| 察哈| 咸宁市| 安义县| 武冈市| 邛崃市| 曲松县| 平武县| 旺苍县| 邓州市| 星子县| 巴林右旗| 丰宁| 容城县| 迁安市| 萨迦县| 简阳市| 新建县| 黔西| 吉木萨尔县| 宜都市| 长岛县| 普兰店市| 任丘市| 察隅县| 衡东县| 昌黎县| 资源县| 额济纳旗| 府谷县| 垦利县| 寿宁县| 龙陵县| 松原市| 恩平市| 瓦房店市| 平安县| 安阳市| 台南市| 东港市| 吉安县|