神经网络

第二次作业:卷积神经网络 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

详解下一代神经网络-无监督对比学习框架SimCLR

不打扰是莪最后的温柔 提交于 2020-08-10 08:40:00
背景 今天介绍下SimCLR,也是Hinton老爷子在今年提出的工作。首先介绍下为什么下一代神经网络需要无监督对比学习。目前整个人工智能行业的落地,其实都依赖于监督学习模式,无论是OCR、ASR、TTS、ImageDetection,如果没有大量的标注,是很难训练出商业化程度的模型的。这个模式需要被打破,因为世界上存在太多的未知场景,完全依赖人肉标注是不行的。 所以未来无监督学习大势所趋。其实在这方面之前已经有了一些工作,比如Bert模型,就可以基于大量的unlabeled数据训练,然后在小数据集上Fintune来取得效果。类似Bert这一类的训练模式叫做自监督学习。这种模式在NLP领域会有比较好的效果,但是在图像领域效果不明显,因为图像的数据表示会比语意复杂得多。 举个简单例子,“喜欢_ _ _ _的人都会关注凡人机器学习”,这句话虽然空了4个字,但是根据上下文不难猜出这4个字是“机器学习”。所以在NLP领域,自监督是比较好实现的。但是在图像方面,假设戴了墨镜,你能根据一个人的鼻子、嘴和耳朵推测出这个人墨镜后面的样子么?所以图像领域的无监督学习要难的多。 SimCLR基本原理 SimCLR使用无监督对比学习模式在图像领域取得了突破性的成果,可以看下在ImageNet数据集的表现。 那SimCLR究竟是怎么实现的呢,我们分步骤介绍下,看下图: 第一步:Augmentation

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

我们两清 提交于 2020-08-10 08:38:19
一、 问题总结 MobileNetV2 版本中,对数据的处理中,加入的 Inverted residual block ,提升通道数,但是 ResNet 首先进行降通道降低计算量,两个网络为什么进行这种不一样的操作。 二、 代码练习 2.1 MobileNet V1 简介: MobileNet 是 Google 于 2017 年发布的网络架构,因为之前的 VGG , GoogleNet,ResultNet 进一步提高 CNN 的性能,但是到 ResNet 网络已经达到了 152 层,参数量到了 300 多 MB ,这不仅是巨大的存储和计算开销,也严重限制了 CNN 的应用。 MobileNet 应运而生,其中 V1 版本的主要核心是把卷积拆分为 Depthwise+Pointwise 两部分,代码如下: 核心部分: 网络结构:32×32×3 ==>32×32×32 ==> 32×32×64 ==> 16×16×128 ==> 16×16×128 ==> 8×8×256 ==> 8×8×256 ==> 4×4×512 ==> 4×4×512 ==>2×2×1024 ==> 2×2×1024 然后是池化 ==> 1×1×1024 最后全连接到 10 个输出节点 在 CIFAR10 数据集的分类测试结果如下: 2.2 MobileNet V2 简介: V1 版本中存在问题:结构简单

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

天涯浪子 提交于 2020-08-10 08:38:00
【第一部分】问题总结 创建MobileNet V2时,第二个基本单元的步长与论文中不一致: MobileNet V2中使用了BatchNorm来优化网络,归一化来加速网络,HybridSN中添加后分类结果变差。 【第二部分】代码练习 使用MobileNet V1对CIFAR10进行分类 可分离卷积的实现: class Block(nn.Module): '''Depthwise conv + Pointwise conv''' def __init__(self, in_planes, out_planes, stride=1): super(Block, self).__init__() # Depthwise 卷积,3*3 的卷积核,分为 in_planes,即各层单独进行卷积 # group这个参数是用做分组卷积的,但是现在用的比较多的是groups = in_channel # 当groups = in_channel时,是在做的depth-wise conv的 self.conv1 = nn.Conv2d(in_planes, in_planes, kernel_size=3, stride=stride, padding=1, groups=in_planes, bias=False) # 在卷积神经网络的卷积层之后总会添加BatchNorm2d进行数据的归一化处理

第二次作业:卷积神经网络 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

深度学习到底有哪些经典成果?道翰天琼认知智能机器人API平台接口为您揭秘。

不打扰是莪最后的温柔 提交于 2020-08-10 08:09:50
深度学习到底有哪些经典成果? 道翰天琼认知智能机器人API平台接口为您揭秘。 2006年,Hinton 发表了一篇论文《A Fast Learning Algorithm for Deep Belief Nets》,提出了降维和逐层预训练方法,该方法可成功运用于训练多层神经网络,使深度网络的实用化成为可能。该论文也被视作深度学习领域的经典之作。 从原理来看,深度学习与神经网络紧密相关:神经网络由一层一层的神经元构成,层数越多,神经网络越深,而所谓“深度学习”就是模拟人类大脑,运用深层神经网络对输入进行“思考”、“分析”并获得目标输出的过程。 那么, 自2006年Hinton发表经典论文以来,深度学习领域又取得了哪些突破性成果呢? Google Brain前员工Denny Britz 在本文中进行了回顾整理,按时间顺序介绍了从2012年到2020年深度学习领域的数项关键性科研成就,包括运用AlexNet和Dropout处理ImageNet(2012年)、使用深度强化学习玩Atari游戏(2013年)、应用注意力机制的编码器-解码器网络(2014年)、生成对抗网络(2014-2015年)、ResNet(2015年)、Transformer模型(2017年)、BERT与微调自然语言处理模型(2018年),以及2019-2020年及之后的BIG语言模型与自监督学习等

大话深度学习:B站Up主麦叔教你零代码实现图像分类神经网络

梦想的初衷 提交于 2020-08-10 07:29:37
之前,我在B站发布了“大话神经网络,10行代码不调包,听不懂你打我!”的视频后,因为简单易懂受到了很多小伙伴的喜欢! 但也有小伙伴直呼不够过瘾,因为大话神经网络只有4个神经元。 也有小伙伴问不写代码,是否可以做人工智能。应对这两个问题,我录制了新的视频,来实现一套基于CNN的图片分类的神经网络! 华为云视频: https://bbs.huaweicloud.com/videos/102831 在视频中,我们先是运行一套基于tensorflow的代码,让大家体验原汁原味从数据准备,训练,和使用模型的过程。相关的tensorflow代码,资源的下载都可以在我的github上获得: https://github.com/maishucode/tensorflow-image-detection ow-image-detection 然后我会详细讲解如何利用华为云ModelArts,零代码轻松实现一个图片分类网络,并且可以发布出去给你的朋友使用。 看不了视频的也可以看下面的图文教程: 1、在华为云的对象存储服务(OBS)中创建一个桶 选择区域,输入桶名称,其他选项按需调整,这里我们先都用默认值 2、桶创建完后,我们在桶里新建几个文件夹 目录结构如下,train用来放我们的训练数据,out用来放我们的训练结果 maishu └── food-img ├── out └── train 3

循环神经网络(RNN)的代码实现

时间秒杀一切 提交于 2020-08-10 06:40:02
代码部分 import tensorflow as tf import tensorflow.contrib as rnn #引入RNN form tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets("data/", one_hot=True) batch_size = 128 #定义参数 #定义训练数据 x = tf.placeholder("float", [None, 28, 28]) y = tf.placeholder("float", [None, 10]) #定义w和b weights = { 'out': tf.Variable(tf.random_normal([128, 10]))} biases = { 'out': tf.Variable(tf.random_normal([10])) } def RNN(x, weights, biases): #按照RNN的方式处理输入层 x = tf.unstack(x, 28, 1) #lstm层 #forget_bias (默认为1)到遗忘门的偏置,为了减少在开始训练时遗忘的规模 lstm_cell = rnn.BasicLSTMCell(128, forget_bias=1.0)

机器学习驱动的游戏AI 应用流程指南

蓝咒 提交于 2020-08-10 06:27:32
以卡丁车游戏演示 AI 开发过程,来一场速度与激情?自己玩卡丁车的时候总是碰撞?那不如跟着课程作者一起来打造一个可以自己掌控的AI 玩家?哇~想想就很酷,那我们开始吧! #你将获得# 1、实践将机器学习 AI 应用到游戏的全过程 2、了解设计高质量机器学习 AI 的诀窍 3、课程中所用案例的全部源码 #课程简介# 在过去的一年里,深度强化学习技术从理论的不断革新走向了应用场景。在游戏中实际运用它,是我们今年系列的主题。 本期的课程里,我们将一起完成一款使用机器学习AI对手的卡丁车游戏(基于Unity官方免费美术资产)。游戏具有实际可玩性,玩家的对手完全通过机器学习过程创建。 课程主要分为四个部分: 1. 过去一年的发展与工作环境更新 2. 以卡丁车游戏演示 AI 开发过程 3. 优质 AI 的神经网络、观测与奖励设计 4. 将 AI 整合进入游戏里并进行总结 试玩了WebGL版本,不得不说,AI开得比我好 #关于作者# 张骋: 自动驾驶/AI算法工程师 2006年12月进入游戏行业,2017年转入自动驾驶领域。在国内自主品牌车企参与自动驾驶软件研发工作,目前仍为独立游戏开发者。 周蕴嘉: AI算法/工具开发工程师 更多精彩文章,可下载 【在理】APP 查看~ 来源: oschina 链接: https://my.oschina.net/u/4390329/blog/4462795

任务型对话(一)—— NLU/SLU(意图识别和槽值填充)

我的梦境 提交于 2020-08-10 05:46:32
1,概述   任务型对话系统越来越多的被应用到实际的场景中,例如siri,阿里小密这类的产品。通常任务型对话系统都是基于pipline的方式实现的,具体的流程图如下:        整个pipline由五个模块组成:语音识别;自然语言理解;对话管理;自然语言生成;语音合成。现在越来越多的产品还融入了知识库,主要是在对话管理模块引入。在这里除了语音识别和语音合成模块不属于自然语言处理范畴且属于可选项之外,其他的三个模块都是必要的。   自然语言理解(NLU):主要作用是对用户输入的句子或者语音识别的结果进行处理,提取用户的对话意图以及用户所传递的信息。   对话管理(DM):对话管理分为两个子模块,对话状态追踪(DST)和对话策略学习(DPL),其主要作用是根据NLU的结果来更新系统的状态,并生成相应的系统动作。   自然语言生成(NLG):将DM输出的系统动作文本化,用文本的形式将系统的动作表达出来。   我们接下来将会详细讨论这四个模块(NLU,DST,DPL,NLG)。 2 意图识别和槽值填充   举一个简单的例子,以一个询问天气的任务型对话为例,根据专家知识,我们会预先定义该任务的意图和相应的槽,这句话该怎么理解呢?   比如用户输入:“今天深圳的天气怎么样?”,此时用户所表达的是查询天气,在这里我们可以认为查询天气就是一种意图,那具体查询哪里的天气,哪一天的天气