pytorch使用教程

本文主要是记录一些pytorch的基本使用,将持续更新。。。。

#查看形状
torch.size()
#改变形状
torch.view()
#和numpy互相转化
x.numpy()
torch.from_numpy()

训练流程:

#使用gpu训练,把数据和网络传入gpu即可
device=torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')
model.to(device)
inputs.to(device)
out.to(device)

#定义优化器和损失函数
optimizer=torch.optimizer.SGD(model.parameters(),lr=0.01)
criterion=torch.nn.MSELoss()
for epoch in epochs:
    epoch+=1
    #梯度清零
    optimizer.zero_grad()
    
    #前向传播
    out=model(inputs)
    
    #计算损失
    loss=criterion(out,labels)
    
    #反响传播
    loss.backward()
    
    #更新权重
    optimizer.step()
    
    if epoch%50==0:
        print(loss.item())
#模型保存与加载
torch.save(model.state_dict(),'model.pkl')
model.load_state_dict(torch.load('model.pkl'))

**

hub模块的使用:

显示可加载模型列表&加载模型。
torch.hub.list('pytorch/vision')
torch.hub.load('pytorch/vision', 'alexnet', pretrained=False)

**

使用tensordataset和dataloader加载数据。

from torch.utils.data import TensorDataset
from torch.utils.data import DataLoader

train_ds=TensorDataset(x_train,Y_train)
train_dl=DataLoader(train_ds,batch_size=batches)

for xb,yb in train_dl:
    开始喂入数据,训练模型

model.train()和model.eval()的使用区别:

model.train()#训练网络模型的时候,启用batchnormsize和dropout
model.eval()#测试模型的时候,关闭batchnormsize和dropout

函数:

tensor.squeeze() #去掉tensor中维度为1的维度

tensor转numpy,

tensor.cpu()#tensor转numpy需要先将tensor转到cpu上,
tensor.numpy()#当tensor的require_grad为FLSE时
tensor.detach().numpy()#当tensor的require_grad为TRUE时

torch.chunk()方法可以对张量分块,返回一个张量列表:

rearrange(t, ‘b n (h d) -> b h n d’, h = h)

torch.einsum(‘bhid,bhjd->bhij’, q, k)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值