pytorch 回歸網路和訓練過程

2021-09-27 02:56:55 字數 1283 閱讀 3629

1 構建資料集

我們建立一些假資料來模擬真實的情況. 比如乙個一元二次函式:y = a * x^2 + b, 我們給y資料加上一點雜訊來更加真實的展示它.

import torch

import matplotlib.pyplot as plt

x=torch.unsqueeze(torch.lindpace(-1,1,100),dim=1)

y=x.pow(2)+0.2*torch.rand(x.size())

# 畫圖

plt.scatter(x.data.numpy(),y.data.numpy())

plt.show()

2 建立神經網路

直接用torch 中的體系,先定義所有的層屬性(__init__()),然後再一層層搭建(forward(x))層於層的關係鏈結,建立關係的時候,我們會用到激勵函式

import torch

import torch.nn.functional as f # 激勵函式都在這

class net(torch.nn.module):

def __init__(self,n_feature,n_hidden,n_output)

super(net,self).__init__()

# 定義每層用什麼樣的形式

self.hidden=torch.nn.linear(n_feature,n_hidden)

self.predict=torch.nn.linear(n_hidden,n_output)

def forward(self,x):

x=f.relu(self.hidden(x))

x=self.predict(x)

return x

net=net(n_feature=1,n_hidden=10,n_output=1)

print(net)

3 訓練網路

# optimizer 是訓練工具

optimizer=torch.optim.sgd(net,parameters(),lr=0.2)

loss_func=torch.nn.mseloss() # **值和真實值的誤差計算公式

for t in range(100):

prediction=net(x)

loss=loss_func(prediction,y)

optimizer.zero_grad()

loss.backward()

optimizer.step() 

ref:

visdom視覺化pytorch訓練過程

在深度學習模型訓練的過程中,常常需要實時監聽並視覺化一些資料,如損失值loss,正確率acc等。在tensorflow中,最常使用的工具非tensorboard莫屬 在pytorch中,也有類似的tensorboardx,但據說其在張量資料載入的效率方面不如visdom。visdom是faceboo...

用Pytorch訓練線性回歸模型

假定我們要擬合的線性方程是 y 2x 1 x 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14 y 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29 import torch import torch.nn as nn from torch.auto...

pytorch訓練過程中GPU利用率低

在訓練人臉資料集ms1m時,採用pytorch的imagefolder對原始的影象進行的讀取。由於人臉資料小,且量大,導致gpu很快訓練完成,但是io卻很慢,從而拖垮了整個訓練時間。以上問題的根本原因在於pytorch沒有自己的資料格式,像tf的tfrecorde,mx的rec檔案以及caffe使用...