浅谈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出现segfault错误解决方法
Apr 16 Python
通过pycharm使用git的步骤(图文详解)
Jun 13 Python
Pandas之DataFrame对象的列和索引之间的转化
Jun 25 Python
Python实现 PS 图像调整中的亮度调整
Jun 28 Python
通过实例了解python property属性
Nov 01 Python
Python 列表的清空方式
Jan 13 Python
python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
Feb 27 Python
Python如何批量获取文件夹的大小并保存
Mar 31 Python
python中判断数字是否为质数的实例讲解
Dec 06 Python
如何利用python和DOS获取wifi密码
Mar 31 Python
十个Python自动化常用操作,即拿即用
May 10 Python
pandas时间序列之pd.to_datetime()的实现
Jun 16 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
剧场版动画《PSYCHO-PASS 3 FIRST INSPECTOR》3月27日日本上映!
2020/03/06 日漫
php 获取客户端的真实ip
2009/11/30 PHP
php版微信公众平台实现预约提交后发送email的方法
2016/09/26 PHP
tp5(thinkPHP5)操作mongoDB数据库的方法
2018/01/20 PHP
Aster vs KG BO3 第一场2.18
2021/03/10 DOTA
javascript写的一个链表实现代码
2009/10/25 Javascript
十个优秀的Ajax/Javascript实例网站收集
2010/03/31 Javascript
js实现字符串的16进制编码不加密
2014/04/25 Javascript
JavaScript实现俄罗斯方块游戏过程分析及源码分享
2015/03/23 Javascript
JQuery包裹DOM节点的方法
2015/06/11 Javascript
jquery实现平滑的二级下拉菜单效果
2015/08/26 Javascript
JS实现的简洁纵向滑动菜单(滑动门)效果
2015/10/19 Javascript
jQuery调用Webservice传递json数组的方法
2016/08/06 Javascript
Web前端框架bootstrap实战【第一次接触使用】
2016/12/28 Javascript
jQuery插件ImgAreaSelect实现头像上传预览和裁剪功能实例讲解一
2017/05/26 jQuery
详解Puppeteer 入门教程
2018/05/09 Javascript
Jquery的autocomplete插件用法及参数讲解
2019/03/12 jQuery
layer提示框添加多个按钮选择的实例
2019/09/12 Javascript
vue使用video插件vue-video-player详解
2020/10/23 Javascript
[48:29]2018DOTA2亚洲邀请赛3月30日 小组赛A组 LGD VS KG
2018/03/31 DOTA
Python itertools模块详解
2015/05/09 Python
Python numpy实现数组合并实例(vstack,hstack)
2018/01/09 Python
Python2与Python3的区别实例总结
2019/04/17 Python
Python 使用 attrs 和 cattrs 实现面向对象编程的实践
2019/06/12 Python
Python手动或自动协程操作方法解析
2020/06/22 Python
Python中的流程控制详解
2021/02/18 Python
关于HTML5的安全问题开发人员需要牢记的
2012/06/21 HTML / CSS
如何防止同一个帐户被多人同时登录
2013/08/01 面试题
网上商城创业计划书范文
2014/01/31 职场文书
学校爱国卫生月活动总结
2014/06/25 职场文书
社区服务活动小结
2014/07/08 职场文书
董事长年会致辞
2015/07/29 职场文书
解决numpy和torch数据类型转化的问题
2021/05/23 Python
在pycharm中无法import所安装的库解决方案
2021/05/31 Python
MySQL选择合适的备份策略和备份工具
2022/06/01 MySQL
windows server 2012安装FTP并配置被动模式指定开放端口
2022/06/10 Servers