Keras.Backend的一些理解(备份)

  • 一、理解
  • 二、重要的一些backend函数(方法)

一、理解

我理解的深度学习层级由大到小为:Model>layer>函数,方法形成layer层,layer层形成model,keras.backend即后端,其实就是将深度学习向比layer更小的方法即函数下沉,更能实现灵活性;这里的方法即函数层,其实就是一些基本的数值处理方法,例如求均值的mean、求最大值的max,求点积的dot等,这些方法组合就可以形成一个layer,loss等基本的层。

二、重要的一些backend函数(方法)

import os, warnings
import keras.backend as K
"""placeholder()函数是在神经网络构建graph的时候在模型中的占位,此时并没有把要输入的数据传入模型,
它只会分配必要的内存。等建立session,在会话中,运行模型的时候通过feed_dict()函数向占位符喂入数据"""
inputs = K.placeholder(shape=(2, 4, 5))
# 同样可以:
inputs = K.placeholder(shape=(None, 4, 5))
# 同样可以:
inputs = K.placeholder(ndim=3)
"""==input,说明数据格式"""
print(inputs)
"""下面的代码实例化一个变量。它等价于 `tf.Variable()` 或 `th.shared()`。"""import numpy as np
val = np.random.random((3, 4, 5))
var = K.variable(value=val)
print(var)
# 全 0 变量:
var = K.zeros(shape=(3, 4, 5))
# 全 1 变量:
var = K.ones(shape=(3, 4, 5))
"""区别:Tensor("Placeholder_2:0", shape=(?, ?, ?), dtype=float32)
<tf.Variable 'Variable:0' shape=(3, 4, 5) dtype=float32_ref>
<tf.Variable 'Variable_2:0' shape=(3, 4, 5) dtype=float32_ref>
tensor,h和""""""你需要的大多数张量操作都可以像在 TensorFlow 或 Theano 中那样完成:```python"""
# 使用随机数初始化张量
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)
import  tensorflow as tf
inter_sess=tf.InteractiveSession()
tf.global_variables_initializer().run()
# 张量运算
a = b + c * K.abs(d)
print("b:",inter_sess.run(b))
print("c:",inter_sess.run(c))
print("d:",inter_sess.run(d))
print("a:",inter_sess.run(a))
#0.7-2*-0.2
c = K.dot(a, K.transpose(b))
print("transpose意义:")
print(inter_sess.run(b))
print(inter_sess.run(K.transpose(b)))"""dot的意义"""
aqq = K.ones((1,1))
bqq = K.ones((1,2))
cqq = K.dot(aqq, bqq)
print(K.eval(aqq))
print(K.eval(bqq))
print(cqq.shape)
print(K.eval(cqq))
print("结论,没有加减,似乎只是行列的变换,值没有变换")#print("下一个是求余弦相似度:余弦相似度就是相似程度,余弦相似度是而为空间中两个量接近程度,a^2*b^2=c^2,但是dot只是向量乘积")
print("c1:",inter_sess.run(c))
a = K.sum(b, axis=1)
print("sum:",inter_sess.run(a))"""softmax"""
print("softmax的意义>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
a = K.softmax(b)
print(K.eval(b))
print("softmax:",inter_sess.run(a))
print("结论:肺腑,转一,即每个数的比重")"""concate"""
print("concate的意义>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
a = K.concatenate([b, c], axis=-1)
print("b:",K.eval(b))
print("c:",K.eval(c))
print("a3:",K.eval(a))
print(a)
print("结论,行值增加,但不是值相加而是行特征增加")
# 等等"""numpy转keras Numpy 数组转换为默认的 Keras 浮点类型"""print(K.floatx())
'float32'
arr = np.array([1.0, 2.0], dtype='float64')
print(arr.dtype)
"""dtype('float64')"""
new_arr = K.cast_to_floatx(arr)
print(new_arr)
'array([ 1.,  2.], dtype=float32)'
print(new_arr.dtype)var1 = np.array([1.0,2.0],dtype='float64')
print(var1)
var2 = np.array([1.0,1.0],dtype='float64')
print(var2)
new_var1 = K.cast_to_floatx(var1)
new_var2 = K.cast_to_floatx(var2)
print(new_var1.dtype)"""to_dense,压缩张量""""""variablekeras.backend.variable(value, dtype=None, name=None, constraint=None)实例化一个变量并返回它。"""
val1 = np.array([[3,3],[5,5]])
kvar1 = K.variable(value=val1, dtype='float64', name='example_var')
val2 = np.array([[4, 4],[8,8]])
kvar2 = K.variable(value=val2, dtype='float64', name='example_var1')
print(val1,val2)
print(K.eval(K.dot(kvar1,kvar2)))
print("dot:的作用为:3*4+3*8=36,36,60,60")"""constant"""
print(K.eval(K.constant(value=[1.2,1.3])))
""">>>>非变量,即b""""""返回函数:ndim==轴即维度,eval==值""""""单位矩阵"""
print(K.eval(K.eye(3)))"""count_params:数组中静态维度的乘积"""
kvar = K.zeros((21,10))
print(K.count_params(kvar))"""### dot
python
keras.backend.dot(x, y)将 2 个张量(和/或变量)相乘并返回一个*张量*。""""""
prodkeras.backend.prod(x, axis=None, keepdims=False)
在某一指定轴,计算张量中的值的乘积。""""""
### concatenatekeras.backend.concatenate(tensors, axis=-1)基于指定的轴,连接张量的列表。__参数__- __tensors__: 需要连接的张量列表。
- __axis__: 连接的轴。__返回__一个张量。----
"""
""" reshapekeras.backend.reshape(x, shape)将张量重塑为指定的尺寸。__参数__- __x__: 张量或变量。
- __shape__: 目标尺寸元组。__返回__一个张量。
"""
""" permute_dimensionskeras.backend.permute_dimensions(x, pattern)
重新排列张量的轴。
"""print("前:",K.eval(K.eye(2)))
kvar_tile = K.tile(K.eye(2), (2, 2))
print("后:",K.eval(kvar_tile))
print("结论,后面的2是复制特征,前面的是复制维度")"""stack"""
print("前:",K.eval(K.ones((3,3,3))))
A = K.stack(K.ones((3,3,3)), axis=0)
print("后:",K.eval(A))
print("结论为:")""""""
### repeat_elements
print("前:",K.eval(K.eye(3)))
print(K.eval(K.repeat_elements(K.eye(3), 3, 1)))#axis=0为竖轴,axis为1为横轴"""### get_valuekeras.backend.get_value(x)
返回一个变量的值。
__参数__- __x__: 输入变量。__返回__一个 Numpy 数组。
"""
print("前:",K.eval(K.eye(3)))
print(K.get_value(K.eye(3)),type(K.get_value(K.eye(3))))
print("结论:keras格式转为numpy")
"""print_tensor
keras.backend.print_tensor(x, message='')
"""
print(K.eval(K.eye(2)))
print(K.print_tensor(K.eye(2)))
print("变成tensor")"""
### categorical_crossentropykeras.backend.categorical_crossentropy(target, output, from_logits=False)
"""
print("前",K.eval(K.ones((3,3))),K.eval(K.eye(3)))
print()
print("分类交叉烱:",K.eval(K.categorical_crossentropy(K.ones((3,3)),K.eye(3))))
print("gradients")
varqq =[K.zeros((3,3)),K.ones((3,3)),K.ones((3,3))]
loss = K.categorical_crossentropy(varqq,K.eye(3))
print(K.gradients(loss, var))

Keras.Backend的一些理解相关推荐

  1. 解决tensorflow报错:AttributeError: module ‘tensorflow.keras.backend‘ has no attribute ‘get_session‘ 问题

    欢迎大家关注笔者,你的关注是我持续更博的最大动力 原创文章,转载告知,盗版必究 解决tensorflow报错:AttributeError: module 'tensorflow.keras.back ...

  2. TensorFlow tf.keras.backend.ctc_batch_cost

    init tf.keras.backend.ctc_batch_cost(y_true,y_pred,input_length,label_length ) 参数 描述 y_true tensor ( ...

  3. AttributeError: module ‘keras.backend‘ has no attribute ‘get_session‘问题解决

    问题: Traceback (most recent call last):File "video.py", line 9, in <module>ssd = SSD( ...

  4. 用Keras搞一个阅读理解机器人

    catalogue 1. 训练集2. 数据预处理3. 神经网络模型设计(对话集 <->问题集)4. 神经网络模型设计(问题集 <->回答集)5. RNN神经网络6. 训练7. ...

  5. Keras embedding层的理解与使用

    看了很多博客没有解释清楚Embedding层input_dim的意思,下面这篇博客我认为是解释清楚了,欢迎借鉴:  首先搞懂这里embedding的原理就是one-hot,那这样就能理解为什么inpu ...

  6. 解决Keras 与 Tensorflow 版本之间的兼容性问题,导入keras报错:module 'tensorflow.python.keras.backend' has no attribute

    解决Keras 与 Tensorflow 版本之间的兼容性问题 原因是:不同版本的Keras对应不同的版本的TensorFlow https://docs.floydhub.com/guides/en ...

  7. tensorflow出现报错AttributeError: module ‘tensorflow.python.keras.backend‘ has no attribute ‘get_graph‘

    问题是tensorflow与keras版本不匹配. 查看对应版本重装即可 https://docs.floydhub.com/guides/environments/

  8. keras报错ModuleNotFoundError: No module named ‘keras.backend.tensorflow_backend‘;

    可以使用以下命令: pip uninstall keras pip install Keras==2.2.0 完美运行

  9. AttributeError: module ‘tensorflow.python.keras.backend‘ has no attribute ‘get_graph‘

    tensorflow和keras版本不匹配,参照下面这个更改就行,Tensorflow和Keras版本对照表 - _yhwu - 博客园 (cnblogs.com)

最新文章

  1. 2021年大数据HBase(十六):HBase的协处理器(Coprocessor)
  2. QT串口2--控制GSM模块的使用
  3. 学计算机的考研还是工作室,毕业后,考研和工作哪个更有出路,你后悔了吗?...
  4. 虚拟机无法连接至网络
  5. Linux 命令之 iconv -- 转换文件的字符编码
  6. 大疆无人机高程不准_大疆消费级无人机快速倾斜摄影测量实践
  7. python网络爬虫系列(十)——chrome在爬虫中的使用
  8. 【算法】普里姆算法 Prim算法解决修路问题
  9. 前端date format_前端面试-手撕代码篇
  10. 随想录(从DO-178C和ARINC653想到的)
  11. 记录一次nginx502/504问题解决过程
  12. 《程序员修炼之道(第2版)》到货!屹立20年影响力大作归来!
  13. 我在Linux开发板上跑的第一个Qt程序
  14. excel如何把顺序倒过来_excel怎么把顺序倒过来
  15. 时空数据挖掘一(城市计算)
  16. 计算机组成原理课程试题,计算机组成原理课程复习考试试题及答案B.doc
  17. 向量的加减(运算符重载)
  18. Gold Nanoparticles ,Au Coated Fe3O4 MagneticNanoparticles金磁微粒的介绍
  19. 数据结构基本概念和术语(数据、数据元素,数据对象,数据项)及举例描述
  20. 监控相机IQ调试策略

热门文章

  1. Go 1.18将原生支持fuzz test | Gopher Daily (2021.09.21) ʕ◔ϖ◔ʔ
  2. 机动车电子标识六项国家标准正式发布
  3. 数控雕刻机、数控车床的主传动系统、五档变速器、发动机活塞、斜齿轮减速器、曲柄连杆机构、圆压圆模切机、秸秆切碎机、xy工作台、星形卸料阀、小型平台印刷机、液氨储罐设计、法兰盘、饺子机、气动扳手……
  4. 计算机软件计量确认规则,测量软件确认规范.pdf
  5. Wolf从零学编程-用Python打造简单加密程序(八)
  6. http协议_HTTP 协议入门
  7. 53. 部门信息显示 EXTJS 单击树节点
  8. 承志医院管理系统项目解析 门诊医生工作站—书写病历(四)
  9. Geogebra下载【linux,MacOS,windows,iOS, Android】
  10. Python3安装PyYAML