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使用...