浅谈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读写文件操作示例程序
Dec 02 Python
理解Python中函数的参数
Apr 27 Python
Python脚本实时处理log文件的方法
Nov 21 Python
python 网络编程详解及简单实例
Apr 25 Python
django 外键model的互相读取方法
Dec 15 Python
Python面向对象实现一个对象调用另一个对象操作示例
Apr 08 Python
Python如何实现爬取B站视频
May 20 Python
keras之权重初始化方式
May 21 Python
Python 字典中的所有方法及用法
Jun 10 Python
Python pip安装第三方库实现过程解析
Jul 09 Python
如何在python中判断变量的类型
Jul 29 Python
如何用Anaconda搭建虚拟环境并创建Django项目
Aug 02 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网页木马一枚 附PHP木马的防范方法
2009/10/09 PHP
PHP下对字符串的递增运算代码
2010/08/21 PHP
php cli换行示例
2014/04/22 PHP
教你如何用php实现LOL数据远程获取
2014/06/10 PHP
使用symfony命令创建项目的方法
2016/03/17 PHP
用javascript实现在小方框中浏览大图的代码
2007/08/14 Javascript
JavaScript Event学习第九章 鼠标事件
2010/02/08 Javascript
js数组Array sort方法使用深入分析
2013/02/21 Javascript
在子窗口中关闭父窗口的一句代码
2013/10/21 Javascript
JavaScript获取路径设计源码
2014/05/22 Javascript
jQuery on方法传递参数示例
2014/12/09 Javascript
JavaScript中将数组进行合并的基本方法讲解
2016/03/07 Javascript
浅谈JS函数定义方式的区别
2016/10/30 Javascript
js与jquery分别实现tab标签页功能的方法
2016/11/18 Javascript
微信小程序 UI布局常用技巧整理总结
2016/12/05 Javascript
详解Webpack DLL用法以及功能
2017/07/11 Javascript
jQuery实现右侧抽屉式在线客服功能
2017/12/25 jQuery
vue如何将v-for中的表格导出来
2018/05/07 Javascript
浅谈js中的bind
2019/03/18 Javascript
MySQL最常见的操作语句小结
2015/05/07 Python
Python下载懒人图库JavaScript特效
2015/05/28 Python
Python的pycurl包用法简介
2015/11/13 Python
python 实现判断ip连通性的方法总结
2018/04/22 Python
Python实现E-Mail收集插件实例教程
2019/02/06 Python
Python 实现opencv所使用的图片格式与 base64 转换
2020/01/09 Python
python3实现往mysql中插入datetime类型的数据
2020/03/02 Python
香港No.1得奖零食网:香港零食大王
2016/07/22 全球购物
英国排名第一的在线宠物用品商店:Monster Pet Supplies
2018/05/20 全球购物
人力资源专员自我评价怎么写
2013/09/19 职场文书
中秋节礼品促销方案
2014/02/02 职场文书
离婚协议书的范本
2015/01/27 职场文书
中学教师个人总结
2015/02/10 职场文书
寒假安全保证书
2015/02/28 职场文书
2015年全民国防教育日活动总结
2015/03/23 职场文书
欧也妮葛朗台读书笔记
2015/06/30 职场文书
MySQL中distinct与group by之间的性能进行比较
2021/05/26 MySQL