深度学习之Pytorch(一)神经网络基础及代码实现

本文介绍了PyTorch中神经网络的基础,包括Tensor、Variable、Dataset、nn.Module、torch.optim的使用,以及模型的保存与加载。讲解了数据预处理、权重初始化、防止过拟合的方法,并提供了神经网络的代码实现。内容涵盖梯度下降法、激活函数的选择,以及优化算法的对比。
摘要由CSDN通过智能技术生成

1.1 Tensor (张量)

  • Tensor 可以和 numpy 的 ndarray相互转换
  • Tensor有不同数据类型,有32位浮点型torch.FloatTensor、64位浮点型 torch.DoubleTensor等

1.2 Variable (变量)

  • Variable 和 Tensor 本质上没有区别,不过 Variable 会被放入一个计算图中,然后进行前向传播,反向传播,自动求导。
  • Variable 有三个比较重要的组成属性: data, grad 和 grad_fn通过 data可以取出 Variable 里面的 tensor 数值, grad_fn 表示的是得到这个Variable 的操作,比如通过加减还是乘除来得到的,最后 grad 是这个Variabel 的反向传播梯度.
  • 构建Variable. 要注意参数 requires_grad=True/ False,这个参数表示是否对这个变量求梯度,默认的是 False ,也就是不对这个变量求梯度
  • XXX.backward() 是对于标量求导,里面的参数可以不写;对于矢量求导,要传入参数声明,比如:y.backward(torch.FloatTensor( [1, 0.1 , 0. 01] )),这样得到的梯度就是它们原本的梯度分别乘上1,0.1和0.01

例子P37

1.3 Dataset (数据集)

  • torch.utils.data.Dataset是代表这一数据的抽象类,可以自定义数据类 继承和重写这个抽象类,可以通过迭代的方式来取得每一个数据。
  • 通过torch.utils.data.DataLoader定义一个新的迭代器,实现取batch, shuffle或者是多线程去读取数据。

例:

torch.utils.data.DataLoader(dataset,batch_size=1,shuffle=False,sampler=None, batch_sampler

=None,num_workers=0,collate_fn=<function default_collate>, pin_memory=False, drop_last=False, timeout=0, worker_init_fn=None): 自定义数据加载器。组合了一个数据集和采样器,并提供关于数据的迭代器。

dataset (Dataset):需要加载的数据集(可以是自定义或者自带的数据集)。

batch_sizebatch的大小(可选项,默认值为1)。

shuffle:是否在每个epochshuffle整个数据集, 默认值为False

sampler:定义从数据中抽取样本的策略. 如果指定了, shuffle参数必须为False

num_workers:表示读取样本的线程数,0表示只有主线程。

collate_fn:合并一个样本列表称为一个batch

pin_memory:是否在返回数据之前将张量拷贝到CUDA

drop_last (bool, optional) :设置是否丢弃最后一个不完整的batch,默认为False

  • 在torchvision这个包中还有更高级的有关于计算机视觉的数据读取类: ImageFolder

要求图片是下面这种存放形式:

root/dog/xxx.png 

root/dog/xxy.png

  • 9
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值