使用Keras由零开始快速构造自己的深度学习模型
来源:互联网 发布:淘宝卖家在哪充值金币 编辑:程序博客网 时间:2024/06/16 05:04
《SDCC 2017人工智能技术实战》
什么是keras
Keras是一个高层神经网络API,Keras由纯Python编写而成并基Tensorflow、Theano以及CNTK后端。Keras 为支持快速实验而生,能够把你的idea迅速转换为结果,如果你有如下需求,请选择Keras:
简易和快速的原型设计(keras具有高度模块化,极简,和可扩充特性)
支持CNN和RNN,或二者的结合
无缝CPU和GPU切换
Keras适用的Python版本是:Python 2.7-3.5
中文文档:
http://keras-cn.readthedocs.io/en/latest/
pytorch 是另一款有类似功能的框架。
keras 的构造元素
数据处理
文本数据 : 拆分、索引、标注,主要针对英文。
序列数据:补齐、n-gram、skip-gram
标注类[tokenizer]能批量处理多个文本文件,统一进行索引,拆分和补齐工作。图像数据:翻转、切割、旋转
Keras自带一个具备多种图像变换功能的数据生成器。
实践中会将生成器生成的随机变换的数据和原始数据叠加进行拟合,效果更好。
模型类型
Keras的核心数据结构是“模型”,模型是一种组织网络层的方式。
Sequential model 顺序模型
Keras中主要的模型是
Sequential模型,Sequential是一系列网络层按顺序构成的栈。
- 损失函数
- 网络层,有很多初始化参数:
- 初始化
- 激活函数
- 优化
- 正则化
Sequential模型如下:
from keras.models import Sequentialmodel = Sequential()
将一些网络层通过.add()堆叠起来,就构成了一个模型:
from keras.layers import Dense,Activationmodel.add(Dense(units=64,input_dim=100))model.add(Activation("relu"))model.add(Dense(units=10))model.add(Activation("softmax"))
完成模型的搭建后,编译模型
model.compile(loss='categorical_crossentropy',optimizer='sgd',metrics=['accuracy'])
编译模型时必须指明损失函数和优化器,如果需要的话可以自己定制损失函数。
在训练数据上按batch进行一定次数的迭代来训练网络:
model.fix(x_train, y_train, epochs=5,batch_size=32)
从神经网络模型到keras代码的映射1:
从神经网络模型到keras代码的映射:2
泛化模型 generic model
模型元素
keras元素与神经网络模型图的对应关系
keras构造深度学习模型实例
keras构造图像识别模型
图像识别: 迁移学习
- 最简单的迁移学习就是将预置模型的顶层去掉,迁移其余结构到新模型。
- 所有参数都要重新训练
构造自己的模型
keras构造深度推荐模型
keras构造时间序列预测模型
在生产环境中部署keras模型
输出为TensorFlow/CNTK的模型文件,在生产环境中运行。
输出CNTK可用模型
import cntk as CC.combine(keras_model.model.outputs).save('trained_cntk_model')
输出TensorFlow可用模型
import keras.backend as Ksession=K.session()Tf_saver=tf.train.Saver()Tf_saver.save(sess=session,save+_put=output_path)
利用keras本身的预测函数
利用neocortex.js,在浏览器中利用存储的模型结构和权重运行模型。
模型打分只需要执行前馈网络,计算量小
neocortex.js将需要统一到服务器的打分计算分散到用户的浏览器或者任何能执行.js程序的地方
适于轻量化应用
http://scienceai.github.io/neocortex/mnist_mlp/
使用步骤:
将keras训练好的模型输出:
- 模型结构输出到json文件
- 模型权重输出到HDF5文件
在.js里指定模型文件
mm = new NeuralNet({ modelFilePath:'', arrayType:'float64', useGPU:false})
nn.predict()方法即可进行打分操作
Keras对比TensorFlow
简化模型构建不用自己定义基本的权重要素,keras自动根据数据完成
不用明确地构造组合函数
激活函数可以在网络层直接作为选项
- 使用Keras由零开始快速构造自己的深度学习模型
- GitChat · 人工智能 | 如何零基础用 Keras 快速搭建实用深度学习模型
- Keras深度学习模型可视化
- Keras学习一快速开始
- Keras TensorFlow教程:如何从零开发一个复杂深度学习模型
- keras中文-快速开始Sequential模型
- Keras: 基于Theano和TensorFlow的快速深度学习库
- keras:保存keras学习好的深度神经网络模型参数为二进制和txt文件
- 深度学习之keras使用
- 可视化Keras深度学习神经网络模型
- 可视化Keras深度学习神经网络模型
- 基于theano的深度学习框架Keras的使用
- 易用的深度学习框架Keras简介及使用
- 易用的深度学习框架Keras简介及使用
- 快速开始keras 教程
- keras学习之二:神经网络模型的使用
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-05-模型
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-05-模型
- bootstrap打开模态modal窗口引起页面抖动闪黑
- Uva 133 (implement)
- python应用系列教程——python使用socket创建tcp服务器和客户端
- Python多线程
- Android笔记(十)Android O SystemUI启动流程
- 使用Keras由零开始快速构造自己的深度学习模型
- MongoDB学习笔记(六) MongoDB索引用法和效率分析
- docker学习笔记(三)
- python应用系列教程——python使用socket创建udp服务器端和客户端
- 常见配置redis.conf介绍
- Qt中文文档-QAbstractAnimation
- 替换实现逐帧动画,解决内存问题
- KITTI数据集格式说明
- vue中v-if与v-for的区别