神经网络架构PYTORCH-几个概念
2018-10-29 10:51
866 查看
使用Pytorch之前,有几个概念需要弄清楚.
什么是Tensors(张量)?
这个概念刚出来的时候,物理科班出身的我都感觉有点愣住了,好久没有接触过物理学的概念了.
这个概念,在物理学中怎么解释呢?
张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数。用在神经网络架构PyTorch中,又是怎么的概念呢?
PyTorch Tensor 在概念上与 numpy 数组相同: Tensor 是一个n维数组, PyTorch 也提供了很多能在这些 Tensor 上操作的函数. 像 numpy 数组一样, PyTorch Tensor 也和numpy的数组对象一样不了解深度学习,计算图和梯度下降;它们只是科学计算的通用工具.
基本的使用例子:
构建一个 5x3 的矩阵, 未初始化的:
x = torch.Tensor(5, 3) print(x)
构建一个随机初始化的矩阵:
x = torch.rand(5, 3) print(x)
获得 size:
print(x.size())
更更多例子见:http://pytorch.apachecn.org/cn/tutorials/beginner/blitz/tensor_tutorial.html
什么是autograd
自动求导包?
autograd自动求导包针对张量上的所有操作都提供了自动微分操作. 这是一个逐个运行的框架, 这意味着您的反向传播是由您的代码如何运行来定义的, 每个单一的迭代都可以不一样.
autograd.Variable是包的核心类. 它包装了张量, 并且支持几乎所有的操作. 一旦你完成了你的计算, 你就可以调用
.backward()方法, 然后所有的梯度计算会自动进行.
你还可以通过
.data属性来访问原始的张量, 而关于该 variable(变量)的梯度会被累计到
.grad上去.
如果你想计算导数, 你可以在
Variable上调用
.backward()方法. 如果
Variable是标量的形式(例如, 它包含一个元素数据), 你不必指定任何参数给
backward(), 但是, 如果它有更多的元素. 你需要去指定一个
grad_output参数, 该参数是一个匹配 shape(形状)的张量.
基本的例子:
import torch from torch.autograd import Variable x = torch.randn(3) x = Variable(x, requires_grad = True) y = x * 2 while y.data.norm() < 1000: y = y * 2 print(y)
详细参考:http://pytorch.apachecn.org/cn/tutorials/beginner/blitz/autograd_tutorial.html#variable
相关文章推荐
- 神经网络架构PYTORCH-宏观分析
- 神经网络架构PYTORCH-初相识(3W)
- 神经网络架构PYTORCH-前馈神经网络
- PyTorch快速搭建神经网络及其保存提取方法详解
- pytorch + visdom 应用神经网络、CNN 处理手写字体分类
- PyTorch笔记5-save和load神经网络
- PyTorch快速入门教程三(神经网络)
- PyTorch笔记4-快速构建神经网络(NN)
- 神经网络架构演进史
- 神经网络读书笔记:《神经网络与机器学习/Simon Haykin》导言概念总结
- 深度学习基础(五):循环神经网络概念、结构及原理实现
- caffe:使用draw_net.py绘制网络架构
- 8种神经网络架构
- ORACLE网络的几个重点概念
- 基于Storm 分布式BP神经网络,将神经网络做成实时分布式架构
- 机器学习必知的八大神经网络架构
- PyTorch中使用预训练的模型初始化网络的一部分参数
- Coursera机器学习神经网络相关概念记录
- torch常有的神经网络例子解释
- 网络编程中的几个概念