深入浅出pytorch学习笔记(二)

1.3.1 向量、矩阵和张量及其运算

  • 向量、矩阵略
  • 张量:向量可以看做一维张量,矩阵可以看做二维张量,三维张量可以看做是数字排列的长方体。在深度学习中,我们经常会用到四维张量,增加的一个维数称为迷你批次(mini-batch)的大小,可以认为是每次输入深度学习神经网络的图片的数目。
  • NCHW:迷你批次的大小×通道数目×图片高度×图片宽度
  • NHWC:迷你批次的大小×图片高度×图片宽度×通道数目

1.3.2张量的储存

  • 在实际储存的过程中存储的是一维向量。先从第nk个维度开始存储,直到填满一个长度为nk的一维张量,再从第nk-1维开始存储,直到将一个nk*nk-1的矩阵(二维张量)完全填入,再从nk-2开始存储,直到将一个nk*nk-1*nk-2的张量(三维张量)完全填入……直到第n1维。
  • 假如该张量中的一个元素的坐标是(i1,i2,i3,...,ik),则该元素在内存中的位置是第i1×(n2×n3×...×nk)+i2×(n3×n4×...×nk)+...+ik-1×nk+ik个元素。
  • 维度序数较小的相邻数字在内存中的间隔比较大,反之,在内存中的间隔比较小。

1.3.3 神经元的概念

  • 神经网络最基础的组成单元可以认为是一个神经元,它的结构由数个输入和输出组成。
  • 一个神经元的输入x是之前神经元输入的线性组合x=\sum w_{i}a_{i},wi 为一系列可训练的参数,称为神经网络的权重。该神经元随之对这个线性组合输出的结果做一个非线性的函数变换f(x)(激活函数),输出该函数的变换结果。

1.4输入数据的表示方式

  • 一般来说,在神经网络的神经元之间互相进行传递的数据是以浮点数的形式来表示的。

1.4.1图像数据的表示形式

  • 图像数据可以表示为像素点的集合,而每个像素点有一个(灰度,Grayscale)、三个(RGB)或者四个(RGBA,A为透明度)通道。
  • 一个通道一个再最亮和最暗之间离散的取256个分立的值,即取0~255之间的整数,分别代表不同的对比度。
  • 一张图像就可以表示为h×w×c的三维张量,其中h是图片的高度(像素数),w是图片的宽度(像素数),c表示的是图片的通道数。
  • 神经网络训练的过程中一般会同时批量处理很多图片,所以要把图像调整为相同的大小,可以用最近邻插值算法、双线性插值等算法实现。
  • 调整为相同大小之后,就可以将所有的像素点除以255,都转换为0~1之间的浮点数。
  • 归一化:让一批图像的张量减去所有图像的平均值,再除以所有图像的方差。

1.4.2 文本数据的表示方式

  • 分词:把连续的文本转换为单词的序列,中文需要用分词工具,如THULAC、Jieba等。
  • 去停词:去除一些文本中出现频率较高,但是和文本实际意义没有太大关联的词。
  • 正则化处理:把意义相同、但表达不同的文本形式转换为相同的文本形式。
  • 词嵌入:建立一个词表,其中每一个对应一定大小的词向量,假如有n个单词,每个向量对应一个长度为m的向量,那么这个词嵌入矩阵就可以构造一个n×m的矩阵。也就是说每一个单词都映射成为了一个向量。

1.4.3音频数据的表示方式

如何从音频(16bit)中提取特征:

  • 16bit代表这个音频会按照信号的振幅取离散的2^{16}个值,即-32768~32767
  • 采样率:如采样率是44.1kHz,意思就是每秒取441000个点
  • 首先需要把振幅从整数转变为-1~+1之间的浮点数,即(振幅+32768)÷32768-1.0
  • 预加重:x'_{t+1}=x_{t+1}-\alpha\cdot x_{t},t=0,...,N-2 ,\alpha一般取0.95~0.97,相当于一个高通滤波器
  • 分帧:把音频切成一小段(每段长度在20ms~40ms),两段重叠在50%左右,为了方便计算,我们一般会让采样点的数目接近2的整数次幂
  • 加窗:把每一帧的信号乘以窗口函数,防止信号泄露
  • 快速傅里叶变换得到信号(信号功率)在频率上的分布
  • 得到梅尔尺度上的特征信息
  • ...(还有的看不懂了)

1.5线性变换与激活函数

1.5.1 全连接线性变换

  • 神经元分为三类:输入层(Input Layer)、隐藏层(Hidden Layer)和输出层(Output Layer)
  • 以下讨论输入层为1层、3个神经元,隐藏层有2层、分别有4、5个神经元,输出层有1层、2个神经元
  • 假设神经网络输入的是大小为3的向量,在从输入层到第一层隐藏层的变换过程中,这个大小为3的向量会和一个4×3的矩阵相乘,变成一个大小为4的向量
  • 对于这个向量,我们需要对每一个分量求一个激活函数,得到第一层的隐藏层的值
  • 重复以上过程,最后可以得到大小为2的向量
  • 以上我们可以看到:下一层神经网络的每个值都和前一层神经网络的每个值相关联,我们称这种神经网络连接方式为全连接层,对应的线性变换为全连接线性变换,线性变换矩阵为连接的权重
  • 权重经过随机初始化,在神经网络的训练过程中会逐渐向着让模型更好地符合数据分布的方向变化,这个过程称之为模型的优化
  • 我们一般还会给线性变换之后的输出统一加一个可训练的参数,这个参数是标量,称之为偏置(bias)

1.5.2卷积线性变换

  • (3条消息) CNN笔记:通俗理解卷积神经网络_结构之法 算法之道-CSDN博客_卷积神经网络https://blog.csdn.net/v_JULY_v/article/details/51812459?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164240537216780274177101%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=164240537216780274177101&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-2-51812459.pc_search_insert_ulrmf&utm_term=%E5%8D%B7%E7%A7%AF%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&spm=1018.2226.3001.4187


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部