【李宏毅ML笔记】 12 Keras Hello word

【李宏毅ML笔记】 12 Keras Hello word

可以自己修改keras背后的TensorFlow相关的配置,程序,来做更灵活的事情。

keras(牛角)作者在谷歌工作,可能会作为谷歌神经网络api。

【李宏毅ML笔记】 12 Keras Hello word

【李宏毅ML笔记】 12 Keras Hello word

【李宏毅ML笔记】 12 Keras Hello word

【李宏毅ML笔记】 12 Keras Hello word

如下,

  keras中先定义sequential的model,先决定set of function

  然后搭积木,model中可以加一层layer,用add Dense()(这是fully connected layer),或者其它的形式。

并输入相关的参数(输入维度,输出维数)

  定义Neuron中最后一步的**函数activation(),也可以自定义

  可以继续加layer和**函数,隐层中,不需要加入input了,因为直接用的上一层的。

   最后加一output layer层设置为输出的维数,以及**函数。

【李宏毅ML笔记】 12 Keras Hello word

定义evaluation function,使用model.compile(loss, optimizer, metrics)

【李宏毅ML笔记】 12 Keras Hello word


Step3.1配置,如下是Training部分,确定用什么样的方式找参数,找最好的方式。optimizer可以设置不同方式训练network,都是基于gradient descent方式。不同之处在于,有的方式会自动设置learning rate,各式各样的。

Step.3.2 配置完,就是给其训练数据data和label,设置具体训练计算过程如停止时间的参数。

【李宏毅ML笔记】 12 Keras Hello word

具体的,先将xtrain,image存到numpy array中,第一个dimension代表有多少个example,第二个代表image有多少个pixel(特征28*28),ytrain第一个dimension就是examples个数,第二个dimension就是10维,代表第i个example的值。

【李宏毅ML笔记】 12 Keras Hello word

fit中参数,batch_size 在做gradient descent时,并不会完全的minimize,而是将training data分为多个batch,比如每次选100张图作为一个batch。一个batch要随机分,尽量包含各种样本的y值。

1. 随机初始化Network中的w和b所有参数。

2. 随机选一个batch,计算batch1中的total loss=L',根据L' update一次Network中的参数

3. 随机选第二个batch,计算L'',计算wb对L的偏微分。

4 直到用了所有的batch,这一次过程叫做一个epoch。按照epoch重复以上工作。

【李宏毅ML笔记】 12 Keras Hello word

【李宏毅ML笔记】 12 Keras Hello word

注意,在一个epoch里update很多次参数如k词,则m个epoch中,则update一共k*m次参数。

为什么要用mini-batch呢?主要原因是speed。batchsize偏大时,速度比较快(用了平行计算,如gpu,但受限于GPU的能力,太大则容易卡住),且Network比较稳定。

【李宏毅ML笔记】 12 Keras Hello word

所以,mini-batch的随机性,可以防止神经网络在训练时被卡主。那么有了mini-batch时,GPU是如何加速计算的?

如下,整个Network,可以看做是一连串的矩阵运算的结果。不管是forward pass,还是backward pass(逆转Network,你向neutron)。

【李宏毅ML笔记】 12 Keras Hello word

如下,为什么mini-batch比SGD快?

如果batchsize=1,则下面比较快,GPU可以在matrix相乘时可以加速。普通情况下,没有GPU,是一样的。

所以,使用GPU,就要设置mini-batch

如下,可保存模型,以后可读出来,也也可以做testing

【李宏毅ML笔记】 12 Keras Hello word


作业:

【李宏毅ML笔记】 12 Keras Hello word

【李宏毅ML笔记】 12 Keras Hello word

【李宏毅ML笔记】 12 Keras Hello word

【李宏毅ML笔记】 12 Keras Hello word

【李宏毅ML笔记】 12 Keras Hello word