深度神经网络

1.搭建神经网络基本流程

↘锁芯ラ 提交于 2020-02-12 13:03:02
定义添加神经层的函数 1.训练的数据 2.定义节点准备接收数据 3.定义神经层:隐藏层和预测层 4.定义 loss 表达式 5.选择 optimizer 使 loss 达到最小 然后对所有变量进行初始化,通过 sess.run optimizer,迭代 1000 次进行学习: import tensorflow as tf import numpy as np # 添加层 def add_layer(inputs, in_size, out_size, activation_function=None): # add one more layer and return the output of this layer Weights = tf.Variable(tf.random_normal([in_size, out_size])) biases = tf.Variable(tf.zeros([1, out_size]) + 0.1) Wx_plus_b = tf.matmul(inputs, Weights) + biases if activation_function is None: outputs = Wx_plus_b else: outputs = activation_function(Wx_plus_b) return outputs # 1.训练的数据 #

神经网络尺寸和参数量计算

十年热恋 提交于 2020-02-08 23:00:32
前言 这里写个参数计算,会借鉴各路大神的杰作,主要是整理一下怕自己以后忘了找起来麻烦 大部分引自https://blog.csdn.net/qian99/article/details/79008053 参数计算方法 首先是卷积层的计算 下面是一个32x32x3的输入,我们用5x5x3的滤波器去卷积 所以最后是5 5 3=75的一个参数量 那么最后的输出也是需要一个公式的,一般我们如果使用填充将不改变输出尺寸,而只改变滤波器数量。 那么如果不使用填充,则见下面的输出计算 如果上面我用了6个滤波器,那么输出为28x28x6,则参数量为5x5x3x6+6=456 对CNN而言,每个卷积层的参数量计算如下: 卷积和池化的输出计算 参数:W:宽; H:高; D:深度; K:卷积核的个数; F:卷积核的大小; S:步长; P:用0填充 卷积后输出 =[(输入大小 - 卷积核大小 + 2*P )/步长] + 1. (不能整除时,一般去掉小数部分取整,如4.5,则取4) 池化层的计算和卷积一样 来源: CSDN 作者: Nick_Dizzy 链接: https://blog.csdn.net/Nick_Dizzy/article/details/104228037

关于神经网络中隐藏层和神经元的深入理解

此生再无相见时 提交于 2020-02-08 17:33:02
最近复习了一下基础知识,看到MLP的结构,关于隐藏层和神经元有了新的一些理解。 隐藏层的意义 要说明隐藏层的意义,需要从两个方面理解,一个是 单个隐藏层的意义 ,一个是 多层隐藏层的意义 。 单个隐藏层的意义 隐藏层的意义就是把输入数据的特征,抽象到另一个维度空间,来展现其更抽象化的特征,这些特征能更好的进行线性划分。 举个栗子,MNIST分类。 输出图片经过隐藏层加工, 变成另一种特征代表 (3个神经元输出3个特征), 将这3个特征可视化出来。就有了下面这张图, 我们发现中间的隐藏层对于"1"的图片数据有了清晰的认识,能将"1"的特征区分开来。 多个隐藏层的意义 多个隐藏层其实是对输入特征多层次的抽象,最终的目的就是为了 更好的线性划分不同类型的数据(隐藏层的作用) 。 怎么理解这句话呢,举个有趣的例子,如下图所示。 我们的输入特征是:身高、体重、胸围、腿长、脸长等等一些外貌特征,输出是三个类:帅气如彭于晏,帅气如我,路人。 那么隐藏层H1中,身高体重腿长这些特征,在H1中表达的特征就是身材匀称程度,胸围,腰围,臀围这些可能表达的特征是身材如何,脸长和其他的一些长表达的特征就是五官协调程度。 那么把这些特征,再输入到H2中,H2中的神经元可能就是在划分帅气程度,身材好坏了,然后根据这些结果,分出了三个类。 很遗憾,帅气程度略输彭于晏一筹。 那么,是不是隐藏层约多就越好呢

学习笔记-卷积神经网络(3)

≯℡__Kan透↙ 提交于 2020-01-24 02:08:00
实现卷积神经网络 迁移学习 (1)下载神经网络开源的实现(代码和权重) (2)训练集少的情况下,冻结层,保留一个层来训练,在此之上再训练softmax层,改变softmax层的预测 (3)训练集多的情况下,冻结前面较少的层,训练后面的层,构建自己的输出单元。 (4)利用大量数据,重新训练每一层,更新每层的权重。 ——————————————————————————————————————— 计算机视觉现状 深度学习已经成功地应用于计算机视觉,自然语言处理,语音识别,在线广告等 1.手工工程 2.标签数据 —————————————————————————————————————— 目标检测-目标定位 1.训练集不仅包含神经网络需要预测的对象分类标签,还包含表示边界框(Bounding Box)的四个数字(边界框的中心点,框长和框宽) Example: 1.pedestrian 2.car 3.motorcycle 4.background Need to output:(Bx,By),Bh,Bw,class label(1-4) 窗口滑动目标检测 以某个步幅在图像中滑动窗口,遍历整张图片,判断目标是否在窗口中。每一个窗口利用卷积网络进行处理。计算成本较高,速度慢 通过卷积实现滑动窗口对象检测 输出精准的边界框 ——YOLO 主题思想:将图像进行网格划分

卷积神经网络

寵の児 提交于 2020-01-23 16:07:47
​卷积神经网络这个词,应该在你开始学习人工智能不久后就听过了,那究竟什么叫卷积神经网络,今天我们就聊一聊这个问题。 不用思考,左右两张图就是两只可爱的小狗狗,但是两张图中小狗狗所处的位置是不同的,左侧图片小狗在图片的左侧,右侧图片小狗在图片的右下方,这样如果去用图片特征识别出来的结果,两张图的特征很大部分是不同的,这不是我们希望的,那思考一下,为什么我们人就可以把它们都看成是可爱的小狗狗呢?这是因为平移不变性和空间层次结构,这两个概念是卷积神经网络中的概念。 平移不变性与模式的空间层次结构 这很好理解,我们要观察或者识别的物体,在图片上平行移动,我们都可以识别出来,因为无论他们在任何地方,都有相同的特征;我们识别物体的时候,先识别物体的局部特征信息,然后再脑袋中将局部信息组合起来,组合而成更高层次的特征信息,最终形成整体信息。比如上图,我们认出他们是可爱的狗狗,但脑袋在实际运转的过程中,是先看到了一些像素点(黑白红等),然后将像素点连接起来形成轮廓或特征(耳朵、眼睛、舌头),最后组合这些特征形成最后的结论(可爱的狗狗)。这就给我们了启发,我们在计算机图片识别的识别的时候,是不是可以借鉴这种机制呢,不一定需要图片全部的信息,而是识别图片的特征信息,再由这些特征,我们会将其组合成更大的特征,再组合,最终得出整体的特征信息,如下看一个经典的图: 我们的人脑在识别人脸的时候

卷积神经网络

回眸只為那壹抹淺笑 提交于 2020-01-22 22:19:29
​卷积神经网络这个词,应该在你开始学习人工智能不久后就听过了,那究竟什么叫卷积神经网络,今天我们就聊一聊这个问题。 不用思考,左右两张图就是两只可爱的小狗狗,但是两张图中小狗狗所处的位置是不同的,左侧图片小狗在图片的左侧,右侧图片小狗在图片的右下方,这样如果去用图片特征识别出来的结果,两张图的特征很大部分是不同的,这不是我们希望的,那思考一下,为什么我们人就可以把它们都看成是可爱的小狗狗呢?这是因为平移不变性和空间层次结构,这两个概念是卷积神经网络中的概念。 平移不变性与模式的空间层次结构 这很好理解,我们要观察或者识别的物体,在图片上平行移动,我们都可以识别出来,因为无论他们在任何地方,都有相同的特征;我们识别物体的时候,先识别物体的局部特征信息,然后再脑袋中将局部信息组合起来,组合而成更高层次的特征信息,最终形成整体信息。比如上图,我们认出他们是可爱的狗狗,但脑袋在实际运转的过程中,是先看到了一些像素点(黑白红等),然后将像素点连接起来形成轮廓或特征(耳朵、眼睛、舌头),最后组合这些特征形成最后的结论(可爱的狗狗)。这就给我们了启发,我们在计算机图片识别的识别的时候,是不是可以借鉴这种机制呢,不一定需要图片全部的信息,而是识别图片的特征信息,再由这些特征,我们会将其组合成更大的特征,再组合,最终得出整体的特征信息,如下看一个经典的图: 我们的人脑在识别人脸的时候

卷积神经网络CNNs 为什么要用relu作为激活函数?

时间秒杀一切 提交于 2020-01-18 17:30:52
relu激活函数的优势: (1)反向传播时,可以避免梯度消失。 (2)Relu会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生(以及一些人的生物解释balabala)。 (3)相对于sigmoid激活函数,tanh激活函数,求导简单。采用sigmoid等函数,算激活函数时(指数运算),计算量大,反向传播求误差梯度时,求导涉及除法,计算量相对大,而采用Relu激活函数,整个过程的计算量节省很多。 缺点: (1)左侧神经元为0,导致神经元死亡,不再更新。 (2)输出非负,仍然存在zigzag现象。 参考文章1:【深度学习】为什么使用ReLU作为激活函数,ReLU比sigmoid优秀在哪里 参考文章2:卷积神经网络之relu激活函数的理解 参考文章3:神经网络为什么要使用激活函数,为什么relu要比sigmoid要好 来源: CSDN 作者: Dontla 链接: https://blog.csdn.net/Dontla/article/details/104030712

深度残差网络

浪尽此生 提交于 2020-01-12 10:18:30
什么是深度残差网络 实际就是在一般的深度神经网络中加入短连接(shortcut connection)或者跳跃连接(skip connection)。 为什么需要深度残差网络 梯度消失问题:随着深度的增加,梯度消失,深度神经网络的比较快靠前的网络层很难训练。 加入短连接后,靠后网络的层的梯度可以直接反向传播到前面的层,加速网络训练。 另外一个解释就是,加上短连接后,参数没有增加,网络学习目标相当于学习原始目标和输入的差。而残差被假设更容易学习。这也是残差网络的由来。 来源: CSDN 作者: -倾城之恋- 链接: https://blog.csdn.net/P081513083/article/details/103801975

卷积神经网络(CNN)

£可爱£侵袭症+ 提交于 2020-01-11 15:39:45
模仿人眼的一个局部相关性、局部感受的机制(感受野),提出的网络叫做卷积神经网络,每次感受一个小的方块(视野),窗口方块移动时,权值是共享的。 卷积神经网络中的权值共享,类似于滤波操作,就是整张图片在使用同一个卷积核内的参数,比如一个3×3×1的卷积核,这个卷积核9个参数被整张图共享,而不会因为图像内位置的不同而改变卷积核内的权系数,这大大减少了卷积核中的参数量,此外因为权值共享后意味着每个卷积和只能提取到一种特征,为了增加cnn的表达能力,当然需要多个核。 常见卷积操作和概念 1. upsample(向上采样) from torch . nn import functional as F # ( 1 , 16 , 14 , 14 ) - - > ( 1 , 16 , 28 , 28 ) out = F . interpolate ( x , scale_factor = 2 , mode = 'nearest' ) 2. pooling层(池化) 下采样:略 3. BatchNorm 目的:避免出现梯度离散的现象 操作:通过feature scaling将特征数据进行归一化缩放,对于[b,c,h,w]的batch数据,将生成[c]维的数据,可以用在image Normalization和Batch Normalization中 优点:收敛更快;更好的性能;更具有鲁棒性 算法步骤:

Machine Learning-A Probabilistic Perspective笔记——第一章 INTRODUCTION

一个人想着一个人 提交于 2020-01-02 20:40:31
Machine Learning-A Probabilistic Perspective笔记 MLAPP是统计机器学习领域内一本经典著作。就兴起先后顺序来说,统计机器学习较如今大火的深度学习神经网络更久远,不同于神经网络作为一个端到端的系统,将输入到输出过程看做一个黑匣子,统计机器学习更多地从概率论和数理统计角度诠释数据,可解释性更强。 关于这本书,有类似的博客: 参考博客 上述博客的博主写得很详尽,其初衷和经历亦与我类似,于是我决定在其上进行自己的补充。 MLAPP——第一章 Introduction We are drowning in information and starving for knowledge.——John Naisbitt 第一章概述机器学习的一些基本概念。要点如下: 监督学习与无监督学习 分类与回归 机器学习应用举例 参数模型和非参数模型 在统计学中,参数模型通常假设总体(随机变量)服从某一个分布,该分布由一些参数确定(比如正太分布由均值和方差确定),在此基础上构建的模型称为参数模型;非参数模型对于总体的分布不做任何假设,只是知道总体是一个随机变量,其分布是存在的(分布中也可能存在参数),但是无法知道其分布的形式,更不知道分布的相关参数,只有在给定一些样本的条件下,能够依据非参数统计的方法进行推断。 从上述的区别中可以看出,问题中有没有参数