激活函数

第二次作业:卷积神经网络 part2

若如初见. 提交于 2020-08-10 08:49:23
Part Ⅰ 问题总结 1 如何理解卷积神经网络中的1*1卷积? 在学习MobileNetV2代码中,提到使用1 1实现降维和升维,有一点迷惑,就去查了查资料,发现1 1卷积核真是一个神奇的存在。它存在于各种结构中,比如:残差网络的Bootleneck残差模块里、GoogleNet的Inception模块里··· 当1 1卷积出现时,在大多数情况下它作用是升/降特征的维度,这里的维度指的是通道数(厚度),而不改变图片的宽和高。 同时,还会降低参数的数量,增加了网络的深度。 举个例子,h w 6的feature map,经过一个1 1的卷积核,变成了h w。有5个卷积核,输出就变成了h w*5,实现了降维的操作。升维也是一样的道理。 Part Ⅱ 代码练习 1 MobileNetV1 1.1 MobileNetV1概述 MobileNets基于一种流线型结构使用深度可分离卷积来构造轻型权重深度神经网络。MobileNetV1是一个有效的网络结构以及两组用于构建小型、低延迟模型的超参数,能在移动以及嵌入式视觉应用上轻易匹配设计要求。 1.2 MobileNetV1结构 1.2.1 深度可分离卷积 深度级可分离卷积其实是一种可分解卷积操作,其可以分解为两个更小的操作:depthwise convolution和pointwise convolution。 Depthwise

第二次作业:卷积神经网络 part 2

青春壹個敷衍的年華 提交于 2020-08-10 08:36:46
一、问题总结 在深度学习模型中,为什么每次训练的测试结果不同? 二、代码练习 1、MobileNetV1 #深度可分离卷积 class Block(nn.Module): def __init__(self, in_planes, out_planes, stride=1): super(Block, self).__init__() # Depthwise 卷积,3*3 的卷积核,分为 in_planes,即各层单独进行卷积 self.conv1 = nn.Conv2d(in_planes, in_planes, kernel_size=3, stride=stride, padding=1, groups=in_planes, bias=False) self.bn1 = nn.BatchNorm2d(in_planes) # Pointwise 卷积,1*1 的卷积核 self.conv2 = nn.Conv2d(in_planes, out_planes, kernel_size=1, stride=1, padding=0, bias=False) self.bn2 = nn.BatchNorm2d(out_planes) def forward(self, x): out = F.relu(self.bn1(self.conv1(x))) out = F.relu

代码学习和论文阅读

放肆的年华 提交于 2020-08-10 08:35:53
代码学习和论文阅读 学习理解MobileNetV1、MobileNetV2的代码;阅读《HybridSN: Exploring 3-D–2-DCNN Feature Hierarchy for Hyperspectral Image Classification》,并学习其代码实现,理解3D卷积和2D卷积; 阅读《Beyond a Gaussian Denoiser: Residual Learning of Deep CNN for Image Denoising》 MobileNetV1代码实现 关于MobileNetV1的相关学习和理解,都整理在上一篇文章里面,其核心内容就是将传统卷积拆分为Depthwise+Pointwise两部分,从而减少了参数量,并保持了网络性能。 假如当前输入为19x19x3 标准卷积:3x3x3x4(stride = 2, padding = 1),那么得到的输出为10x10x4 深度可分离卷积: 深度卷积:3x3x1x3(3个卷积核对应着输入的三个channel),得到10x10x3的中间输出 点卷积:1x1x3x4,得到最终输出10x10x4 一个标准的卷积层以 \(D_F * D_F * M\) 大小的feature map F作为输入,然后输出一个 \(D_G * D_G * N\) 的feature G 卷积核K的参数量为 \(D_K *

Maxout激活函数以及特点?

随声附和 提交于 2020-08-10 08:33:22
问题引入 在做深度学习的建模时,会接触到很多的激活函数,对于这么一个函数Maxout你知道是什么吗?他的优缺点是啥呢? 问题解答 Maxout出现在ICML2013上,作者Goodfellow将maxout和dropout结合后,号称在MNIST, CIFAR-10, CIFAR-100, SVHN这4个数据上都取得了start-of-art的识别率。 Maxout可以看做是在深度学习网络中加入一层激活函数层,包含一个参数k.这一层相比ReLU,sigmoid等,其特殊之处在于增加了k个神经元,然后输出激活值最大的值. 我们常见的隐含层节点输出: 而在Maxout网络中,其隐含层节点的输出表达式为: 其中 假设 w 是 2 维,那么有 可以注意到,ReLU 和 Leaky ReLU 都是它的一个变形(比如,w1,b1=0的时候,就是 ReLU). 与常规激活函数不同的是,它是一个可学习的分段线性函数.然而任何一个凸函数,都可以由线性分段函数进行逼近近似。其实我们可以把以前所学到的激活函数:ReLU、abs激活函数,看成是分成两段的线性函数,如下示意图所示:实验结果表明Maxout与Dropout组合使用可以发挥比较好的效果。 Maxout的拟合能力是非常强的,它可以拟合任意的的凸函数。作者从数学的角度上也证明了这个结论,即只需2个 maxout 节点就可以拟合任意的凸函数了(相减)

激活函数介绍

这一生的挚爱 提交于 2020-08-10 07:31:01
1. Step function Step function在实际项目中不经常使用。 2. Sigmoid 典型的应用是在最后一层进行二分类使用。 3 Tanh Function 通常用于隐层中. 4 ReLU Function 如果在实际应用中不知道该如何选择激活函数,可以使用Relu. 5 Leaky ReLU Function 6 Softmax 来源: oschina 链接: https://my.oschina.net/u/4228078/blog/4375274

深度学习及pytorch基础

橙三吉。 提交于 2020-08-09 23:22:20
【任务一】视频学习心得及问题总结 根据下面三个视频的学习内容,写一个总结,最后列出没有学明白的问题。 【任务二】代码练习 在谷歌 Colab 上完成代码练习中的 2.1、2.2、2.3、2.4 节,关键步骤截图,并附一些自己的想法和解读。 【任务三】进阶练习 在谷歌 Colab 上完成猫狗大战的VGG模型的迁移学习,关键步骤截图,并附一些自己想法和解读。 在该代码的基础上,下载AI研习社“猫狗大战”比赛的测试集,利用fine-tune的VGG模型进行测试,按照比赛规定的格式输出,上传结果在线评测。将在线评测结果截图,及实现代码发在博客。同时,分析使用哪些技术可以进一步提高分类准确率。 1. 视频学习 视频学习包括两章内容: 1.1 绪论 (下载地址: https://www.jianguoyun.com/p/DVJarjYQrKKIBhi8la0D) 从专家系统到机器学习 从传统机器学习到深度学习 深度学习的能与不能 1.2 深度学习概述 (下载地址: https://www.jianguoyun.com/p/DVlvT3cQrKKIBhi_la0D) 浅层神经网络:生物神经元到单层感知器,多层感知器,反向传播和梯度消失 神经网络到深度学习:逐层预训练,自编码器和受限玻尔兹曼机 1.3 pytorch 基础 (下载地址: https://www.jianguoyun.com/p

批标准化—BN

怎甘沉沦 提交于 2020-08-09 23:21:18
作用: 神经网络对0附近的数据更敏感,但是随着网络层数的增加,特征数据会出现偏离0均值的情况,标准化可以使数据符合以0位均值,1为标准差的正太分布,把偏移的特征数据重新拉回0附近。 方法:   标准化:使数据符合0为均值,1为标准差的分布。   批标准差:对一小批数据(batch),做标准化处理。   批标准化后, 第K个 卷积核的输出特征图中的 第i个 像素点的值计算过程为:       批标准化前,第K个卷积核,输出特征图中第i个像素点的值    批标准化前,第K个卷积核,batch张输出特征中所有像素点的平均值即 像素点的数量 = batch*该层卷积核数量*每个 卷积核的输出特征图像素数量   批标准化前,第k个卷积核,batch张输出特征中所有要素点的标准差          BN操作将原本偏移的特征数据重新拉回到0均值,使进入激活函数的数据分布在激活函数线性区,使得输入数据的微小变化更明显的体现到激活函数的输出,提升了激活函数对输入数据的区分力      但是这种简单的特征数据标准化使特征数据完全满足标准正分布,集中在激活函数的中心区域,使激活函数失去了非线性特性。      因此在BN操作中为 每个卷积 核引入了两个可训练参数γ和β,反向传播时缩放银子γ和偏移因子β会与其他带训练参数一同被训练优化

如何编写 VS Code 扩展

痞子三分冷 提交于 2020-08-09 14:42:13
通过为流行的代码编辑器编写自己的扩展来添加缺失的功能。 Visual Studio Code(VS Code)是微软为 Linux、Windows 和 macOS 创建的跨平台代码编辑器。遗憾的是,微软版本的 VS Code 是在 Microsoft Software License 下发布的,这不是一个开源的许可证。然而,它的源代码是开源的,在 MIT 许可证下由 VSCodium 项目发布。 VSCodium 和 VS Code一样,支持扩展、内嵌式 Git 控制、GitHub 集成、语法高亮、调试、智能代码补完、代码片段等。换句话说,对于大多数用户来说,使用 VS Code 和 VSCodium 没有什么区别,而且后者是完全开源的! 什么是 VS Code 扩展? 扩展extension可以让你为 VS Code 或 VSCodium 添加功能。你可以在 GUI 中或从终端安装扩展。 你也可以构建自己的扩展。有几个你可能想学习如何构建扩展的原因: 想要添加一些功能: 如果缺失你想要的功能,你可以创建一个扩展来添加它。 为了乐趣和学习: 扩展 API 允许你探索 VSCodium 是如何工作的,这是一件有趣的事情。 为了提高您的技能: 创建扩展可以提高你的编程技能。 为了成名: 创建一个对他人有用的扩展可以提高你的公众形象。 安装工具 在你开始之前,你必须已经安装了 Node

【深度学习】卷积神经网络

为君一笑 提交于 2020-08-09 12:37:35
本文为深度学习的学习总结,讲解卷积神经网络。欢迎交流 计算机视觉 如果我们想要输入的图片像素为 1000×1000×3,则此时神经网络特征维度为 3 百万, W [ 1 ] W^{[1]} W [ 1 ] 采用全连接时,维度更夸张。我们使用卷积运算来解决这个问题。 边缘检测 I 卷积运算是卷积神经网络最基本的组成部分。我们使用 边缘检测 作为入门样例。 为了让电脑搞清楚下面这张图片的内容,我们可能需要先检测图片中的垂直边缘,右上角的图为垂直 边缘检测器 的输出,右下角为水平边缘检测器的输出: 接下来我们讲解如何检测出这些边缘。下图中,左边为一个 6×6 的灰度图像,即 6×6×1 的矩阵,没有 RGB 三通道。我们可以构造图中中间的 3×3 矩阵,成为 过滤器 (或核), ∗ * ∗ 运算符为 卷积运算 。而矩阵运算的结果是一个 4×4 的矩阵,因为过滤器在图中左边的矩阵中有 4×4 个可能的位置,可将其看作 4×4 的图像: 我们计算右边矩阵中的第一个元素的值。将 3×3 的过滤器覆盖在输入图像的蓝色区域,并在每个元素上标记过滤器的值,将对应元素相乘后求和 1 × 3 + 0 × 0 + . . . + 2 × − 1 = − 5 1\times3+0\times0+...+2\times-1=-5 1 × 3 + 0 × 0 + . . . + 2 × − 1 = − 5

神经网络权值初始化之Xavier和He初始化

不羁岁月 提交于 2020-08-07 09:29:54
Xavier初始化 : 条件:正向传播时,激活值的方差保持不变;反向传播时,关于状态值的梯度的方差保持不变。 初始化方法: 假设激活函数关于0对称,且主要针对于全连接神经网络。适用于tanh和softsign 论文地址: Understanding the difficulty of training deep feedforward neural networks 参考资料: 深度学习之参数初始化(一)——Xavier初始化 He初始化 : 论文地址: Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification 参考资料: 深度学习之参数初始化(二)——Kaiming初始化 He初始化论文阅读笔记与实现 来源: oschina 链接: https://my.oschina.net/u/4416751/blog/4467662