网络中的网络NIN 之前介绍的LeNet,AlexNet,VGG设计思路上的共同之处,是加宽(增加卷积层的输出的channel数量)和加深(增加卷积层的数量),再接全连接层做分类. NIN提出了一个不同的思路,串联多个由卷积层和'全连接层'(1x1卷积)构成的小网络来构建一个深层网络. 论文地址:https://arxiv.org/pdf/1312.4400.pdf nin的重点我总结主要就2点: mlpconv的提出(我们用1x1卷积实现),整合多个feature map上的特征.进一步增强非…
跟着Dive-into-DL-PyTorch.pdf从头开始学pytorch,夯实基础. Tensor创建 创建未初始化的tensor import torch x = torch.empty(5,3) print(x) 输出 tensor([[ 2.0909e+21, 3.0638e-41, -2.4612e-30], [ 4.5650e-41, 3.0638e-41, 1.7753e+28], [ 4.4339e+27, 1.3848e-14, 6.8801e+16], [ 1.8370e+…
模型构造 nn.Module nn.Module是pytorch中提供的一个类,是所有神经网络模块的基类.我们自定义的模块要继承这个基类. import torch from torch import nn class MLP(nn.Module): # 声明带有模型参数的层,这里声明了两个全连接层 def __init__(self, **kwargs): # 调用MLP父类Module的构造函数来进行必要的初始化.这样在构造实例时还可以指定其他函数 # 参数,如"模型参数的访问.初始化和共享…
作 者:道哥,10+年的嵌入式开发老兵. 公众号:[IOT物联网小镇],专注于:C/C++.Linux操作系统.应用程序设计.物联网.单片机和嵌入式开发等领域. 公众号回复[书籍],获取 Linux.嵌入式领域经典书籍. 转 载:欢迎转载文章,转载需注明出处. 目录 什么是代码段? 什么是数据段? 数据的类型和长度 寻址范围 栈 实模式和保护模式 Linux 中的分段策略 饭是一口一口的吃,计算机也是一步一步的发展,例如下面这张英特尔公司的 CPU 型号历史: 为了利用性能越来越强悍的计算机,操…
残差网络ResNet resnet是何凯明大神在2015年提出的.并且获得了当年的ImageNet比赛的冠军. 残差网络具有里程碑的意义,为以后的网络设计提出了一个新的思路. googlenet的思路是加宽每一个layer,resnet的思路是加深layer. 论文地址:https://arxiv.org/abs/1512.03385 论文里指出,随着网络深度的增加,模型表现并没有更好,即所谓的网络退化.注意,不是过拟合,而是更深层的网络即便是train error也比浅层网络更高. 这说明,深…
关于什么是线性回归,不多做介绍了.可以参考我以前的博客https://www.cnblogs.com/sdu20112013/p/10186516.html 实现线性回归 分为以下几个部分: 生成数据集 读取数据 初始化模型参数 定义模型 定义损失函数 定义优化算法 训练模型 生成数据集 我们构造一个简单的人工训练数据集,它可以使我们能够直观比较学到的参数和真实的模型参数的区别.设训练数据集样本数为1000,输入个数(特征数)为2.给定随机生成的批量样本特征 \(\boldsymbol{X} \…
深度学习中常常会存在过拟合现象,比如当训练数据过少时,训练得到的模型很可能在训练集上表现非常好,但是在测试集上表现不好. 应对过拟合,可以通过数据增强,增大训练集数量.我们这里先不介绍数据增强,先从模型训练的角度介绍常用的应对过拟合的方法. 权重衰减 权重衰减等价于 \(L_2\) 范数正则化(regularization).正则化通过为模型损失函数添加惩罚项使学出的模型参数值较小,是应对过拟合的常用手段.我们先描述\(L_2\)范数正则化,再解释它为何又称权重衰减. \(L_2\)范数正则化在…
GoogLeNet GoogLeNet和vgg分别是2014的ImageNet挑战赛的冠亚军.GoogLeNet则做了更加大胆的网络结构尝试,虽然深度只有22层,但大小却比AlexNet和VGG小很多,GoogleNet参数为500万个,AlexNet参数个数是GoogleNet的12倍,VGGNet参数又是AlexNet的3倍,因此在内存或计算资源有限时,GoogleNet是比较好的选择:从模型结果来看,GoogLeNet的性能却更加优越. 之前转过一篇文章,详细描述了GoogLeNet的演化…
PyTorch提供的autograd包能够根据输⼊和前向传播过程⾃动构建计算图,并执⾏反向传播. Tensor Tensor的几个重要属性或方法 .requires_grad 设为true的话,tensor将开始追踪在其上的所有操作 .backward()完成梯度计算 .grad属性 计算的梯度累积到.grad属性 .detach()解除对一个tensor上操作的追踪,或者用with torch.no_grad()将不想被追踪的操作代码块包裹起来. .grad_fn属性 该属性即创建Tensor…
模型读取和存储 总结下来,就是几个函数 torch.load()/torch.save() 通过python的pickle完成序列化与反序列化.完成内存<-->磁盘转换. Module.state_dict()/Module.load_state_dict() state_dict()获取模型参数.load_state_dict()加载模型参数 读写Tensor 我们可以直接使用save函数和load函数分别存储和读取Tensor.save使用Python的pickle实用程序将对象进行序列化…