pytorch打印⽹络结构_pytorch⼊门教程
1.数据表⽰及运算
小时代1在线观看免费1.0 Numpy与pytorch⽐较
Numpy Pytorch
导⼊模块import numpy as np import torch
创建数据np.numpy()tensor = torch.Tensor(array)
查看数据维度np.shape()tensor.shape
查看数据类型type()pe
产⽣随机数np.random.rand(2,3))np.ones((2,3))
产⽣全1矩阵/张量np.ones()s()
1.1Numpy数组与torch.Tensor相互转换
torch.from_numpy(): from numpy to tensor
numpy(): from tensor to numpy
python入门教程视屏# random numpy arrayarray = np.random.rand(2,2)# from numpy to tensorfrom_numpy_to_tensor = torch.from_numpy(array)# from tensor to numpytensor = fro
注意Torch的Tensor和numpy的array会共享他们的存储空间,修改⼀个会导致另外的⼀个也被修改。
1.3 基础数学运算
a和b都是tensor
运算表达式/函数
Resize view()
加法torch.add(a,b) = a + b
减法 a.sub(b) = a - b
元素对应相乘torch.mul(a,b) = a * b
元素对应相除torch.div(a,b) = a / b
均值 a.mean()
标准差(std) a.std()
1.4 Variables
变量和张量之间的差异是变量可以累积梯度
我们也可以⽤变量进⾏数学运算
为了进⾏反向传播,我们需要变量
# import variable from pytorch libraryfrom torch.autograd import Variable# define variablevar = s(3), requires_grad = True)
假设我们有等式y = x^2,现在要计算在点y=10处的梯度,pytorch实现如下:
array = [2,4]tensor = torch.Tensor(array)x = Variable(tensor, requires_grad = True)y = x**2o = (1/2)*sum(y) #理解为⼀个点# backwardo.backward() # calculates g
1.5 使⽤gpu运算
当我们使⽤.cuda()的时候,就可以把tensor移动到GPU上去
if torch.cuda.is_available(): x = x.cuda() y = y.cuda() x + y
2.数据来源
通常来讲,当你处理图像,声⾳,⽂本,视频时需要使⽤python中其他独⽴的包来将他们转换为numpy中的数组,之后再转换为
torch.Tensor
图像的话,可以⽤Pillow, OpenCV
声⾳处理可以⽤scipy和librosapbootcms模板安装
c语言unicode转中文⽂本的处理使⽤原⽣Python或者Cython以及NLTK和SpaCy都可以
特别的对于图像,我们有torchvision这个包可⽤,其中包含了⼀些现成的数据集如:Imagenet, CIFAR10, MNIST等等。同时还有⼀些转换
图像⽤的⼯具。
import as nn ## 搭建神经⽹络ansforms as transforms ## 下载数据from torch.autograd import Variable ## 更新梯度imp
3.构建神经⽹络
先看⼀个简单的例⼦:
3.1 ANN⽹络
# Create ⼈⼯神经⽹络(ANN) Modelclass ANNModel(nn.Module): def __init__(self, input_dim, hidden_dim, output_dim): super(ANNModel, self).__init__() # ANN model trainingcount = 0loss_list = []iteration_list = []accuracy_list = []for epoch in range(num_epochs): for i, (images, labels) in enumerate(train_loader):
使⽤ 包可以进⾏神经⽹络的构建,⽽nn建⽴在autograd的基础上来进⾏模型的定义和微分
nn.Module中包含着神经⽹络的层,同时forward(input)⽅法能够将output进⾏返回
autograd 包提供Tensor所有操作的⾃动求导⽅法。
autograd.Variable 这是这个包中最核⼼的类。 它包装了⼀个Tensor,并且⼏乎⽀持所有的定义在其上的操作。⼀旦完成了你的运
算,你可以调⽤ .backward()来⾃动计算出所有的梯度。
你可以通过属性 .data 来访问原始的tensor,⽽关于这⼀Variable的梯度则集中于 .grad 属性中。重生二郎神杨戬的小说
还有⼀个在⾃动求导中⾮常重要的类 Function,Variable 和 Function ⼆者相互联系并且构建了⼀个描述整个运算过程的⽆环图。每个Variable拥有⼀个 .creator 属性,其引⽤了⼀个创建Variable的 Function。
list格式注意: 只接受⼩批量的数据整个包只接受那种⼩批量样本的数据,⽽⾮单个样本。 例如,nn.Conv2d能够结构⼀个四维的TensornSamples x nChannels x Height x Width。如果你拿的是单个样本,使⽤input.unsqueeze(0)来加⼀个假维度就可以了。
3.2使⽤gpu训练模型
就像你把Tensor传递给GPU进⾏运算⼀样,你也可以将神经⽹络传递给GPU。这⼀过程将逐级进⾏操作,直到所有组件全部都传递到GPU 上。
记住,每⼀步都需要把输⼊和⽬标传给GPU。
参考
PyTorch深度学习:60分钟⼊门(Translation) 原⽂
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论