keras基本概念

Keras底层使用Theano或TensorFlow,这两个库也称为Keras的后端。无论是Theano还是TensorFlow,都是一个“符号式”的库。

这使得Keras的编程与传统的Python代码有所差别,简单而言(符号主义的计算):

首先需定义各种变量;

然后建立一个“计算图”,计算图规定了各个变量之间的计算关系;

再次建立好计算图需要编译以确定其内部细节,然而,此时的计算图还是一个“空壳子”,里面没有任何实际的数据;

最后当把需要的输入放进去后,才能在整个模型中形成数据流,从而形成输出值。

 

就像用管道搭建供水系统,当你在拼水管的时候,里面是没有水的,只有所有的管子都接完了,才能送水。Keras的模型搭建形式就是这种方法,在你搭建Keras模型完毕后,你的模型就是一个空壳子,只有实际生成可调用的函数后,输入数据,才能形成真正的数据流。

 

张量  tensor

张量可看着向量、矩阵的自然推广,其在Keras中表示广泛的数据类型。

规模最小的张量是0阶张量,即标量,也就是一个数。

当我们把一些数有序的排列起来,就形成了一阶张量,也就是一个向量。

若把一组向量有序排列起来,就形成了二阶张量,也就是一个矩阵。

把矩阵摞起来,就是三阶张量,我们可称为一个立方体,具有三种颜色通道的彩色图片就是一个这样的立方体。

 

张量的阶数也称为维度、轴(axis)。

如矩阵[[1,2],[3,4]],是一个二阶张量,有两个维度或轴。

沿着第0个轴看到的是[1,2],[3,4]两个向量,沿着第1个轴看到的是[1,3],[2,4]两个向量。

 

数据格式  data_format

这是一个关于彩色图片如何表示的问题上,Theano和TensorFlow发生了分歧。

Theano模式把100张RGB三通道的16*32(高为16宽为32),彩色图表示为下面这种形式(100,3,16,32),Caffe采取的也是这种形式。第0个维度是样本维,代表样本的数目,第1个维度是通道维,代表颜色通道数,后面两个就是高和宽。这种数据组织方法,称为"channels_first",即通道维靠前。

TensorFlow的表达形式是(100,16,32,3),即把通道维放在了最后,这种数据组织方式称为"channels_last"。

 

 

函数式模型

在Keras 0.x中,模型有两种:

一种叫Sequential,称为序贯模型,也就是单输入单输出,一条路通到底,层与层之间只有相邻关系,无跨层连接。

这种模型编译速度快,操作上也比较简单。

另一种模型称为Graph,即图模型,这个模型支持多输入多输出,层与层之间想怎么连均可,但编译速度慢。

其实,Sequential是Graph的一种特殊情况。

在Keras1和Keras2中,图模型被移除了,而增加了"functional model API"。由于"functional model API"在使用时利用的是”函数式编程“的风格,故将其称为函数式模型。

 

batch

深度学习的优化算法,即梯度下降,每次的参数更新有两种方式:

第一种,遍历全部数据集算一次损失函数,然后算函数对各个参数的梯度,更新梯度。

这种方法每更新一次参数都要把数据集里的所有样本都看一遍,计算量开销大,计算速度慢,不支持在线学习,这称为Batch gradient descent,批梯度下降。

第二种,每看一个数据就算一下损失函数,然后求梯度更新参数,这个称为随机梯度下降,stochastic gradient descent。

这个方法速度比较快,但收敛性能不太好,可能在最优点附近摆动,却达不到最优点。两次参数的更新也有可能互相抵消,造成目标函数震荡的比较剧烈。

为了克服两种方法的缺点,采用了一种折中的手段,mini-batch gradient decent,小批的梯度下降,即把数据分为若干批,按批更新参数。这样,一批中的一组数据共同决定本次梯度的方向,下降起来就不容易跑偏,减少了随机性。另一方面因批的样本数与整个数据集相比小了很多,计算量也不是很大。

现在的梯度下降都是mini-batch,Keras模块中出现的batch_size,也为此意。

注:Keras中用的优化器SGD是stochastic gradient descent的缩写,但这里并不代表是一个样本就更新一回,而是基于mini-batch的。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值