浅谈keras 的抽象后端(from keras import backend as K)


Posted in Python onJune 16, 2020

keras后端简介:

Keras 是一个模型级库,为开发深度学习模型提供了高层次的构建模块。它不处理诸如张量乘积和卷积等底层操作,目的也就是尽量不重复造轮子。

但是底层操作还是需要的, 所以keras 依赖于一个专门的、优化的张量操作库来完成这个操作。

我们可以简单的认为这是 Keras 的「后端引擎」, keras 有三个后端实现可用 、 即: TensorFlow 后端,Theano 后端,CNTK 后端。

浅谈keras 的抽象后端(from keras import backend as K)

如果你需要修改你的后端, 只要将字段 backend 更改为 theano 或 cntk,Keras 将在下次运行 Keras 代码时使用新的配置。

你也可以定义环境变量 KERAS_BACKEND,这会覆盖配置文件中定义的内容:

定义的方式如下。

KERAS_BACKEND=tensorflow python -c “from keras import backend” Using
TensorFlow backend.

在 Keras 中,可以加载比 “tensorflow”, “theano” 和 “cntk” 更多的后端, 即可以选择你自己所定义的后端。

Keras 也可以使用外部后端,这可以通过更改 keras.json 配置文件和 “backend” 设置来执行。

假设您有一个名为 my_module 的 Python 模块,您希望将其用作外部后端。keras.json 配置文件将更改如下:

{
“image_data_format”: “channels_last”,
“epsilon”: 1e-07,
“floatx”: “float32”,
“backend”: “my_package.my_module” }

必须验证外部后端才能使用,有效的后端必须具有以下函数:placeholder, variable and function.

如果由于缺少必需的条目而导致外部后端无效,则会记录错误,通知缺少哪些条目。

下面我们来看一下 keras 的 json 文件中其他的一些更加详细的配置;

The keras.json 配置文件包含以下设置, 你可以通过编辑 $ HOME/.keras/keras.json 来更改这些设置。

{
“image_data_format”: “channels_last”,
“epsilon”: 1e-07,
“floatx”: “float32”,
“backend”: “tensorflow” }

第一个参数 image_data_format 的可选参数为 : “channels_last” 或者 “channels_first”,当然, 从名字中你就可以看出他们的作用是什么;

如果是 tensorflow作为后端, 那么就应当是channel last , 也就是输入的tensor的shape (height, width, channels);

如果是 theano, 那么就是 channel first。

epsilon: 浮点数,用于避免在某些操作中被零除的数字模糊常量。

floatx: 字符串,“float16”, “float32”, 或 “float64”。默认浮点精度。

backend: 字符串, “tensorflow”, “theano”, 或 “cntk”。

使用抽象 Keras 后端:

如果你希望你编写的 Keras 模块与 Theano (th) 和 TensorFlow (tf) 兼容,则必须通过抽象 Keras 后端 API 来编写它们。

你可以通过以下方式导入后端模块:

from keras import backend as K

下面是后端使用的一些介绍:

这段代码实例化一个输入占位符。它等价于 tf.placeholder() 或 th.tensor.matrix(), th.tensor.tensor3(), 等等。

inputs = K.placeholder(shape=(2, 4, 5))
inputs = K.placeholder(shape=(None, 4, 5))
inputs = K.placeholder(ndim=3)

也就是说你一旦引用了 keras 的 backed, 那么大多数你需要的张量操作都可以通过统一的Keras后端接口完成,

而不关心具体执行这些操作的是Theano还是TensorFlow。

下面的代码实例化一个变量。它等价于 tf.Variable() 或 th.shared()。

import numpy as np
val = np.random.random((3, 4, 5))
var = K.variable(value=val)

var = K.zeros(shape=(3, 4, 5))
var = K.ones(shape=(3, 4, 5))

你需要的大多数张量操作都可以像在 TensorFlow 或 Theano 中那样完成:

b = K.random_uniform_variable(shape=(3, 4), low=0, high=1) # 均匀分布
c = K.random_normal_variable(shape=(3, 4), mean=0, scale=1) # 高斯分布
d = K.random_normal_variable(shape=(3, 4), mean=0, scale=1)

以上这篇浅谈keras 的抽象后端(from keras import backend as K)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python基础教程之面向对象的一些概念
Aug 29 Python
总结Python编程中三条常用的技巧
May 11 Python
Python实现将绝对URL替换成相对URL的方法
Jun 28 Python
详解Python中映射类型的内建函数和工厂函数
Aug 19 Python
python脚本设置超时机制系统时间的方法
Feb 21 Python
python实现的多线程端口扫描功能示例
Jan 21 Python
Python合并多个Excel数据的方法
Jul 16 Python
Django 在iframe里跳转顶层url的例子
Aug 21 Python
Python input函数使用实例解析
Nov 22 Python
Python实现括号匹配方法详解
Feb 10 Python
Python读取多列数据以及用matplotlib制作图表方法实例
Sep 23 Python
端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!
Jun 11 Python
记录模型训练时loss值的变化情况
Jun 16 #Python
python实现批量转换图片为黑白
Jun 16 #Python
在keras中实现查看其训练loss值
Jun 16 #Python
安装python3.7编译器后如何正确安装opnecv的方法详解
Jun 16 #Python
Keras在训练期间可视化训练误差和测试误差实例
Jun 16 #Python
如何在Windows中安装多个python解释器
Jun 16 #Python
使用pyplot.matshow()函数添加绘图标题
Jun 16 #Python
You might like
php 防止单引号,双引号在接受页面转义
2008/07/10 PHP
解析argc argv在php中的应用
2013/06/24 PHP
PHP数组相关函数汇总
2015/03/24 PHP
浅谈使用 Yii2 AssetBundle 中 $publishOptions 的正确姿势
2017/11/08 PHP
给Flash加一个超链接(推荐使用透明层)兼容主流浏览器
2013/06/09 Javascript
js jquery分别实现动态的文件上传操作按钮的添加和删除
2014/01/13 Javascript
Javascript动画的实现原理浅析
2015/03/02 Javascript
用JS动态改变表单form里的action值属性的两种方法
2016/05/25 Javascript
Bootstrap实现登录校验表单(带验证码)
2016/06/23 Javascript
js 弹出对话框(遮罩)透明,可拖动的简单实例
2016/07/11 Javascript
Angularjs中三种数据的绑定策略(“@”,“=”,“&”)
2016/12/23 Javascript
原生js实现放大镜
2017/02/20 Javascript
js中字符型和数值型数字的互相转化方法(必看)
2017/04/25 Javascript
Angular2生命周期钩子函数的详细介绍
2017/07/10 Javascript
JS实现预加载视频音频/视频获取截图(返回canvas截图)
2017/10/09 Javascript
vue resource post请求时遇到的坑
2017/10/19 Javascript
解析Vue 2.5的Diff算法
2017/11/28 Javascript
浅谈Vue路由快照实现思路及其问题
2018/06/07 Javascript
vue全局使用axios的方法实例详解
2018/11/22 Javascript
浅谈Angular7 项目开发总结
2018/12/19 Javascript
微信小程序拖拽排序列表的示例代码
2020/07/08 Javascript
Vue-CLI 3 scp2自动部署项目至服务器的方法
2020/07/24 Javascript
[02:22:36]《加油!DOTA》总决赛
2014/09/19 DOTA
提升Python程序运行效率的6个方法
2015/03/31 Python
Python创建对称矩阵的方法示例【基于numpy模块】
2017/10/12 Python
Python利用itchat库向好友或者公众号发消息的实例
2019/02/21 Python
python可以用哪些数据库
2020/06/22 Python
django models里数据表插入数据id自增操作
2020/07/15 Python
html5 Canvas画图教程(9)—canvas中画出矩形和圆形
2013/01/09 HTML / CSS
南京迈特望C/C++面试题
2012/07/09 面试题
高中生学习总结的自我评价范文
2013/10/13 职场文书
机械电子工程毕业生自荐信
2013/11/23 职场文书
如何写好自荐信
2014/04/07 职场文书
医疗器械售后服务承诺书
2014/05/21 职场文书
考生诚信考试承诺书
2015/04/29 职场文书
导游词之崇武古城
2019/10/07 职场文书