日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Pytorch:全连接神经网络-MLP回归

發布時間:2023/12/20 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pytorch:全连接神经网络-MLP回归 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Pytorch: 全連接神經網絡-解決 Boston 房價回歸問題

Copyright: Jingmin Wei, Pattern Recognition and Intelligent System, School of Artificial and Intelligence, Huazhong University of Science and Technology

Pytorch教程專欄鏈接


文章目錄

      • Pytorch: 全連接神經網絡-解決 Boston 房價回歸問題
        • MLP 回歸模型
          • 房價數據準備
          • 搭建網絡預測房價


MLP 回歸模型

使用sklearn庫的fetch_california_housing()函數。數據集共包含20640個樣本,有8個自變量。

import numpy as np import pandas as pd from sklearn.preprocessing import StandardScaler from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error, mean_absolute_error from sklearn.datasets import fetch_california_housingimport torch import torch.nn as nn import torch.nn.functional as F from torch.optim import SGD import torch.utils.data as Data import matplotlib.pyplot as plt import seaborn as sns
房價數據準備
# 導入數據 housedata = fetch_california_housing() # 切分訓練集和測試集 X_train, X_test, y_train, y_test = train_test_split(housedata.data, housedata.target,test_size = 0.3, random_state = 42)

70% 訓練集,30%測試集。

X_train, X_test, y_train, y_test (array([[ 4.1312 , 35. , 5.88235294, ..., 2.98529412,33.93 , -118.02 ],[ 2.8631 , 20. , 4.40120968, ..., 2.0141129 ,32.79 , -117.09 ],[ 4.2026 , 24. , 5.61754386, ..., 2.56491228,34.59 , -120.14 ],...,[ 2.9344 , 36. , 3.98671727, ..., 3.33206831,34.03 , -118.38 ],[ 5.7192 , 15. , 6.39534884, ..., 3.17889088,37.58 , -121.96 ],[ 2.5755 , 52. , 3.40257649, ..., 2.10869565,37.77 , -122.42 ]]),array([[ 1.6812 , 25. , 4.19220056, ..., 3.87743733,36.06 , -119.01 ],[ 2.5313 , 30. , 5.03938356, ..., 2.67979452,35.14 , -119.46 ],[ 3.4801 , 52. , 3.97715472, ..., 1.36033229,37.8 , -122.44 ],...,[ 3.512 , 16. , 3.76228733, ..., 2.36956522,33.67 , -117.91 ],[ 3.65 , 10. , 5.50209205, ..., 3.54751943,37.82 , -121.28 ],[ 3.052 , 17. , 3.35578145, ..., 2.61499365,34.15 , -118.24 ]]),array([1.938, 1.697, 2.598, ..., 2.221, 2.835, 3.25 ]),array([0.477 , 0.458 , 5.00001, ..., 2.184 , 1.194 , 2.098 ])) # 數據標準化處理 scale = StandardScaler() X_train_s = scale.fit_transform(X_train) X_test_s = scale.transform(X_test) # 將訓練數據轉為數據表 housedatadf = pd.DataFrame(data=X_train_s, columns = housedata.feature_names) housedatadf['target'] = y_train housedatadf MedIncHouseAgeAveRoomsAveBedrmsPopulationAveOccupLatitudeLongitudetarget01234...1444314444144451444614447
0.1335060.5093570.181060-0.273850-0.184117-0.010825-0.8056820.7809341.93800
-0.532218-0.679873-0.422630-0.047868-0.376191-0.089316-1.3394731.2452701.69700
0.170990-0.3627450.073128-0.242600-0.611240-0.044800-0.496645-0.2775522.59800
-0.402916-1.1555650.175848-0.008560-0.987495-0.0752301.690024-0.7069381.36100
-0.2992851.857152-0.259598-0.0709930.086015-0.0663570.992350-1.4309025.00001
...........................
1.3088270.5093570.281603-0.383849-0.675265-0.007030-0.8759180.8108912.29200
-0.4341000.3507930.5830370.3831540.2851050.063443-0.7635411.0755130.97800
-0.4947870.588640-0.591570-0.0409780.2877360.017201-0.7588580.6011912.22100
0.967171-1.0762830.390149-0.0671640.3061540.0048210.903385-1.1862522.83500
-0.6832021.857152-0.829656-0.0877291.044630-0.0816720.992350-1.4159233.25000

14448 rows × 9 columns

使用相關系數熱力圖分析數據集中9個變量的相關性

datacor = np.corrcoef(housedatadf.values, rowvar=0) datacor = pd.DataFrame(data = datacor, columns = housedatadf.columns,index = housedatadf.columns) plt.figure(figsize=(8, 6)) ax = sns.heatmap(datacor, square = True, annot = True, fmt = '.3f',linewidths = .5, cmap = 'YlGnBu',cbar_kws = {'fraction': 0.046, 'pad': 0.03}) plt.show()

從圖像可以看出,和目標函數相關性最大的是MedInc(收入中位數)變量。而且AveRooms和AveBedrms兩個變量的正相關性較強。

# 將數據集轉為張量 X_train_t = torch.from_numpy(X_train_s.astype(np.float32)) y_train_t = torch.from_numpy(y_train.astype(np.float32)) X_test_t = torch.from_numpy(X_test_s.astype(np.float32)) y_test_t = torch.from_numpy(y_test.astype(np.float32)) # 將訓練數據處理為數據加載器 train_data = Data.TensorDataset(X_train_t, y_train_t) test_data = Data.TensorDataset(X_test_t, y_test_t) train_loader = Data.DataLoader(dataset = train_data, batch_size = 64, shuffle = True, num_workers = 1)
搭建網絡預測房價
# 搭建全連接神經網絡回歸 class MLPregression(nn.Module):def __init__(self):super(MLPregression, self).__init__()# 第一個隱含層self.hidden1 = nn.Linear(in_features=8, out_features=100, bias=True)# 第二個隱含層self.hidden2 = nn.Linear(100, 100)# 第三個隱含層self.hidden3 = nn.Linear(100, 50)# 回歸預測層self.predict = nn.Linear(50, 1)# 定義網絡前向傳播路徑def forward(self, x):x = F.relu(self.hidden1(x))x = F.relu(self.hidden2(x))x = F.relu(self.hidden3(x))output = self.predict(x)# 輸出一個一維向量return output[:, 0] # 輸出網絡結構 from torchsummary import summary testnet = MLPregression() summary(testnet, input_size=(1, 8)) # 表示1個樣本,每個樣本有8個特征 ----------------------------------------------------------------Layer (type) Output Shape Param # ================================================================Linear-1 [-1, 1, 100] 900Linear-2 [-1, 1, 100] 10,100Linear-3 [-1, 1, 50] 5,050Linear-4 [-1, 1, 1] 51 ================================================================ Total params: 16,101 Trainable params: 16,101 Non-trainable params: 0 ---------------------------------------------------------------- Input size (MB): 0.00 Forward/backward pass size (MB): 0.00 Params size (MB): 0.06 Estimated Total Size (MB): 0.06 ---------------------------------------------------------------- # 輸出網絡結構 from torchviz import make_dot testnet = MLPregression() x = torch.randn(1, 8).requires_grad_(True) y = testnet(x) myMLP_vis = make_dot(y, params=dict(list(testnet.named_parameters()) + [('x', x)])) myMLP_vis

然后使用訓練集對網絡進行訓練

# 定義優化器 optimizer = torch.optim.SGD(testnet.parameters(), lr = 0.01) loss_func = nn.MSELoss() # 均方根誤差損失函數 train_loss_all = []# 對模型迭代訓練,總共epoch輪 for epoch in range(30):train_loss = 0train_num = 0# 對訓練數據的加載器進行迭代計算for step, (b_x, b_y) in enumerate(train_loader):output = testnet(b_x) # MLP在訓練batch上的輸出loss = loss_func(output, b_y) # 均方根損失函數optimizer.zero_grad() # 每次迭代梯度初始化0loss.backward() # 反向傳播,計算梯度optimizer.step() # 使用梯度進行優化train_loss += loss.item() * b_x.size(0)train_num += b_x.size(0)train_loss_all.append(train_loss / train_num) # 可視化損失函數的變換情況 plt.figure(figsize = (8, 6)) plt.plot(train_loss_all, 'ro-', label = 'Train loss') plt.legend() plt.grid() plt.xlabel('epoch') plt.ylabel('Loss') plt.show()

對網絡預測,并使用平均絕對值誤差來表示預測效果

y_pre = testnet(X_test_t) y_pre = y_pre.data.numpy() mae = mean_absolute_error(y_test, y_pre) print('在測試集上的絕對值誤差為:', mae) 在測試集上的絕對值誤差為: 0.39334159455403034

真實集和預測值可視化,查看之間的差異

index = np.argsort(y_test) plt.figure(figsize=(8, 6)) plt.plot(np.arange(len(y_test)), y_test[index], 'r', label = 'Original Y') plt.scatter(np.arange(len(y_pre)), y_pre[index], s = 3, c = 'b', label = 'Prediction') plt.legend(loc = 'upper left') plt.grid() plt.xlabel('Index') plt.ylabel('Y') plt.show()

在測試集上,MLP回歸正確地預測處理原始數據的變化趨勢,但部分樣本的預測差異較大。

總結

以上是生活随笔為你收集整理的Pytorch:全连接神经网络-MLP回归的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 爱爱免费视频 | 欧美第一夜 | 东京av男人的天堂 | 欧美日韩精品久久久免费观看 | 全部免费毛片在线播放 | 久久久涩 | 天堂网视频 | 捆绑最紧bdsm视频 | 中文字幕在线一区 | 在线一级片| 三级视频网址 | 福利视频一区 | 污片视频在线观看 | 精品少妇久久久久久888优播 | 波多野结衣一区二 | 人妻丰满熟妇aⅴ无码 | av福利片| 亚洲精品999 | 伊人网视频 | 波多野吉衣在线视频 | 国产日韩在线视频 | 玖草在线观看 | 少妇导航av| 国产国语videosex另类 | www.黄色小说.com | 久久精品www人人爽人人 | 色屁屁一区二区三区 | www在线观看视频 | 黄色日本网站 | 免费看污片网站 | 青青草原伊人网 | 91喷水| 中文字幕精品一区久久久久 | 肉丝肉足丝袜一区二区三区 | 91精品久久久久久久久久久 | 免费爱爱网站 | 日本人体视频 | 午夜丰满寂寞少妇精品 | 97久久综合| 久久综合伊人77777麻豆最新章节 | 国产乱xxⅹxx国语对白 | 奇米影视色 | 国产精品99久久久久久人 | 五月天狠狠干 | 777黄色| 男女做爰猛烈高潮描写 | 国产色播av在线 | 大j8福利视频导航 | 国产粉嫩av | 久久九九视频 | 91日韩| 亚洲色图25p | 国产极品美女在线 | 国产午夜av | www.199麻豆| 一区二区视频在线观看 | 天天摸天天干天天操 | 激情超碰| 午夜在线免费观看 | av色噜噜| 免费成人在线播放 | 欧美久久视频 | 九九热精品在线视频 | 成年人观看视频 | 成人综合影院 | 成人91网站 | 毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 521av在线 | 国产精品人人爽人人爽 | 久操免费在线视频 | 二区视频在线观看 | 69国产| 女人十八岁毛片 | 狠狠爱免费视频 | 久久新| 韩国成人在线视频 | chinese精品自拍hd | 伊人福利在线 | 亚洲一品道 | 在线观看成人免费 | 国产精品情侣 | 国产乱码精品一区二区三区亚洲人 | 国产精品专区在线观看 | 国产第8页| 美女精品一区二区 | 亚洲蜜臀av一区二区三区 | 中文字幕狠狠 | 丰满少妇久久久久久久 | 悠悠色综合网 | 成全影视在线观看第8季 | 日本不卡视频 | 午夜黄色影院 | 欧美日韩丝袜 | 成年人视频在线观看免费 | 欧美激情在线免费观看 | 伊人中文网 | 人人干免费 | 日本精品一区二区三区视频 | 中文字幕人妻一区二区三区在线视频 |