小白学习之pytorch框架(1)-torch.nn.Module+squeeze(unsqueeze)
我学习pytorch框架不是从框架开始,从代码中看不懂的pytorch代码开始的
可能由于是小白的原因,个人不喜欢一些一下子粘贴老多行代码的博主或者一些弄了一堆概念,导致我更迷惑还增加了畏惧的情绪(个人感觉哈),我觉得好像好多人都是喜欢给说的明明白白的,难听点就是嚼碎了喂我们。这样也行啊(有点恶心哈),但是有些东西即使嚼碎了我们也弄不明白,毕竟有一些知识是很难的(嚼碎后的知识我们都难以理解)
我知道了这些,也在尽力写博客时写的容易理解,但是自身实力有限,还做不到写博客写的既有条理又容易理解,请谅解,若有什么好的意见或者博客中的错误,欢迎指出,毕竟自己也是借助别人的博客和实践中的代码,写的更适于自己的理解
参考博客:https://blog.csdn.net/e01528/article/details/84075090 https://blog.csdn.net/qq_27825451/article/details/90550890
torch.nn.Module:所有网络的基类(官方文档),即我们自己定义网络或层,需要继承Module。常用的继承方法是:super(GraphConvolution, self).__init__(),其中GraphConvolution是自己定义的类或者模型或者说layer。其实nn.Module中无模型和层之分,层也当成一个模型来计算。
在GraphConvolution中的构造函数中需要自己定义可学习的参数和可学习的参数层(卷积层、全连接层),参数封装成parameter类型。因为训练模型需要的参数类型是parameter
forward(self,x)函数:前向传播函数,实现模型,即各个层的连接逻辑(哪个层接哪个层)。其输入可以是一个或多个variable变量,对x的任何操作也是variable变量。不需要写反向传播函数,因为torch.nn.Module可以利用autograd自动实现反向传播。

调用规则:调用layer(input)即可得到input对应的结果。就是输入函数所需的参数函数会给返回一个结果。规则:layers.__call__(input),在__call__函数中,主要调用的是layer.forward(x),就是layer(x)=layer.forward(x)
torch.mul(a,b)即矩阵a和矩阵b元素对应相乘,又叫Hadamard乘积。torch.mm(a,b):矩阵a乘以矩阵b。x.mm(a):矩阵x和矩阵a乘积。
torch常用函数可参考
https://www.jianshu.com/p/d678c5e44a6b https://www.jianshu.com/p/54708c840ec4
torch.range(start,end,step):返回一个以start开始以end结束,以step为公差的等差数列。输出时end包含在内。step可以省略,但是必须有start和end。返回的值是float32类型
torch.range(1,5):结果:tensor([1.,2.,3.,4.,5.]) torch.range(1,5,2):结果:tensor([1.,3.,5.])
torch.arange(start,end,step):返回一个以start开始以end结束,以step为公差的等差数列。输出时不包含end。end、step都可以省略。返回的值是int64类型
torch.arange(5):结果:tensor([1,2,3,4])
torch.squeeze():压缩张量维度;torch.unsqueeze():扩张张量维度
参考博客,感谢博主 https://blog.csdn.net/flysky_jay/article/details/81607289
https://www.cnblogs.com/Archer-Fang/p/10647986.html#4449096
小白学习之pytorch框架(1)-torch.nn.Module+squeeze(unsqueeze)的更多相关文章
- 小白学习之pytorch框架(4)-softmax回归(torch.gather()、torch.argmax()、torch.nn.CrossEntropyLoss())
学习pytorch路程之动手学深度学习-3.4-3.7 置信度.置信区间参考:https://cloud.tencent.com/developer/news/452418 本人感觉还是挺好理解的 交 ...
- 小白学习之pytorch框架(2)-动手学深度学习(begin-random.shuffle()、torch.index_select()、nn.Module、nn.Sequential())
在这向大家推荐一本书-花书-动手学深度学习pytorch版,原书用的深度学习框架是MXNet,这个框架经过Gluon重新再封装,使用风格非常接近pytorch,但是由于pytorch越来越火,个人又比 ...
- 小白学习之pytorch框架(3)-模型训练三要素+torch.nn.Linear()
模型训练的三要素:数据处理.损失函数.优化算法 数据处理(模块torch.utils.data) 从线性回归的的简洁实现-初始化模型参数(模块torch.nn.init)开始 from torc ...
- 小白学习之pytorch框架(7)之实战Kaggle比赛:房价预测(K折交叉验证、*args、**kwargs)
本篇博客代码来自于<动手学深度学习>pytorch版,也是代码较多,解释较少的一篇.不过好多方法在我以前的博客都有提,所以这次没提.还有一个原因是,这篇博客的代码,只要好好看看肯定能看懂( ...
- 小白学习之pytorch框架(6)-模型选择(K折交叉验证)、欠拟合、过拟合(权重衰减法(=L2范数正则化)、丢弃法)、正向传播、反向传播
下面要说的基本都是<动手学深度学习>这本花书上的内容,图也采用的书上的 首先说的是训练误差(模型在训练数据集上表现出的误差)和泛化误差(模型在任意一个测试数据集样本上表现出的误差的期望) ...
- 小白学习之pytorch框架(5)-多层感知机(MLP)-(tensor、variable、计算图、ReLU()、sigmoid()、tanh())
先记录一下一开始学习torch时未曾记录(也未好好弄懂哈)导致又忘记了的tensor.variable.计算图 计算图 计算图直白的来说,就是数学公式(也叫模型)用图表示,这个图即计算图.借用 htt ...
- PyTorch里面的torch.nn.Parameter()
在刷官方Tutorial的时候发现了一个用法self.v = torch.nn.Parameter(torch.FloatTensor(hidden_size)),看了官方教程里面的解释也是云里雾里, ...
- 深度学习框架PyTorch一书的学习-第四章-神经网络工具箱nn
参考https://github.com/chenyuntc/pytorch-book/tree/v1.0 希望大家直接到上面的网址去查看代码,下面是本人的笔记 本章介绍的nn模块是构建与autogr ...
- [PyTorch 学习笔记] 3.1 模型创建步骤与 nn.Module
本章代码:https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson3/module_containers.py 这篇文章来看下 ...
随机推荐
- 【转】Selenium 利用javascript 控制滚动条
http://luyongxin88.blog.163.com/blog/static/92558072011101913013149/ < xmlnamespace prefix =" ...
- Docker 网络详解及 pipework 源码解读与实践
转载自:https://www.infoq.cn/article/docker-network-and-pipework-open-source-explanation-practice/ Docke ...
- 快速搭建单机版Spring Cloud EurekaServer
原文链接:http://www.yiidian.com/springcloud/build-eureka-single.html 本文介绍搭建单机版的Eureka Server服务 1 创建项目,导入 ...
- 漫谈计算机组成原理(七)I/O系统
本文讲什么? 这个系列的文章其实可以分成两个部分,计算机系统的其他硬件结构和CPU. 而我们今天要讲述的内容,就是其他硬件结构中的最后一个部分--I/O(输入输出)系统. 这篇文章主要讲述的就是I/O ...
- bzoj 4300绝世好题
呵呵呵呵 #include<bits/stdc++.h> #define INF 0x7fffffff #define LL long long #define N 100005 usin ...
- Pycharm2020最新激活码|永久激活(附最新激活码和插件)
最近很多人的Pycharm激活时间又过期了,后台很多人索要激活码,我就再把激活的方法汇和工具再梳理一次给大家. 最主要有两种激活方式(两种方式需要的激活码不同): 一.激活码激活: 一般一年多需要激活 ...
- 数据库连接池C3P0的使用
一.直接使用代码链接(一般企业开发不会用到.大多数用方法二) 1.导入jar 2.新建JDBCUtil import java.io.FileInputStream; import java.io.I ...
- 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring框架的基本思想
EJB的学习成本很高,开发效率却不高,需要编写很多重复的代码,这些问题阻止了EJB的继续发展.就在EJB技术止步不前的时候,Spring框架在合适的时机出现了,Spring框架和EJB不同,Sprin ...
- 吴裕雄--天生自然 JAVASCRIPT开发学习:语法
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- POJ 3970:Party
Party Time Limit: 1000MS Memory Limit: 65536KB 64bit IO Format: %I64d & %I64u Submit Status ...