pytorch

pytorch的模型解析

荒凉一梦 提交于 2020-11-17 03:41:59
如何获取pytorch的动态图? model = torch.jit.load("test.pth") graph = model.graph.copy() torch._C._jit_pass_inline(graph) node_list = graph.nodes() 加载模型后,获取模型的graph,这个graph就是需要的动态图。graph node就是计算图的计算节点(有序),关于各个层的相关参数都可以从node节点中获取,各个参数的相对位置需要查找一下该op的实现。 需要注意的是,需要使用 _jit_pass_inline来将graph的sub module展开。 如何获取pytorch的权重等参数? 对于非量化模型: 可以通过named_parameters或者state_dict获取。 对于量化模型: 在一次次的尝试和接口的设置中终于找到了!!! a = 0 for model_name, module in model.named_modules(): print(model_name) print(module) if a == 2: mod_c = module._c #print(mod_c.dump()) param = module.__getattr__('_packed_params') print(param) print(type(param)

qiuzitao深度学习之PyTorch实战(十六)

生来就可爱ヽ(ⅴ<●) 提交于 2020-11-15 11:39:47
史上最简单、实际、通俗易懂的PyTorch实战系列教程!(新手友好、小白请进、建议收藏) 基于3D卷积的视频分析与动作识别 一、3D卷积原理解读 视频就是一帧一帧的图像按照时间拼接组成的,3D卷积就是比2D的卷积多了个时间维度。 二、UCF 101动作识别数据集简介 UCF 101动作识别数据集官网地址下载: https://www.crcv.ucf.edu/data/UCF101.php 101类视频,每一类里面是一个人在做一类的动作,比如射击、画口红、画眼线等等,数据集有6.5G,我也上传了网盘供大家下载或者大家自己去数据集的官网下载。 UCF101数据集的操作类别为:涂抹眼妆,涂抹口红,射箭,婴儿爬行,平衡木,乐队游行,棒球场,篮球投篮,篮球扣篮,卧推,骑自行车,台球射击,吹干头发,吹蜡烛,体重蹲,保龄球,拳击沙袋,拳击速度袋,蛙泳,刷牙,清洁和挺举,悬崖跳水,板球保龄球,板球射击,在厨房切割,潜水,打鼓,击剑,曲棍球罚款,地板体操,飞盘接球,前爬网,高尔夫挥杆,理发,链球掷,锤击,倒立俯卧撑,倒立行走,头部按摩,跳高,跑马,骑马,呼啦圈,冰舞,标枪掷,杂耍球,跳绳,跳跃杰克,皮划艇,针织,跳远,刺,阅兵,混合击球手,拖地板,修女夹头,双杠,披萨折腾,弹吉他,弹钢琴,弹塔布拉琴,弹小提琴,弹大提琴,弹Daf,弹Dhol,弹长笛,弹奏Sitar,撑竿跳高,鞍马,引体向上,拳打

Python机器学习与实战

旧街凉风 提交于 2020-11-15 00:16:53
本课程使用Python3讲解,课程内容同时适应于Windows、Mac OS X和Linux。 本课程以让学员学会使用scikit-learn编写机器学习代码为目的,拒绝纯理论讲解。 scikit-learn实现了大量机器学习算法,如k-临近、线性回归、梯度下降、决策树、支持向量机、朴素贝叶斯、PCA等。通常会将 scikit-learn与深度学习框架,如Tensorflow、PyTorch在一起使用。使用 scikit-learn对数据进行预处理,然后使用 Tensorflow、PyTorch等深度学习框架进行神经网络训练。因此,在学习 Tensorflow、PyTorch等深度学习框架之前,先了解scikit-learn非常重要。 本课程是《机器学习系列课程》中的重要部分。这套视频课程包括但不限于Python基础、常用机器学习框架(如scikit-learn、tensorflow、pytorch、caffe、keras等),机器学习核心算法、大量的实战案例、机器学习的数学基础,机器学习在自然语言处理中的应用、机器学习在推荐系统中的应用。 识别下面二维码进入课程页面: 本文分享自微信公众号 - 极客起源(geekculture)。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“ OSC源创计划 ”,欢迎正在阅读的你也加入,一起分享。 来源:

关于Pytorch的二维tensor的gather和scatter_操作用法分析

二次信任 提交于 2020-11-14 08:30:58
看得不明不白(我在下一篇中写了如何理解gather的用法) gather是一个比较复杂的操作,对一个2维tensor,输出的每个元素如下: out[i][j] = input[index[i][j]][j] # dim=0 out[i][j] = input[i][index[i][j]] # dim=1 二维tensor的gather操作 针对0轴 注意index此时的值 输入 index = t.LongTensor([[0,1,2,3]]) print("index = \n", index) #index是2维 print("index的形状: ",index.shape) #index形状是(1,4) 输出 index = tensor([[0, 1, 2, 3]]) index的形状: torch.Size([1, 4]) ======================分割线================================== 针对1轴 注意index此时的值 输入 index = t.LongTensor([[0,1,2,3]]).t() #index是2维 print("index = \n", index) #index形状是(4,1) print("index的形状: ",index.shape) 输出 index = tensor([[0],

Pytorch并行计算:nn.parallel.replicate, scatter, gather, parallel_apply

谁说胖子不能爱 提交于 2020-11-14 08:30:42
import torch import torch.nn as nn import ipdb class DataParallelModel(nn.Module): def __init__(self): super().__init__() self.block1 = nn.Linear(10, 20) def forward(self, x): x = self.block1(x) return x def data_parallel(module, input, device_ids, output_device=None): if not device_ids: return module(input) if output_device is None: output_device = device_ids[0] replicas = nn.parallel.replicate(module, device_ids) print(f"replicas:{replicas}") inputs = nn.parallel.scatter(input, device_ids) print(f"inputs:{type(inputs)}") for i in range(len(inputs)): print(f"input {i}:{inputs[i].shape}")

论文笔记及代码复现:STGCN-基于图卷积时空神经网络在交通速度中的预测

独自空忆成欢 提交于 2020-11-14 08:01:21
1:论文信息 来自IJCAI 2018的一篇论文:《Spatio-Temporal Graph Convolutional Networks: A Deep Learning Framework for Traffic Forecasting 》 原始论文地址链接 Pytorch代码实现 1.1: 论文思路 使用Kipf & Welling 2017的近似谱图卷积得到的图卷积作为空间上的卷积操作,时间上使用一维卷积TCN对所有顶点进行卷积,两者交替进行,组成了时空卷积块,在加州PeMS和北京市的两个数据集上做了验证。论文中图的构建方法并不是基于实际路网,而是通过数学方法构建了一个基于距离关系的网络。 1.2: 摘要和引言总结 在交通研究中,交通流的基本变量,也就是速度、流量和密度( 实际中,还有排队长度,时间占有率,空间占有率,车头时距等多个变量 ),这些变量通常作为监控当前交通状态以及未来预测的指示指标。根据预测的长度,主要是指预测时间窗口的大小,交通预测大体分为两个尺度:短期(5~30min),中和长期预测(超过30min)。大多数流行的统计方法(比如,线性回归)可以在短期预测上表现的很好。然而,由于交通流的不确定性和复杂性,这些方法在相对长期的预测上不是很有效。 中长期交通预测上的研究可以分为两类:动态建模和数据驱动的方法 。 动态建模方法 :使用了数学工具(比如微分方程