赞
踩
卷积运算通常用星号表示:
s
(
t
)
=
(
x
∗
w
)
(
t
)
s(t)=(x∗w)(t)
s(t)=(x∗w)(t)
在卷积网络的术语中,卷积的第一个参数(函数 x)通常叫做输入(input),第二个参数(函数 w)叫做核函数(kernel function),输出被称作特征映射(feature map)。
在机器学习的应用中,输入通常是多维数组的数据,而核通常是由学习算法优化得到的多维数组的参数。我们通常假设在存储了数值的有限点集以外,卷积函数的值都为零,因而我们可以通过对有限个数组元素的求和来计算卷积。卷积运算通常会在多个维度上进行。
卷积运算通过三个重要的思想来帮助改进机器学习系统: 稀疏交互(sparse interactions)、参数共享(parameter sharing)、等变表示(equivariant representa-tions)。另外,卷积提供了一种处理大小可变的输入的方法。
1)稀疏交互:传统的神经网络使用矩阵乘法来建立输入与输出的连接关系,每一个输出单元与每一个输入单元都产生交互。然而,卷积网络具有稀疏交互(sparse interactions)的特征,这是通过使核的大小远小于输入的大小来达到的。
如果有 m 个输入和 n 个输出,那么矩阵乘法需要 m×n个参数并且相应算法的时间复杂度为 O(m×n)。如果我们限制每一个输出拥有的连接数为 k,那么稀疏的连接方法只需要 k×n 个参数以及O(k×n) 的运行时间。在实际应用中,只需保持 k 比 m小几个数量级,就能在机器学习的任务中取得好的表现。
2)参数共享:参数共享(parameter sharing)是指在一个模型的多个函数中使用相同的参数。
在传统的神经网络中,当计算一层的输出时,权重矩阵的每一个元素只使用一次。而在卷积神经网络中,核的每一个元素都作用在输入的每一位置上(是否考虑边界像素取决于对边界决策的设计)。卷积运算中的参数共享保证了我们只需要学习一个参数集合,而不是对于每一位置都需要学习一个单独的参数集合。
3)等变表示:如果一个函数满足输入改变,输出也以同样的方式改变这一性质,我们就说它是等变(equivariant)的。特别地,如果函数 f(x) 与 g(x)满足 f(g(x))=g(f(x)), 我们就说 f(x) 对于变换 g 具有等变性。
conv1d(value,filters, stride, padding, use_cudnn_on_gpu=None, data_format=None, name=None)
conv2d(input, filter, strides, padding, use_cudnn_on_gpu=True, data_format="NHWC", dilations=[1, 1, 1, 1], name=None)
反卷积操作顾名思义就是卷积的反向
conv2d_transpose(value, filter, output_shape, strides, padding="SAME", data_format="NHWC", name=None)
参数说明:
value:指需要做反卷积的输入图像,它要求是一个Tensor
filter:卷积核,它要求是一个Tensor,具有[filter_height, filter_width, out_channels, in_channels]这样的shape,具体含义是[卷积核的高度,卷积核的宽度,卷积核个数,图像通道数]
output_shape:反卷积操作输出的shape,细心的同学会发现卷积操作是没有这个参数的,那这个参数在这里有什么用呢?下面会解释这个问题
strides:反卷积时在图像每一维的步长,这是一个一维的向量,长度4
padding:string类型的量,只能是"SAME","VALID"其中之一,这个值决定了不同的卷积方式
data_format:string类型的量,'NHWC’和’NCHW’其中之一,这是tensorflow新版本中新加的参数,它说明了value参数的数据格式。
池化:对输入的特征图进行压缩,一方面使特征图变小,简化网络计算复杂度;一方面进行特征压缩,提取主要特征。
卷积神经网络主要是用于解决计算机视觉方面的任务。在本篇博客中我们将演示如何在自然语言处理任务—文本分类中使用卷积神经网络CNN,这里的文本可以一个句子,文档(短文本,若干句子)或篇章(长文本),因此每段文本的长度都不尽相同。在对文本进行分类时,我们一般会指定一个固定的输入序列/文本长度:该长度可以是最长文本/序列的长度,此时其他所有文本/序列都要进行填充以达到该长度;该长度也可以是训练集中所有文本/序列长度的均值,此时对于过长的文本/序列需要进行截断,过短的文本则进行填充。总之,要使得训练集中所有的文本/序列长度相同,该长度除之前提到的设置外,也可以是其他任意合理的数值。在测试时,也需要对测试集中的文本/序列做同样的处理。
假设训练集中所有文本/序列的长度统一为n,我们需要对文本进行分词,并使用词嵌入得到每个词固定维度的向量表示。此时对于一段文本,我们的输入就可以表示为一个n*d的数字矩阵,类似于图像分类任务中的图像。我们曾使用过CNN处理图像分类任务,类似的,接下来我们看一下如何用CNN进行文本分类。
先占个位置…
[1]作者:xh999bai 来源:CSDN 原文:https://blog.csdn.net/xh999bai/article/details/89483673
[2]作者:CoreJT 来源:CSDN 原文:https://blog.csdn.net/sdu_hao/article/details/88066203
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。