赞
踩
(1)标量、向量、矩阵、张量
张量的3个属性:
轴(ndim)、形状(shape)、数据类型(dtype)
(2)批处理的图像数据:
TensorFlow :
[batch_size, height, width, channels]
Theano:
[batch_size, channels, height, width]
Keras 框架同时支持这两种格式。
(3)视频数据
[samples, frames, height, width, channels ]
举例来讲:
一个以每秒 4 帧采样的 60 秒 YouTube 视频片段,视频尺寸为 144×256,这个视频共有 240 帧。
4 个这样的视频片段组成的批量将保存在形状为 (4, 240, 144, 256, 3)的张量中。总共有 106 168 320个值!
如果张量的数据类型( dtype )是 float32 ,每个值都是32 位,那么这个张量共有405MB。好大!你在现实生活中遇到的视频要小得多,因为它们不以float32 格式存储,而且通常被大大压缩,比如 MPEG 格式
(4)张量运算
element-wise:逐元素的运算,即该运算独立地应用于张量中的每
个元素
broadcast:较小的张量会被广播(broadcast),以匹配较大张量的形状。广播的规则:
A.让所有输入数组都向其中形状最长的数组看齐,形状中不足的部分都通过在前面加 1 补齐。
B. 输出数组的形状是输入数组形状的各个维度上的最大值。
C.如果输入数组的某个维度和输出数组的对应维度的长度相同或者其长度为 1 时,这个数组能够用来计算,否则出错。
D. 当输入数组的某个维度的长度为 1 时,沿着此维度运算时都用此维度上的第一组值。
简单理解:对两个数组,从后向前分别比较他们的每一个维度(若其中一个数组没有当前维度则忽略),满足:
数组拥有相同形状。
当前维度的值相等。
当前维度的值有一个是 1。
若条件不满足,抛出 “ValueError: frames are not aligned” 异常。
举例
tensor product:点积,类似于矩阵相乘
reshape:张量变形是指改变张量的行和列,以得到想要的形状。变形后的张量的元素总个数与初始张量相同。
transposition:
经常遇到的一种特殊的张量变形是转置。对矩阵做转置是指将行和列互换,使 x[i, :] 变为 x[:, i]
(4)梯度优化
(1) 抽取训练样本 x 和对应目标 y 组成的数据批量。
(2) 在 x 上运行网络[这一步叫作前向传播(forward pass)],得到预测值 y_pred 。
(3) 计算网络在这批数据上的损失,用于衡量 y_pred 和 y 之间的距离。
(4) 更新网络的所有权重,使网络在这批数据上的损失略微下降。这一步叫做反向传播。
最终得到的网络在训练数据上的损失非常小,即预测值 y_pred 和预期目标 y 之间的距离非常小。网络“学会”将输入映射到正确的目标。乍一看可能像魔法一样,但如果你将其简化神经网络的“引擎”:基于梯度的优化为基本步骤,那么会变得非常简单。
如何更新权重的方法比较多,计算损失相对于网络参数的梯度[一次反向传播(backward pass)]。将参数沿着梯度的反方向移动一点,比如
W = W - step * gradient
从而使这批数据上的损失减小一点。
这种方法叫作小批量随机梯度下降(mini-batch stochastic gradient descent,又称为小批量 SGD)
SGD 还有多种变体,其区别在于计算下一次权重更新时还要考虑上一次权重更新,而不是仅仅考虑当前梯度值,比如带动量的 SGD、Adagrad、RMSProp 等变体。这些变体被称为优化方法(optimization method)或优化器(optimizer)。
网络、层、优化器等之间的关系大致可以用如下表示:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。