机器学习系列 八 - 2.使用Keras build一个网络 Keras 2.0 版本语法

还是手写数字辨识问题

第一步,设计架构(模型)
老版本中,我们每一层的输出,在1.0版本里面参数名字是output,而在Keras2.0里面,改成了units,这个看上去更为直观,表明下一层我要输出多少个节点。并制定激活函数。
然后,因为下一层的输入就是上市上一层的输出,所以下一层里面不需要在生命input dimension了,input就是500。
那直接定义units,就是输出到下一层的节点数。并指定激活函数。
那最后输出一层,因为是手写数字辨识,所以一共10个数字,10个输出,然后在指定激活函数,用softmax。也可以用别的激活。
这里选择softmax是因为,每一项的输出都是介于0-1之间,所有项的总和是1,这样就类似于概率来看待这个问题。

第二步,进行Loss方程和优化器设定
    1. 定义Loss function,这里选择交叉熵
    2. 定义优化器, 这里选择非基础的gradient descent,但所有优化器基本都是base 于gradient descent的。这里使用adam。
还有很多种优化器,可以后面研究不同的实现,我们之前学过了Adagrad


第三步,选择最好的function
    1. train 我们的 network,其实在Keras里面一句话搞定:model.fit

    x_train -> 代表training data的 输入, image的维度 * image总数
    y_train -> 代表training data的 输出,代表image的label * image总数
input = 图片, output = 每张图片对应的数字
    batch_size 上一节解释过,就是把所有数据分成n个batch批次,这里是代表每一个批次所包含的数据量
    epochs   上一节解释过,名字有改变,之前叫做nb_epoch,代表所有数据总共进行几次train。

数据都需要存成numpy 的array。
输入输出都是一个二维矩阵, x_train、y_train如上面所描述。

keras 教程

下面内容在上一节已经讲过,
两个case 做评估和做预测。


作业:
自己根据上面所讲的api进行手写数字辨识的代码部分。
下次上课老师会再讲一遍,到时候跟老师所讲的代码进行比较,看看哪里还有欠缺。

自我分析:
1.首先确认网络结构,3层网络, 其实就相当于 ==  选择function set 也就是 model
    1.1 input layer 28*28=784 dimension input node
    1.2 hidden layer 500 node
    1.3 output layer 10 node
2. 判断function好坏,找到是loss function 最优的参数集 parameter set,使用交叉熵模型作loss function,
    选取优化器,优化器都是基于gradient descent的,所以按照相对稳定的选择adam
3. 对数据进行train
    model.fit(x_train, y_train)












还是手写数字辨识问题

第一步,设计架构(模型)
老版本中,我们每一层的输出,在1.0版本里面参数名字是output,而在Keras2.0里面,改成了units,这个看上去更为直观,表明下一层我要输出多少个节点。并制定激活函数。
然后,因为下一层的输入就是上市上一层的输出,所以下一层里面不需要在生命input dimension了,input就是500。
那直接定义units,就是输出到下一层的节点数。并指定激活函数。
那最后输出一层,因为是手写数字辨识,所以一共10个数字,10个输出,然后在指定激活函数,用softmax。也可以用别的激活。
这里选择softmax是因为,每一项的输出都是介于0-1之间,所有项的总和是1,这样就类似于概率来看待这个问题。

第二步,进行Loss方程和优化器设定
    1. 定义Loss function,这里选择交叉熵
    2. 定义优化器, 这里选择非基础的gradient descent,但所有优化器基本都是base 于gradient descent的。这里使用adam。
还有很多种优化器,可以后面研究不同的实现,我们之前学过了Adagrad


第三步,选择最好的function
    1. train 我们的 network,其实在Keras里面一句话搞定:model.fit

    x_train -> 代表training data的 输入, image的维度 * image总数
    y_train -> 代表training data的 输出,代表image的label * image总数
input = 图片, output = 每张图片对应的数字
    batch_size 上一节解释过,就是把所有数据分成n个batch批次,这里是代表每一个批次所包含的数据量
    epochs   上一节解释过,名字有改变,之前叫做nb_epoch,代表所有数据总共进行几次train。

数据都需要存成numpy 的array。
输入输出都是一个二维矩阵, x_train、y_train如上面所描述。

keras 教程

下面内容在上一节已经讲过,
两个case 做评估和做预测。


作业:
自己根据上面所讲的api进行手写数字辨识的代码部分。
下次上课老师会再讲一遍,到时候跟老师所讲的代码进行比较,看看哪里还有欠缺。

自我分析:
1.首先确认网络结构,3层网络, 其实就相当于 ==  选择function set 也就是 model
    1.1 input layer 28*28=784 dimension input node
    1.2 hidden layer 500 node
    1.3 output layer 10 node
2. 判断function好坏,找到是loss function 最优的参数集 parameter set,使用交叉熵模型作loss function,
    选取优化器,优化器都是基于gradient descent的,所以按照相对稳定的选择adam
3. 对数据进行train
    model.fit(x_train, y_train)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值