2. PyTorch Tutorial 1

PyTorch Tutorial 1

An machine learning framework

1. Dataset&DataLoader

from torch.utils.data import Dataset,DataLoader

class MyDataset(Dataset):
  def _init_(self,file):
  def _getitem_(self,index):
  def _len_(self):

2. Tensors

  • x.shape()

  • 创建Tensor

  • 运算:x.transpose(0,1) 转置 x.squeeze(0) torch.cat([x,y,z],dim=0) 在某一维数上连接

  • Type:

  • Device:

    x=x.to(‘cpu’) x=x.to(‘gpu’)

3. 定义模型:

import torch.nn as nn

class Mymodole(nn.Module):
  def _init_(self):
    super(Mymodel,self)._init_()
    self.net=nn.sequential(
    	nn.Linear(10,32)
    	nn.Sigmoid()
    	nn.Linear(32,1)
    )

4. 定义Loss Function

在torch.nn

nn.MSELoss()
nn.CrossEntropyLoss()

5. 优化

在torch.optim

torch.optim.SGD(model.parameters(),lr,momentum=0)

6. Neural Network Training Setup

dataset = MyDataset(file)
tr_set = DataLoader(dataset,16,shuffle=True) #dataset 放入DataLoader
model = MyModel().to(device)	#模型放到(cpu/cude)
criterion = nn.MSELoss()  #定义损失函数
optimizer = torch.optim.SGD(model.parameters(),0.1)	#优化器

7. Neural Network Training Loop

for epoch in range(n_epoches):
  model.train()			#训练
  for x,y in tr_set:
    optimizer.zero_grad()
    x,y=x.to(device),y.to(device)
    pred=model(x)	#前向传播计算输出
    loss = criterion(pred,y) #计算Loss
    loss.backward() #反向传播计算梯度
    optimizer.step()	#更新参数

8. Neural Network Validation Loop

model.eval()	#模型调到测试模式
total_loss = 0
for x,y in dv_set:
  x,y = x.to(device),y.to(device)
  with torch.no_grad():			#disable gradient calculation
    pred = model(x)
    loss = ceiterion(pred,y)
    total_loss +=loss.cpu().item()*len(x)
    avg_loss = total_loss/len(dv_set.dataset) 

9. Neural Network Testing Loop

为什么把梯度的计算关掉?

  • 计算快一点
  • 确保不会更新模型

10. Save/Load Trained Models

  • Save
  torch.save(model.state_dict(),path)
  • Load

    ckpt = torch.load(path)
    model.load_state_dict(ckpt)
    
    
    
    
    
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值