神经网络 CNN 名词解释
隐藏层
不是输入或输出层的所有层都称为隐藏层.
激活和池化都没有权重
使层与操作区分开的原因在于层具有权重。由于池操作和激活功能没有权重,因此我们将它们称为操作,并将其视为已添加到层操作集合中。
例如,我们说网络中的第二层是一个卷积层,其中包含权重的集合,并执行三个操作,即卷积操作,relu激活操作和最大池化操作。
传入Linear层之前展平张量
在将输入传递到第一个隐藏的Linear层之前,我们必须reshape()或展平我们的张量。每当我们将卷积层的输出作为Linear层的输入传递时,都是这种情况。
正向传播
正向传播是将输入张量转换为输出张量的过程。神经网络的核心是将输入张量映射到输出张量的功能,而正向传播只是将传递输入到网络并从网络接收输出的过程的特殊名称。
in_channels
对于最初输入图片样本的通道数in_channels取决于图片的类型,如果是彩色的,即RGB类型,这时候通道数固定为3,如果是灰色的,通道数为1。
out_channels
卷积完成之后,输出的通道数out_channels取决于过滤器的数量。从这个方向理解,这里的out_channels设置的就是过滤器的数目。
对于第二层或者更多层的卷积,此时的 in_channels 就是上一层的 out_channels , out_channels 还是取决于过滤器数目。
为什么GPU在深度学习中能够如此广泛的使用?
因为神经网络是易并行的(embarrassing parallel),即:很容易就能够将任务分解成一组独立的小任务;神经网络的很多计算都可以很容易地分解成更小的相互独立的计算,这使得GPU在深度学习任务中非常有用。
一个卷积核对一张图像进行卷积的每个运算是独立且相继发生的,故可将其分成一个个小任务,使用GPU加速运算; (图像分块后送入神经网络是否同理?)
张量
- 张量是神经网络中使用的主要数据结构,网络中的输入、输出和转换均使用张量表示.
- 张量与张量之间的运算必须是相同数据类型在相同的设备上发生的.
- 张量是包含一个同一类型的数据.
索引数量 | 计算机科学中的名称 | 数学中的名称 | Tensor表示 |
---|---|---|---|
0 | 数字 | 标量 | 0维张量 |
1 | 数组 | 矢量 | 1维张量 |
2 | 二维数组 | 矩阵 | 2维张量 |
n | N维数组 | N维张量 | n维张量 |
张量的属性(阶,轴,形状)
阶
- 张量的阶是指张量中的维数。假设我们有一个二阶张量。这意味着以下所有内容:
- 一个张量的秩告诉我们需要多少个索引来访问或引用张量结构中包含的特定数据元素
轴
- 一个张量的轴是一个张量的一个特定维度。
- 对于张量,其最后一个轴的元素均为数字。
- 假设有个张量是一个2阶的张量,这意味着这个张量有2个维度,或者等价于,张量有 2 个轴。
形状
- 张量的形状由每个轴的长度决定(知道了张量的形状就可知道每个轴的索引)。
- 3 x 3的形状告诉我们,这个2阶张量的每个轴的长度都是3,这意味着我们有三个沿着每个轴可用的索引。
张量输入到神经网络
- CNN输入张量的长度通常为4:[batchsize,color_channel,height,width];通过这4个索引,可以在特定图像的特定颜色通道中导航到特定的像素;
- 卷积神经网络的样本输入通常是批量的而不是单个的;
- 张量经过卷积层后的变化:卷积会改变高度、宽度以及颜色通道的数量;通道数与滤波器的数量有关;滤波器的大小会影响到高度和宽度;
- 经过卷积的通道不再叫彩色通道(已被改变),而叫做特征通道(特征图:输入颜色通道和卷积滤波器所产生的卷积结果)
- 输出通道 = 特征通道 = 特征映射
CNN构建及网络参数的使用
Parameter和Argument的区别
- Parameter在函数定义中使用,可将其看作是占位符;(形参)
- Argument是当函数被调用时传递给函数的实际值;(实参)
Parameter的两种类型
Hyperparameters
其值是手动和任意确定的;要构建神经网络:kernel_size,out_channels,out_features都需要手动选择.
Data dependent Hyperparameters
其值是依赖于数据的参数
- 该参数位于网络的开始或末端,即第一个卷积层的输入通道和最后一个卷积层的输出特征图
- 第一个卷积层的输入通道依赖于构成训练集的图像内部的彩色通道的数量(灰度图像是1,彩色图像是3)
- 输出层的输出特征依赖于训练集中类的数量(fashion-MNIST数据集中的类型为10,则输出层的out_features=10)
- 通常情况下,一层的输入是上一层的输出(即:卷积层中所有输入通道和线性层中的输入特征都依赖于上一层的数据)
当张量从卷积层传入线性层时,张量必须是flatten的
Parameter | Description |
---|---|
kernel_size | 设置滤波器的大小;滤波器的数量就是输出通道数 |
out_channels | 设置滤波器的数量,即为输出通道数 |
out_features | 设置输出张量的大小 |
训练神经网络的七个步骤
- 从训练集中获取批量数据
- 将批量数据传入网络
- 计算损失(预测值与真实值之间的差)【需要loss function实现】
- 计算损失函数的梯度 【需要back propagation实现】
- 通过上一步计算的梯度来更新权重,进而减少损失【需要optimization algorithm实现】
- 重复1-5步直到一个epoch执行完成
- 重复1-6步直到所设定的epochs执行完成并得到满意的accuracy #### 3.12.2 单批次图像训练
每个周期的迭代数
数据总数/batchsize(当改变batchsize时,也就是改变了更新权重的次数,也就是朝损失函数最小的防线前进的步数)
梯度
告诉我们应该走哪条路能更快的到达loss最小
多数名词解释都是从下面的链接复制:
https://blog.csdn.net/flyfor2013/article/details/106394341
https://github.com/wanyueli/DeepLizard-pytorch-/blob/master/Pytorch构建神经网络(一).ipynb
神经网络 CNN 名词解释的更多相关文章
- 卷积神经网络CNN总结
从神经网络到卷积神经网络(CNN)我们知道神经网络的结构是这样的: 那卷积神经网络跟它是什么关系呢?其实卷积神经网络依旧是层级网络,只是层的功能和形式做了变化,可以说是传统神经网络的一个改进.比如下图 ...
- 【深度学习系列】手写数字识别卷积神经--卷积神经网络CNN原理详解(一)
上篇文章我们给出了用paddlepaddle来做手写数字识别的示例,并对网络结构进行到了调整,提高了识别的精度.有的同学表示不是很理解原理,为什么传统的机器学习算法,简单的神经网络(如多层感知机)都可 ...
- 【深度学习系列】卷积神经网络CNN原理详解(一)——基本原理
上篇文章我们给出了用paddlepaddle来做手写数字识别的示例,并对网络结构进行到了调整,提高了识别的精度.有的同学表示不是很理解原理,为什么传统的机器学习算法,简单的神经网络(如多层感知机)都可 ...
- 卷积神经网络(CNN)学习笔记1:基础入门
卷积神经网络(CNN)学习笔记1:基础入门 Posted on 2016-03-01 | In Machine Learning | 9 Comments | 14935 Vie ...
- 积神经网络(CNN)的参数优化方法
http://www.cnblogs.com/bonelee/p/8528863.html 积神经网络的参数优化方法——调整网络结构是关键!!!你只需不停增加层,直到测试误差不再减少. 积神经网络(C ...
- 深度学习之卷积神经网络CNN及tensorflow代码实例
深度学习之卷积神经网络CNN及tensorflow代码实例 什么是卷积? 卷积的定义 从数学上讲,卷积就是一种运算,是我们学习高等数学之后,新接触的一种运算,因为涉及到积分.级数,所以看起来觉得很复杂 ...
- python机器学习卷积神经网络(CNN)
卷积神经网络(CNN) 关注公众号"轻松学编程"了解更多. 一.简介 卷积神经网络(Convolutional Neural Network,CNN)是一种前馈神经网络,它的人 ...
- nodejs、npm、grunt——名词解释
最近着手开发一个新项目,打算从工程化的角度整理一套自己的前端开发.发布体系. grunt这些工具,之前别人用我也用,并没有认真想过它们的前世今生,正好趁着这个机会,我来理一理目前业界比较流行这些工具的 ...
- Sql常用语法以及名词解释
Sql常用语法以及名词解释 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) D ...
随机推荐
- Struts2的功能扩展点有哪些?
l Interceptor及其相关子类 l TypeConverter及其相关子类 l Validator及其相关子类 l Result及其相关子类 l ObjectFactory及其相关子类
- 指出在 spring aop 中 concern 和 cross-cutting concern 的不同之处?
concern 是我们想要在应用程序的特定模块中定义的行为.它可以定义为我们想 要实现的功能. cross-cutting concern 是一个适用于整个应用的行为,这会影响整个应用程序. 例如,日 ...
- C语言之main方法解析(知识点1)
1.注释 /*自带注释*/2.引包 #include <stdio.h>3.主方法 void main{}4.执行体 printf("打印& ...
- C语言函数中的3个点 ...有什么作用
标准库提供的一些参数的数目可以有变化的函数.例如我们很熟悉的printf,它需要有一个格式串,还应根据需要为它提供任意多个"其他参数".这种函数被称作"具有变长度参数表的 ...
- C++类中隐藏的六个默认函数
Test类中隐藏的六个默认的函数 class Test { public: //默认的构造函数 Test(): //析构函数 ~Test(): //拷贝构造函数 Test(const Test &am ...
- C++中初始化列表的使用(总结)
原文链接 https://www.cnblogs.com/dishengAndziyu/p/10906081.html 参考链接:https://www.cnblogs.com/laiqun/p/57 ...
- 饿了么组件库element-ui正则表达式验证表单,后端验证表单。
前言 老是遇到一些朋友问一些element-ui组件使用相关的基础问题,因为官方文档上并没有提供所有琐碎的功能代码demo.从这里开始我会根据我实际遇到的问题记录一些常见的官方文档没有详述的功能代码, ...
- 基于React的仿QQ音乐(移动端)
前言 由于这段时间工作上也是挺忙的,就没有时间去写这个项目,中间一直都是写写停停,进度也是非常慢的.正好前几天都还比较空,就赶紧抓着空闲时间去写这个项目,最后紧赶慢赶地完成了.本项目采用了React的 ...
- 前端面试题整理——手写方法解析URL参数
//拆分字符串形式 function queryToObj() { const res = {} const search = location.search.substr(1);//去掉前面的&qu ...
- linux安装sbt
1.官网下载tgz sbt - Download (scala-sbt.org) 2.解压 tar zxvf sbt-0.13.5.tgz -C /opt/scala/ 3.建立启动sbt脚本 /*选 ...