11.11学习笔记之keras的sequential模型
来源:互联网 发布:字体识别软件 编辑:程序博客网 时间:2024/06/09 21:37
Keras是一种高度模块化,使用简单上手快,合适深度学习初学者使用的深度学习框架。Keras由纯Python编写而成并以Tensorflow、Theano以及CNTK为后端。Keras为支持快速实验而生,能够把你的idea迅速转换为结果。
sequential模型,就是多个网络层的线性堆叠
建立模型有两种方式:一是向layer添加list的方式,二是通过.add()方式一层层添加(一个add为一层),具体可见如下代码:
#引入Sequential,Dense,Activation
from keras.models import Sequential
from keras.layers import Dense, Activation
#向layer添加list方式
model = Sequential([Dense(input_dim=784,output dim=500),Activation('relu'),Dense(10),Activation('softmax'),])
#通过.add()方式
model = Sequential()
model.add(Dense(input_dim=784,output dim=500))
model.add(Activation('relu'))
model.add(Dense(output dim=500))
model.add(Activation('softmax'))
Dense表示使用 fully connected layers(全连接层)
Activation表示激活函数
当再增加一个layer时候,不需要再input dim ,因为这一层的input就是上一层的output
在训练模型之前,我们需要通过compile来对学习过程进行配置。compile接收三个参数:
# 多分类问题
model.compile(optimizer='rmsprop',
loss='categorical_crossentropy',
metrics=['accuracy'])
# 二分类问题
model.compile(optimizer='rmsprop',
loss='binary_crossentropy',
metrics=['accuracy'])
#均方误差回归问题
model.compile(optimizer='rmsprop',
loss='mse')
优化器optimizer:已预定义的优化器名,如rmsprop、adagrad,或一个Optimizer类的对象
损失函数loss:最小化的目标函数,它可为预定义的损失函数,如categorical_crossentropy、mse,也可以为一个损失函数。
指标列表metrics:对分类问题,我们一般将该列表设置为metrics=['accuracy']。指标可以是一个预定义指标的名字,也可以是一个用户定制的函数。指标函数应该返回单个张量,或一个完成metric_name - > metric_value映射的字典。
下一步就是要训练模型了,训练模型一般使用fit函数
model.fit(x_train, labels, batch_size=32, nb_epoch=10,)
x_train为training data, labels为标签,batch_size为mini-batch的大小,即一个mini-batch里有32个sample,nb_epoch为迭代次数,1个epoch等于使用训练集中的全部样本训练一次。
假如一个完整的训练集合有5000个样本,mini-batch为100,epoch为20,表示每看完100个样本更新一次参数,更新完整个训练集合要看50次不同的mini-batch,即50个iteration后才为1个epoch。(1个iteratio等于使用batchsize个样本训练一次)整个模型要训练20次epoch,1000次iteration,更新1000次参数。
如果使用batch-size=1,即SGD随机梯度下降,每次修正方向都以各自样本的梯度进行修正,方向不是指向圆心,弯弯曲曲地前进,难以收敛。
而且训练速度慢,需要时间长。
mini-batch的速度比较快(gpu的平行运算),而且表现比较平稳。但不宜设的太大,容易陷入local minimu。
如果数据集比较小我们就采用全数据集。全数据集确定的方向能够更好地代表样本总体,从而更准确地朝向极值所在的方向。
但对于大数据集,不适合使用full batch learning,因为硬件和内存限制,而且容易卡在local minimu,会得到很差的效果。
how to ude the neural network (testing):
case 1:
score = model.evaluate(x_test, y_test)
print('Total loss on Testing Set:',score[0])
print('Accuracy of Testing Set:',score[1])
case 2:
result = model.predict(x_test)
sequential模型,就是多个网络层的线性堆叠
建立模型有两种方式:一是向layer添加list的方式,二是通过.add()方式一层层添加(一个add为一层),具体可见如下代码:
#引入Sequential,Dense,Activation
from keras.models import Sequential
from keras.layers import Dense, Activation
#向layer添加list方式
model = Sequential([Dense(input_dim=784,output dim=500),Activation('relu'),Dense(10),Activation('softmax'),])
#通过.add()方式
model = Sequential()
model.add(Dense(input_dim=784,output dim=500))
model.add(Activation('relu'))
model.add(Dense(output dim=500))
model.add(Activation('softmax'))
Dense表示使用 fully connected layers(全连接层)
Activation表示激活函数
当再增加一个layer时候,不需要再input dim ,因为这一层的input就是上一层的output
在训练模型之前,我们需要通过compile来对学习过程进行配置。compile接收三个参数:
# 多分类问题
model.compile(optimizer='rmsprop',
loss='categorical_crossentropy',
metrics=['accuracy'])
# 二分类问题
model.compile(optimizer='rmsprop',
loss='binary_crossentropy',
metrics=['accuracy'])
#均方误差回归问题
model.compile(optimizer='rmsprop',
loss='mse')
优化器optimizer:已预定义的优化器名,如rmsprop、adagrad,或一个Optimizer类的对象
损失函数loss:最小化的目标函数,它可为预定义的损失函数,如categorical_crossentropy、mse,也可以为一个损失函数。
指标列表metrics:对分类问题,我们一般将该列表设置为metrics=['accuracy']。指标可以是一个预定义指标的名字,也可以是一个用户定制的函数。指标函数应该返回单个张量,或一个完成metric_name - > metric_value映射的字典。
下一步就是要训练模型了,训练模型一般使用fit函数
model.fit(x_train, labels, batch_size=32, nb_epoch=10,)
x_train为training data, labels为标签,batch_size为mini-batch的大小,即一个mini-batch里有32个sample,nb_epoch为迭代次数,1个epoch等于使用训练集中的全部样本训练一次。
假如一个完整的训练集合有5000个样本,mini-batch为100,epoch为20,表示每看完100个样本更新一次参数,更新完整个训练集合要看50次不同的mini-batch,即50个iteration后才为1个epoch。(1个iteratio等于使用batchsize个样本训练一次)整个模型要训练20次epoch,1000次iteration,更新1000次参数。
如果使用batch-size=1,即SGD随机梯度下降,每次修正方向都以各自样本的梯度进行修正,方向不是指向圆心,弯弯曲曲地前进,难以收敛。
而且训练速度慢,需要时间长。
mini-batch的速度比较快(gpu的平行运算),而且表现比较平稳。但不宜设的太大,容易陷入local minimu。
如果数据集比较小我们就采用全数据集。全数据集确定的方向能够更好地代表样本总体,从而更准确地朝向极值所在的方向。
但对于大数据集,不适合使用full batch learning,因为硬件和内存限制,而且容易卡在local minimu,会得到很差的效果。
how to ude the neural network (testing):
case 1:
score = model.evaluate(x_test, y_test)
print('Total loss on Testing Set:',score[0])
print('Accuracy of Testing Set:',score[1])
case 2:
result = model.predict(x_test)
阅读全文
0 0
- 11.11学习笔记之keras的sequential模型
- keras学习笔记-二(Sequential 模型)
- keras学习随笔02——Sequential模型
- Keras-Sequential模型(1)
- Keras-Sequential模型(2)
- Keras学习笔记:Chapter2-初探Keras模型
- keras学习笔记(2)-模型
- keras中文-快速开始Sequential模型
- 开始 Keras 序列模型(Sequential model)
- Keras 序贯(sequential)模型简介
- keras学习之二:神经网络模型的使用
- keras上手系列之: 模型的保存
- keras系列︱Sequential与Model模型、keras基本结构功能(一)
- keras系列︱Sequential与Model模型、keras基本结构功能(一)
- keras学习笔记之安装初体验
- keras学习笔记---keras安装出现的问题
- keras学习笔记(1)-Keras的模块架构
- Keras笔记(一)关于Keras模型
- PCL编程宝典-代码编译常见问题及解决办法
- postman使用
- jsp复习笔记
- PyPI使用国内源
- 微信小程序开发-路由
- 11.11学习笔记之keras的sequential模型
- 在spring mvc应用中创建第一个Controller
- c语言:用switch模拟售货机
- android 使用控件webView 与 vue交互
- Java 8 函数式编程学习笔记
- Java文件操作自己做的一些小实验
- hdu 5950
- iview 爬坑 menu
- ubuntu install google chrome software