浅谈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根据区号生成手机号码的方法
Jul 08 Python
在Django中创建URLconf相关的通用视图的方法
Jul 20 Python
Python使用sftp实现上传和下载功能(实例代码)
Mar 14 Python
Python Matplotlib 基于networkx画关系网络图
Jul 10 Python
django实现web接口 python3模拟Post请求方式
Nov 19 Python
python列表推导式入门学习解析
Dec 02 Python
Python 实现一行输入多个数字(用空格隔开)
Apr 29 Python
python访问hdfs的操作
Jun 06 Python
Numpy中np.max的用法及np.maximum区别
Nov 27 Python
python实现视频压缩功能
Dec 18 Python
python 将Excel转Word的示例
Mar 02 Python
python析构函数用法及注意事项
Jun 22 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 按位与或 (^ 、&)
2013/06/21 PHP
PHP cdata 处理(详细介绍)
2013/07/05 PHP
jquery 入门教程 [翻译] 推荐
2009/08/17 Javascript
JQuery 弹出框定位实现方法
2010/12/02 Javascript
Javascript中arguments对象详解
2014/10/22 Javascript
freemarker判断对象是否为空的方法
2015/08/13 Javascript
基于cssSlidy.js插件实现响应式手机图片轮播效果
2016/08/30 Javascript
基于vue实现多引擎搜索及关键字提示
2017/03/16 Javascript
详解Vuejs2.0之异步跨域请求
2017/04/20 Javascript
JS实现仿UC浏览器前进后退效果的实例代码
2017/07/17 Javascript
微信小程序开发之map地图组件定位并手动修改位置偏差
2019/08/17 Javascript
Vue使用Three.js加载glTF模型的方法详解
2020/06/14 Javascript
uniapp微信小程序:key失效的解决方法
2021/01/20 Javascript
[01:15:18]2014 DOTA2国际邀请赛中国区预选赛 LGD VS Speed Gaming.cn
2014/05/22 DOTA
[03:42]2014DOTA2国际邀请赛 第三日比赛排位扑朔迷离
2014/07/12 DOTA
[53:38]OG vs LGD 2018国际邀请赛淘汰赛BO3 第三场 8.26
2018/08/30 DOTA
Python函数参数类型*、**的区别
2015/04/11 Python
使用python将图片按标签分入不同文件夹的方法
2018/12/08 Python
Python实现求两个数组交集的方法示例
2019/02/23 Python
Django框架中序列化和反序列化的例子
2019/08/06 Python
Python3 shelve对象持久存储原理详解
2020/03/23 Python
PyTorch的torch.cat用法
2020/06/28 Python
Python如何使用ConfigParser读取配置文件
2020/11/12 Python
Rosetta Stone官方网站:语言学习
2019/01/05 全球购物
NULL是什么,它是怎么定义的
2015/05/09 面试题
教师队伍管理制度
2014/01/14 职场文书
主管会计岗位责任制
2014/02/10 职场文书
贸易经济专业自荐书
2014/06/29 职场文书
党的群众路线教育实践活动对照检查剖析材料
2014/10/09 职场文书
党的群众路线教育实践活动个人对照检查材料(医生)
2014/11/05 职场文书
面试感谢信范文
2015/01/22 职场文书
2016继续教育培训学习心得体会
2016/01/19 职场文书
公文写作:教你写“建议书”
2019/05/07 职场文书
升职自荐书
2019/05/09 职场文书
python实现批量提取指定文件夹下同类型文件
2021/04/05 Python
吉利入股戴姆勒后smart“长大了”
2022/04/21 数码科技