目录
基本流程
1. 数据预处理(Dataset、Dataloader)
2. 模型搭建(nn.Module)
3. 损失&优化(loss、optimizer)
4. 训练(forward、backward)
一、数据处理
对于数据处理,最为简单的⽅式就是将数据组织成为⼀个 。
但许多训练需要⽤到mini-batch,直 接组织成Tensor不便于我们操作。
pytorch为我们提供了Dataset和Dataloader两个类来方便的构建。
torch.utils.data.DataLoader(dataset,batch_size,shuffle,drop_last,num_workers)

二、模型搭建
搭建一个简易的神经网络
除了采用pytorch自动梯度的方法来搭建神经网络,还可以通过构建一个继承了torch.nn.Module的新类,来完成forward和backward的重写。
# 神经网络搭建
import torch
from torch.autograd import Varible
batch_n = 100
hidden_layer = 100
input_data = 1000
output_data = 10
class Model(torch.nn.Module):
def __init__(self):
super(Model,self).__init__()
def forward(self,input,w1,w2):
x = torch.mm(input,w1)
x = torch.clamp(x,min = 0)
x = torch.mm(x,w2)
def backward(self):
pass
model = Model()
#训练
x = Variable(torch.randn(batch_n,input_data))
一点一点地看:
import torch
dtype = torch.float
device = torch.device("cpu")
N, D_in, H, D_out = 64, 1000, 100, 10
# Create random input and output data
x = torch.randn(N, D_in, device=device, dtype=dtype)
y = torch.randn(N, D_out, device=device, dtype=dtype)
# Randomly initialize weights
w1 = torch.randn(D_in, H, device=device, dtype=dtype)
w2 = torch.randn(H, D_out, device=device, dtype=dtype)
learning_rate = 1e-6
tensor 写一个粗糙版本(后面陆陆续续用pytorch提供的方法)
for t in range(500):
# Forward pass: compute predicted y
h = x.mm(w1)
h_relu = h.clamp(min=0)
y_pred = h_relu.mm(w2)
# Compute and print loss
loss = (y_pred - y).pow(2).sum().item()
if t % 100 == 99:
print(t, loss)
# Backprop to compute gradients of w1 and w2 with respect to loss
grad_y_pred = 2.0 * (y_pred - y)

本文详细介绍了如何使用PyTorch进行深度学习项目的基本流程,包括数据预处理(Dataset与DataLoader)、模型构建(nn.Sequential与nn.Module)、定义损失函数与优化器,以及训练过程中的forward、backward操作。涵盖了MSE、Adam优化器和train/test模式的运用。
最低0.47元/天 解锁文章
777

被折叠的 条评论
为什么被折叠?



