李宏毅 机器学习(2017)学习笔记——8-1 初探深度学习

目录

1. Keras

1.1 步骤一:定义一个函数集合

1.2 步骤二:评估函数的好坏

1.3 步骤三:找到最好的函数

1.3.1 为什么要用mini-batch


1. Keras

    Keras其实是TensorFlow和Theano的接口。它易于学习,有比较好的弹性。

    Kreas在希腊为中是牛角的意思。我们在使用Keras的过程中,只是把现成的函数调用叠加。

  •     我们举手写数字识别的例子来初始Keras

    Keras同样也是有三个步骤的:

    

1.1 步骤一:定义一个函数集合

    实际上就是决定神经网络长什么样子。如图所示,我们想要创建一个神经网络,有两个隐藏层,每层有500个神经元。

    

    model = Sequential()    #首先声明一个模型

    model.add()    #在模型上加一个东西    Dense()表示全连接层    Activation()表示激活函数

1.2 步骤二:评估函数的好坏

    

   model.compile()    #loss = ‘’定义损失是什么(categorical crossentropy表示交叉熵)

1.3 步骤三:找到最好的函数

    

    optimizer = ‘’    #优化器,指用什么方式寻找最好的函数(让机器自己决定学习率是多少)

    

    训练函数,给定4个输入,第一个是训练数据,第二个是标签(训练数据就是手写数据的矩阵,标签10维,表示训练数字是几)

    

  •     batch_size

    实际上,我们在做深度学习的时候,并不会真的最小化损失值。我们会把训练数据随机分成一个一个的批batch,首先随机初始化网络的参数,接下来随机选择一个批并计算这个批里面的元素的全部损失,然后根据这个损失值去更新参数。接下来随机再选取一个批,再次计算这个批里面元素的全部损失并再次进行参数的更新。反复重复这一步骤,直到所有的批都被选择一次。把所有的批都选择一次称为一个epoch(这里用中文翻译不太准确)。然后我们重复上面的步骤,得到多个epoch。

    这里写图片描述

    batch_size = 100    #每个批里面包含100条数据

    nb_epoch = 20    #number of epoch共有多少个epoch,即重复多少次批的过程。这里共更新20*100=2000次参数。

    当batch_size = 1的时候,就相当于随机梯度下降法。随机梯度下降法的好处是速度比较快。

1.3.1 为什么要用mini-batch

    ① 速度

    批的规模越小意味着我们在一个epoch里面能更新更多次。

    例如有50000个数据,把batch_size设为1,那么在一个epoch能更新50000次;把batch_size设为10,那么在一个epoch能更新5000次。

    batch_size大小不同运算的时间不同。当batch_size = 10的时候比较稳定,收敛的更快,所以我们选择batch_size = 10比选择随机梯度下降更好。

    因为我们使用了平行运算,所以在batch_size设定比较大的时候速度更快。但是又不能把batch_size设定的特别大,因为这样GPU就没办法平行运算,网络有可能会陷入鞍点。

    

    神经网络可以看做是一系列矩阵运算的结果。

    为什么mini-batch比随机梯度下降法快呢?原因如下图:

    

    使用model.evaluate()计算模型的准确率,model.predict()使用训练好的模型进行预测。

    

        

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值