浅谈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生成随机数的方法
Jan 14 Python
python实现俄罗斯方块
Jun 26 Python
pandas 透视表中文字段排序方法
Nov 16 Python
Python使用Pickle模块进行数据保存和读取的讲解
Apr 09 Python
python3中property使用方法详解
Apr 23 Python
Django框架模型简单介绍与使用分析
Jul 18 Python
python支持多线程的爬虫实例
Dec 21 Python
NumPy排序的实现
Jan 21 Python
Python图像处理库PIL的ImageEnhance模块使用介绍
Feb 26 Python
jupyter lab的目录调整及设置默认浏览器为chrome的方法
Apr 10 Python
python 识别登录验证码图片功能的实现代码(完整代码)
Jul 03 Python
python Xpath语法的使用
Nov 26 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执行sql语句的写法
2009/03/10 PHP
PHP的SQL注入实现(测试代码安全不错)
2011/02/27 PHP
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
2014/05/04 PHP
兼容ie和firefox js关闭代码
2008/12/11 Javascript
JavaScript 关键字屏蔽实现函数
2009/08/02 Javascript
javascript客户端解决方案 缓存提供程序
2010/07/14 Javascript
读jQuery之七 判断点击了鼠标哪个键的代码
2011/06/21 Javascript
ASP.NET jQuery 实例9  通过控件hyperlink实现返回顶部效果
2012/02/03 Javascript
JS和JQUERY获取页面大小,滚动条位置,元素位置(示例代码)
2013/12/14 Javascript
从零学JS之你需要了解的几本书
2014/05/19 Javascript
javascript 回调函数详解
2014/11/11 Javascript
JS+CSS简单树形菜单实现方法
2015/09/12 Javascript
jquery实现两边飘浮可关闭的对联广告
2015/11/27 Javascript
分享两款带遮罩的jQuery弹出框
2015/12/30 Javascript
7个去伪存真的JavaScript面试题
2016/01/07 Javascript
JavaScript中函数声明与函数表达式的区别详解
2016/08/18 Javascript
Javascript之面向对象--方法
2016/12/02 Javascript
Vue + Webpack + Vue-loader学习教程之相关配置篇
2017/03/14 Javascript
webpack打包js的方法
2018/03/12 Javascript
Angular ng-animate和ng-cookies用法详解
2018/04/18 Javascript
js数组去重的N种方法(小结)
2018/06/07 Javascript
使用jQuery动态设置单选框的选中效果
2018/12/06 jQuery
Vue使用lodop实现打印小结
2019/07/06 Javascript
vue router 传参获取不到的解决方式
2019/11/13 Javascript
小程序实现密码输入框
2020/11/16 Javascript
vue.js实现点击图标放大离开时缩小的代码
2021/01/27 Vue.js
[01:12:08]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.24
2019/09/10 DOTA
Dockers鞋官网:Dockers Shoes
2018/11/13 全球购物
英国川宁茶官方网站:Twinings茶
2019/05/21 全球购物
SNIDEL官网:日本VIVI杂志人气少女第一品牌
2020/03/12 全球购物
护理职业应聘自荐书
2013/09/29 职场文书
宿舍卫生检讨书
2014/01/16 职场文书
社区领导班子四风问题原因分析及整改措施
2014/09/28 职场文书
机关作风整顿个人剖析材料
2014/10/06 职场文书
2015年食堂工作总结报告
2015/04/23 职场文书
活动经费申请报告
2015/05/15 职场文书