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

本文详细介绍如何使用Keras及背后的TensorFlow进行神经网络模型搭建,包括定义模型、选择优化器、配置训练过程等关键步骤,并解释了mini-batch梯度下降的工作原理及其优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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





如下,

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

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

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

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

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

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


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



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

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


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


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重复以上工作。



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

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


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

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

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

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

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

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



作业:








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值