pytorch相关
语法。。。
霄逸鸿
日积月累方堆壁垒!
展开
-
RuntimeError: Can‘t call numpy() on Variable that requires grad. Use var.detach().numpy()
将PyTorch Tensor类型的变量转换成numpy时报错。出现这个现象的原因是:待转换类型的PyTorch Tensor变量带有梯度,直接将其转换为numpy数据将破坏计算图,因此numpy拒绝进行数据转换。如果自己在转换数据时不需要保留梯度信息,可以在变量转换tensor1.numpy()改为tensor1.detach().numpy()之前添加detach()调用。...原创 2021-08-15 20:50:10 · 559 阅读 · 0 评论 -
pytorch中关于网络参数的相关操作
在深度学习中,获取网络的参数信息,对网络的finetune非常重要,下面将举一个简单的例子说明如何获取网络参数。# coding: utf-8import torch.nn as nnimport torch.nn.functional as F# ----------------------------------- state_dictclass Net(nn.Module): def __init__(self): super(Net, self).__in原创 2021-08-06 20:40:18 · 804 阅读 · 0 评论 -
pytorch 中的.detach() .detach_()
当我们在训练网络的时候,(1)可能希望保持一部分的网络参数不变,只对其中一部分的参数进行调整;(2)只训练部分分支网络,并不让其梯度对主网络的梯度造成影响,这时候我们就需要使用detach()函数来切断一些分支的反向传播。tensor.detach()返回一个新的tensor,从当前计算图中分离下来的,但是仍指向原变量的存放位置,不同之处只是requires_grad为false,得到的这个tensor永远不需要计算其梯度,不具有grad。即使之后重新将它的requires_grad置.转载 2021-07-19 23:45:43 · 3411 阅读 · 0 评论 -
summary(net, input_size=(3, 32, 32))TypeError: ‘module‘ object is not callable
import torchimport torch.nn as nnimport torch.nn.functional as Fimport torchsummary as summaryclass LeNet(nn.Module): def __init__(self, classes): super(LeNet, self).__init__() self.conv1 = nn.Conv2d(3, 6, 5) self.conv2 .原创 2021-07-13 10:03:28 · 684 阅读 · 0 评论 -
pytorch中数据增强-2
train_transform = transforms.Compose([ transforms.Resize((224, 224)), # 1 FiveCrop # transforms.FiveCrop(112), # 返回的是tuple元组,下面是对元组的转化 # transforms.Lambda(lambda crops: torch.stack([(transforms.ToTensor()(crop)) for crop in crops])), .原创 2021-07-07 21:28:00 · 186 阅读 · 0 评论 -
pytorch中数据增强-1
train_transforms = transforms.Compose([ transforms.Resize((224, 224)), # 1.CenterCrop # transforms.CenterCrop(512), # 196、512 # 2.RandomCrop # transforms.RandomCrop(224,padding=16), # transforms.RandomCrop(224,padding=(16, 64)),.原创 2021-07-07 21:24:55 · 428 阅读 · 0 评论 -
torch和torchvision之间的对应关系
对应下载路径:https://download.pytorch.org/whl/torch_stable.html对应关系参考地址:https://pypi.org/project/torchvision/原创 2021-05-31 20:56:29 · 1858 阅读 · 0 评论 -
ubuntu安装好cuda和cudnn后谨慎使用upgrade
首先说下update和upgrade的区别::(1)apt update:update 是同步/etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。(2)apt upgrade:(在深度学习环境下,换完源慎用)upgrade 是升级已安装的所有软件包,升级之后的版本就是本地索引里的,因此,在执行 upgrade 之前一定要执行 update, 这样才能是最新的。笔者使用完上述命令后导致cuda无法正常使..原创 2021-05-26 15:46:05 · 559 阅读 · 0 评论 -
pytorch中的可视化:网络模型可视化以及特征图可视化
一、使用netron工具可视化pytorch模型,tensorboard太丑了不直观。项目地址:https://github.com/lutzroeder/Netro参考:https://blog.csdn.net/jieleiping/article/details/1029759391.安装netronpip installnetron2.案列demo对pytorch模型格式(.pt/.pth)支持不友好,因此需要存为onnx,庆幸pytorch支持!import to.原创 2021-01-03 17:31:12 · 8830 阅读 · 8 评论 -
Pytorch中的网络相关参数展示【特征图】和模型的flops计算以及推理时间计算
(1)网络结构可视化,如下图红框部分所示(2)特征图可视化和参数量计算需要安装torchsummary包:pip install torchsummary实例如下:import torchimport torch.nn as nnimport torch.nn.functional as Ffrom torchsummary import summaryclass Net(nn.Module): def __init__(self): supe.原创 2020-12-21 16:42:50 · 1788 阅读 · 0 评论 -
改变tensorboard绘制的曲线颜色、根据event文件来查看tensorboard曲线!
Tensorboard本身无法根据自己的意愿修改显示曲线的颜色。但是,发现可以下载并修改SVG文件,可以根据自己的意愿改变颜色。1. 勾选 Show data download links.2. Dowload Current Chart as SVG,文件用文本编辑器打开,这里我用的是notepad++.3. 修改tensorboard曲线颜色windows下的画图工具,找到自己想要颜色的RGB值。离曲线数据最近的(R,G,B)为曲线的颜色,如下图所示。另外还...原创 2020-12-20 21:58:34 · 4768 阅读 · 0 评论 -
检验 pytorch是否可以使用GPU Cuda,以及Cuda版本
import torchprint(torch.version.cuda)原创 2020-11-28 09:49:27 · 2853 阅读 · 0 评论 -
PyTorch中MaxPool的ceil_mode属性解释
PyTorch中的MaxPool(最大池化)有一个属性:ceil_mode,默认为False(地板模式),为True时是天花板模式。参考:[博客园](https://www.cnblogs.com/xxxxxxxxx/p/11529343.html)原创 2020-11-05 20:25:11 · 419 阅读 · 0 评论 -
pytorch-高阶OP
Tensor advanced operation▪ Where ▪ GatherWhereimport torchcond = torch.randn(2,2)condtensor([[ 2.3397, 1.2282], [-1.7580, 0.9515]])a = torch.ones(2,2)atensor([[1., 1.], [1., 1.]])b = torch.zeros(2,2)btensor([[0., 0.],..原创 2020-10-31 21:40:37 · 188 阅读 · 0 评论 -
pytorch-统计属性
统计属性▪ norm ▪ mean sum ▪ prod ▪ max, min, argmin, argmax ▪ kthvalue, topk # norm-pimport torcha=torch.full([8], 1.0)atensor([1., 1., 1., 1., 1., 1., 1., 1.])b=a.view(2,4)print(b)c=a.view(2,2,2)print(c)tensor([[1., 1., 1., 1.], [1.,原创 2020-10-31 20:40:21 · 163 阅读 · 0 评论 -
pytorch-基本数学运算
基本运算▪ Add/minus/multiply/divide ▪ Matmul ▪ Pow ▪ Sqrt/rsqrt ▪ Round 加法import torcha=torch.rand(3,4)b=torch.rand(4)a+btensor([[0.4990, 1.6506, 1.1205, 0.9656], [0.5472, 1.9627, 0.8368, 0.5020], [0.6576, 1.1725, 0.8564, 1.0940]])原创 2020-10-31 19:25:12 · 379 阅读 · 0 评论 -
pytorch-拼接与拆分
拼接与拆分▪ Cat▪ Stack▪ Split▪ Chunkcat (竖着堆)torch.cat(tensors,dim=0,out=None)对于二维矩阵:第一个参数tensors是你想要连接的若干个张量,按你所传入的顺序进行连接,注意每一个张量需要形状相同,或者更准确的说,进行行连接的张量要求列数相同,进行列连接的张量要求行数相同;第二个参数dim表示维度,dim=0则表示按行连接,dim=1表示按列连接 。import torcha = torch.rand(4,32,8.原创 2020-10-31 14:47:47 · 715 阅读 · 0 评论 -
pytorch-Broadcast自动扩展
▪ Expand▪ without copying data示意图:案列:原创 2020-10-30 23:12:21 · 97 阅读 · 0 评论 -
pytorch-Tensor维度变换
▪ View/reshape▪ Squeeze/unsqueeze▪ Transpose/t/permute▪ Expand/repeatview/reshape 这两个API功能一样import torcha = torch.rand(4,1,28,28)atensor([[[[0.6938, 0.3445, 0.6771, ..., 0.9931, 0.9991, 0.4440], [0.5946, 0.8147, 0.2261, ..., 0.7437, 0.原创 2020-10-30 23:03:06 · 566 阅读 · 0 评论 -
pytorch-索引与切片
indexingimport torcha = torch.rand(4,3,28,28)atensor([[[[0.1683, 0.1747, 0.7508, ..., 0.2379, 0.2763, 0.9050], [0.4666, 0.1574, 0.5551, ..., 0.6048, 0.1089, 0.1808], [0.3799, 0.0634, 0.3741, ..., 0.6716, 0.7283, 0.7299],原创 2020-10-30 21:59:55 · 135 阅读 · 0 评论 -
pytorch-创建tensor
Import from numpyimport torchimport numpy as npa = np.array([2, 3.3])aarray([2. , 3.3])a = np.ones([2,3])torch.from_numpy(a)tensor([[1., 1., 1.], [1., 1., 1.]], dtype=torch.float64)Import from Listtorch.tensor([2., 3.2]) # tensor只接受一个原创 2020-10-30 21:16:36 · 565 阅读 · 0 评论 -
pytorch-基本数据类型
import torcha = torch.randn(2,3)print(a)print(a.type())print(type(a))tensor([[ 0.2685, -0.2450, -0.1803], [-0.5779, 1.8447, -2.2098]])torch.FloatTensor<class 'torch.Tensor'>isinstance(a, torch.FloatTensor)Trueisinstance(a, torc原创 2020-10-30 19:46:50 · 108 阅读 · 0 评论 -
pytroch-基础案例
# 自动求导import torchfrom torch import autogradx = torch.tensor(1.)a = torch.tensor(1., requires_grad=True) # 标量b = torch.tensor(2., requires_grad=True)c = torch.tensor(3., requires_grad=True)y = a**2 * x + b * x + cprint("a.dim():", a.dim()) # d原创 2020-10-31 20:44:57 · 106 阅读 · 0 评论 -
pytorch-张量概念简介
其实标量,向量,矩阵它们三个也是张量,标量是零维的张量,向量是一维的张量,矩阵是二维的张量。除此之外,张量还可以是四维的、五维的、。。。原创 2020-10-30 14:38:25 · 164 阅读 · 0 评论 -
torch.rand (randn, random以及normal)对比
区别对比torch.rand(sizes, out=None)产生一个服从均匀分布的张量,张量内的数据包含从区间[0,1)的随机数。参数size是一个整数序列,用于定义张量大小。torch.randn(sizes, out=None)产生一个服从标准整正态分布的张量,张量内数据均值为0,方差为1,即为高斯白噪声。sizes作用同上。torch.normal(means, std, out=None)产生一个服从离散正态分布的张量随机数,可以指定均值和标准差。其中,标准差std是一个张量包含转载 2020-10-24 16:52:22 · 1559 阅读 · 0 评论