![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
pytorch
zjLOVEcyj
composing code was a kind of art
展开
-
torch.nn.BatchNorm2d()计算
from torch.nn import MSELossimport torchclass Model(torch.nn.Module): def __init__(self): super(Model, self).__init__() self.convs = torch.nn.ModuleList([ torch.nn.BatchNorm2d(2, affine=True) ]) def forward(s原创 2021-11-17 10:39:58 · 1283 阅读 · 0 评论 -
pytorch CrossEntropyLoss()计算
import torchfrom torch.nn import CrossEntropyLosscriterion = CrossEntropyLoss()output = torch.tensor([[0.2, 0.8]])target = torch.tensor([1])loss = criterion(output, target)print(loss)y = torch.exp(torch.tensor(0.8)) / ((torch.exp(torch.tensor(0.8))原创 2021-11-16 17:09:41 · 1308 阅读 · 0 评论 -
pytorch为什么非要用optmizer.zero_grad()
不进行梯度清零x = torch.tensor([2.0], requires_grad=True)y = torch.pow(x, 3)print(x, y, x.grad)此时我们假设x是模型输入,y是最终计算出来的loss。x的值为2,loss为y=x的三次方为8现在进行反向传播求导,此时y对x的导数为3乘以x的平方为12y.backward()print(x.grad)现在给输入赋新值3后再次反传求导(没有梯度清零),此时y对x的导数为39(正确应为27),由于没有梯度.原创 2021-11-16 16:58:34 · 1676 阅读 · 0 评论 -
pytorch模型转ONNX模型及ONNX模型推理和可视化
pytorch模型转ONNX模型import torchclass ConNet(torch.nn.Module): def __init__(self): super(ConNet, self).__init__() self.conv1 = torch.nn.Sequential( torch.nn.Conv2d(3, 16, 3, 1, 1), torch.nn.ReLU(), t.原创 2021-11-03 13:36:38 · 686 阅读 · 1 评论 -
pytorch模型结构可视化
hiddenlayerimport hiddenlayer as himport torchclass ConNet(torch.nn.Module): def __init__(self): super(ConNet, self).__init__() self.conv1 = torch.nn.Sequential( torch.nn.Conv2d(1, 16, 3, 1, 1), torch.nn.Re.原创 2021-10-29 18:08:48 · 436 阅读 · 3 评论 -
【分布式训练】单机多卡的正确打开方式(三):PyTorch
PyTorch的数据并行相对于TensorFlow而言,要简单的多,主要分成两个API:DataParallel(DP):Parameter Server模式,一张卡为reducer,实现也超级简单,一行代码。DistributedDataParallel(DDP):All-Reduce模式,本意是用来分布式训练,但是也可用于单机多卡。DataParallelDataParallel是基于Parameter server的算法,负载不均衡的问题比较严重,有时在模型较大的时候(比如bert-larg转载 2021-10-15 11:58:59 · 239 阅读 · 0 评论 -
pytorch Tensor变形函数
view(), resize(), reshape() 在不改变原tensor数据的情况下修改tensor的形状,前后要求元素总数一致,且前后tensor共享内存如果想要直接改变Tensor的尺寸,可以使用resize_()的原地操作函数。在resize_()函数中,如果超过了原Tensor的大小则重新分配内存,多出部分置0,如果小于原Tensor大小则剩余的部分仍然会隐藏保留。transpose()函数可以将指定的两个维度的元素进行转置,而permute()函数则可以按照给定的...原创 2021-08-29 16:38:33 · 1589 阅读 · 0 评论 -
pytorch模拟线性回归
import torchx = torch.randn(200, 1, 1)y = x * 2 + 3 + torch.randn(x.shape) * 0.01class Liner(torch.nn.Module): def __init__(self): super(Liner, self).__init__() self.layer1 = torch.nn.Linear(1, 1) def forward(self, x):原创 2021-08-24 23:30:42 · 100 阅读 · 0 评论 -
pytorch多gpu数据并行
import torchimport torch.nn as nnfrom torch.utils.data import DataLoader, Datasetinput_size = 5#模型输入和输出维度output_size = 2batch_size = 40 #批量data_size = 1000 #样本数量device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")class Random原创 2021-08-16 11:48:45 · 215 阅读 · 0 评论