浅谈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 相关文章推荐
Python3.4 tkinter,PIL图片转换
Jun 21 Python
Python打开文件,将list、numpy数组内容写入txt文件中的方法
Oct 26 Python
Pycharm2017版本设置启动时默认自动打开项目的方法
Oct 29 Python
Python实现查找最小的k个数示例【两种解法】
Jan 08 Python
Python mutiprocessing多线程池pool操作示例
Jan 30 Python
python 为什么说eval要慎用
Mar 26 Python
学习和使用python的13个理由
Jul 30 Python
解决pyPdf和pyPdf2在合并pdf时出现异常的问题
Apr 03 Python
使用PyCharm安装pytest及requests的问题
Jul 31 Python
python 如何停止一个死循环的线程
Nov 24 Python
python unichr函数知识点总结
Dec 16 Python
python使用tkinter实现透明窗体上绘制随机出现的小球(实例代码)
May 17 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判断是否有Get参数的方法
2014/05/05 PHP
php实现删除空目录的方法
2015/03/16 PHP
JS类库Bindows1.3中的内存释放方式分析
2007/03/08 Javascript
document.getElementById方法在Firefox与IE中的区别
2010/05/18 Javascript
js操作select控件的几种方法
2010/06/02 Javascript
jQuery使用技巧简单汇总
2013/04/18 Javascript
JavaScript框架是什么?怎样才能叫做框架?
2015/07/01 Javascript
原生javascript实现图片无缝滚动效果
2016/02/12 Javascript
jQuery对checkbox 复选框的全选全不选反选的操作
2016/08/09 Javascript
JS触摸屏网页版仿app弹窗型滚动列表选择器/日期选择器
2016/10/30 Javascript
Bootstrap基本样式学习笔记之标签(5)
2016/12/07 Javascript
原生JS轮播图插件
2017/02/09 Javascript
ZeroClipboard.js使用一个flash复制多个文本框
2017/06/19 Javascript
Vue0.1的过滤代码如何添加到Vue2.0直接使用
2017/08/23 Javascript
React操作真实DOM实现动态吸底部的示例
2017/10/23 Javascript
Vue-drag-resize 拖拽缩放插件的使用(简单示例)
2019/12/04 Javascript
js里面的变量范围分享
2020/07/18 Javascript
vue实现移动端input上传视频、音频
2020/08/18 Javascript
Vue+element-ui添加自定义右键菜单的方法示例
2020/12/08 Vue.js
[03:49]辉夜杯现场龙骑士COSER秀情商“我喜欢芬队!”
2015/12/27 DOTA
Python中zip()函数用法实例教程
2014/07/31 Python
python处理文本文件实现生成指定格式文件的方法
2014/07/31 Python
python实现分析apache和nginx日志文件并输出访客ip列表的方法
2015/04/04 Python
Python numpy 常用函数总结
2017/12/07 Python
pandas修改DataFrame列名的实现方法
2019/02/22 Python
使用TensorFlow搭建一个全连接神经网络教程
2020/02/06 Python
Python获取android设备cpu和内存占用情况
2020/11/15 Python
Python扫描端口的实现
2021/01/25 Python
利用CSS的Sass预处理器(框架)来制作居中效果
2016/03/10 HTML / CSS
Oracle的内存结构(Memory structures)
2015/06/10 面试题
PyQt 如何创建自定义QWidget
2021/03/24 Python
货代行业个人求职简历的自我评价
2013/10/22 职场文书
国贸专业大学生职业生涯规划范文
2014/01/10 职场文书
节约用水标语
2014/06/11 职场文书
中药学专业毕业生推荐信
2014/07/10 职场文书
销售人员管理制度
2015/08/06 职场文书