浅谈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修改Excel数据的实例代码
Nov 01 Python
python的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
Jul 09 Python
使用Python的Twisted框架编写简单的网络客户端
Apr 16 Python
以911新闻为例演示Python实现数据可视化的教程
Apr 23 Python
探究python中open函数的使用
Mar 01 Python
Bottle框架中的装饰器类和描述符应用详解
Oct 28 Python
Linux 修改Python命令的方法示例
Dec 03 Python
Python3中编码与解码之Unicode与bytes的讲解
Feb 28 Python
python爬虫模拟浏览器的两种方法实例分析
Dec 09 Python
python3 Scrapy爬虫框架ip代理配置的方法
Jan 17 Python
Python 安装 virturalenv 虚拟环境的教程详解
Feb 21 Python
OpenCV-Python模板匹配人眼的实例
Jun 08 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
Discuz 5.0 中读取纯真IP数据库函数分析
2007/03/16 PHP
学习PHP session的传递方式
2016/06/15 PHP
php+ajax登录跳转登录实现思路
2016/07/31 PHP
谈谈php对接芝麻信用踩的坑
2016/12/01 PHP
php中简单的对称加密算法实现
2017/01/05 PHP
Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
2019/12/04 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
Javascript常用运算符(Operators)-javascript基础教程
2007/12/14 Javascript
javascript delete 使用示例代码
2010/03/29 Javascript
精心挑选的12款优秀的基于jQuery的手风琴效果插件和教程
2012/08/22 Javascript
jQuery实现的一个tab切换效果内部还嵌有切换
2014/08/10 Javascript
javascript图片滑动效果实现
2021/01/28 Javascript
Bootstrap每天必学之警告框插件
2016/04/26 Javascript
详解Angular2 之 结构型指令
2017/06/21 Javascript
Angularjs上传文件组件flowjs功能
2017/08/07 Javascript
详解处理bootstrap4不支持远程静态框问题
2018/07/20 Javascript
Vue路由守卫之路由独享守卫
2019/09/25 Javascript
JavaScript 函数用法详解【函数定义、参数、绑定、作用域、闭包等】
2020/05/12 Javascript
vue实现输入框自动跳转功能
2020/05/20 Javascript
python中的全局变量用法分析
2015/06/09 Python
基于Python实现通过微信搜索功能查看谁把你删除了
2016/01/27 Python
Python爬虫:通过关键字爬取百度图片
2017/02/17 Python
Python Flask前后端Ajax交互的方法示例
2018/07/31 Python
python实现dijkstra最短路由算法
2019/01/17 Python
python导入坐标点的具体操作
2019/05/10 Python
详解一种用django_cache实现分布式锁的方式
2019/09/01 Python
新手学习Python2和Python3中print不同的用法
2020/06/09 Python
css3使用animation属性实现炫酷效果(推荐)
2020/02/04 HTML / CSS
医院办公室主任职责
2013/12/29 职场文书
高中数学教学反思
2014/01/30 职场文书
三个儿子教学反思
2014/02/03 职场文书
《一件运动衫》教学反思
2014/02/19 职场文书
无房证明范本
2014/09/17 职场文书
MySQL连接查询你真的学会了吗?
2021/06/02 MySQL
Go gRPC进阶教程gRPC转换HTTP
2022/06/16 Golang
win10忘记pin密码登录不了怎么办?win10忘记pin密码登不进去的解决方法
2022/07/07 数码科技