学习《深度学习入门之pytorch》(pytorch基础)(一)

pytorch基础理论

1 基本操作对象:Tensor

 常用的不同种的数据类型:

 32位浮点型torch.FloatTensor

 64位浮点型torch.DoubleTensor

 16位整型 torch.ShortTensor

 32位整型  torch.IntTensor

 64位整型 torch.LongTensor

 torch.Tensor 为默认数据类型:torch.FloatTensor

 Tensor 可以 numpt.ndarray之间相互转换,转换演示代码如下

https://www.cnblogs.com/quietwalk/p/8003862.html(介绍ndarray)

import torch
import numpy as np

b = torch.Tensor([[2,3],[4,5]])
numpy_b = b.numpy()  #将tensor b转换成numpy类型
print('numpy_b is \n {}'.format(numpy_b))

e = np.array([[2,3],[3,4]])
torch_e = torch.from_numpy(e) #将numpy转化成 tensor
print("form numpy to torch,torch_e is \n {}".format(torch_e))

float_torch_e = torch_e.float() #将int 型 torch_e 转成 float
print("changing the int to float is {}".format(float_torch_e))

结果显示

2  Variable

Variable 会在torch .autograd.Variable中

将tensor  a  变成variable,仅需要Variable(a)即可

Varable属性图

import torch
from torch.autograd import Variable 
x = torch.randn(3)
print(x)
x = Variable(x,requires_grad=True)
#requires_grad 参数,表示是否对x对梯度
y = x * 2
print(y)
y.backward(torch.FloatTensor([1,1,1])) 
#由于y为向量,因此不能直接写y.backward(),需要传入参数,得到的是每个分量的梯度
#torch.FloatTensor([1,0.1,0.01]) 为原梯度乘以1,0.1,0.01
print(x.grad)

结果显示:

3 Dataset

torch.utils.data.Dataset 表示这一数据抽象类

通过torch.utils.data.DatasetLoader 定义迭代器

dataiter = DataLoader(myDataset,batch_size=32,shuffle =True,collate_fn = default_collate)

batch 批处理 ;batch_size:每批数据量的大小;Shuffle,打乱输入数据的顺序,不让输入数据的顺序对模型产生影响。

collate_fn 表示如何取样本,可自行定义

torchvision 在计算机视觉中有关于数据读取的类:IamgeFolder,其功能主要是处理图片,要求图片格式为 .png

4 torch.optim

torch.optim是一个实现了多种优化算法的包,大多数通用的方法都已支持,提供了丰富的接口调用,未来更多精炼的优化算法也将整合进来。

https://blog.csdn.net/kgzhang/article/details/77479737

6  nn.Moduld(定义自已的网络

原文来自https://blog.csdn.net/u012609509/article/details/81203436 

    需要继承nn.Module类,并实现forward方法。

    一般把网络中具有可学习参数的层放在构造函数__init__()中,

    不具有可学习参数的层(如ReLU)可放在构造函数中,也可不放在构造函数中(而在forward中使用nn.functional来代替)

    只要在nn.Module的子类中定义了forward函数,backward函数就会被自动实现(利用Autograd)。

    在forward函数中可以使用任何Variable支持的函数,毕竟在整个pytorch构建的图中,是Variable在流动。还可以使用if,for,print,log等python语法.

    :Pytorch基于nn.Module构建的模型中,只支持mini-batch的Variable输入方式,

    比如,只有一张输入图片,也需要变成 N x C x H x W 的形式:

   

    input_image = torch.FloatTensor(1, 28, 28)

    input_image = Variable(input_image)

    input_image = input_image.unsqueeze(0)   # 1 x 1 x 28 x 28

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Foneone

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值