在keras 中获取张量 tensor 的维度大小实例


Posted in Python onJune 10, 2020

在进行keras 网络计算时,有时候需要获取输入张量的维度来定义自己的层。但是由于keras是一个封闭的接口。因此在调用由于是张量不能直接用numpy 里的A.shape()。这样的形式来获取。这里需要调用一下keras 作为后端的方式来获取。当我们想要操作时第一时间就想到直接用 shape ()函数。其实keras 中真的有shape()这个函数。

shape(x)返回一个张量的符号shape,符号shape的意思是返回值本身也是一个tensor,

示例:

>>> from keras import backend as K
>>> tf_session = K.get_session()
>>> val = np.array([[1, 2], [3, 4]])
>>> kvar = K.variable(value=val)
>>> input = keras.backend.placeholder(shape=(2, 4, 5))
>>> K.shape(kvar)
<tf.Tensor 'Shape_8:0' shape=(2,) dtype=int32>
>>> K.shape(input)
<tf.Tensor 'Shape_9:0' shape=(3,) dtype=int32>
__To get integer shape (Instead, you can use K.int_shape(x))__
 
>>> K.shape(kvar).eval(session=tf_session)
array([2, 2], dtype=int32)
>>> K.shape(input).eval(session=tf_session)
array([2, 4, 5], dtype=int32)

如果直接调用这个出的不是我们想要的。我们想要的是tensor各个维度的大小。因此可以直接调用 int_shape(x) 函数。这个函数才是我们想要的。

>>> from keras import backend as K
>>> input = K.placeholder(shape=(2, 4, 5))
>>> K.int_shape(input)
(2, 4, 5)
>>> val = np.array([[1, 2], [3, 4]])
>>> kvar = K.variable(value=val)
>>> K.int_shape(kvar)
(2, 2)

最后这样我们就可以直接调用里面的大小。然后定义我们自己的keras 层了。

补充知识:获取Tensor的维度(x.shape和x.get_shape()的区别)

tf.shape(a)和a.get_shape()比较

相同点:都可以得到tensor a的尺寸

不同点:tf.shape()中a 数据的类型可以是tensor, list, array

a.get_shape()中a的数据类型只能是tensor,且返回的是一个元组(tuple)

import tensorflow as tf 
import numpy as np 

x=tf.constant([[1,2,3],[4,5,6]])
y=[[1,2,3],[4,5,6]] 
z=np.arange(24).reshape([2,3,4])

sess=tf.Session() 
# tf.shape() 
x_shape=tf.shape(x)          # x_shape 是一个tensor 
y_shape=tf.shape(y)          # <tf.Tensor 'Shape_2:0' shape=(2,) dtype=int32> 
z_shape=tf.shape(z)          # <tf.Tensor 'Shape_5:0' shape=(3,) dtype=int32> 
print(sess.run(x_shape))       # 结果:[2 3]
print(sess.run(y_shape))       # 结果:[2 3]
print(sess.run(z_shape) )       # 结果:[2 3 4]

x_shape=x.get_shape() 
print(x_shape)    # 返回的是TensorShape([Dimension(2), Dimension(3)]),不能使用 sess.run() 因为返回的不是tensor 或string,而是元组                            (2, 3)
x_shape=x.get_shape().as_list() 
print(x_shape) # 可以使用 as_list()得到具体的尺寸,x_shape=[2 3] 这是重点 返回列表方便参加其他代码的运算
# y_shape=y.get_shape() 
print(x_shape)# AttributeError: 'list' object has no attribute 'get_shape'
# z_shape=z.get_shape() 
print(x_shape)# AttributeError: 'numpy.ndarray' object has no attribute 'get_shape' 或者a.shape.as_list()

以上这篇在keras 中获取张量 tensor 的维度大小实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python内置函数bin() oct()等实现进制转换
Dec 30 Python
python3编写C/S网络程序实例教程
Aug 25 Python
Python中使用语句导入模块或包的机制研究
Mar 30 Python
Python 爬虫多线程详解及实例代码
Oct 08 Python
Python实现通过文件路径获取文件hash值的方法
Apr 29 Python
Python中字典(dict)合并的四种方法总结
Aug 10 Python
Python实现字符型图片验证码识别完整过程详解
May 10 Python
python matplotlib中的subplot函数使用详解
Jan 19 Python
Django 解决上传文件时,request.FILES为空的问题
May 20 Python
基于nexus3配置Python仓库过程详解
Jun 15 Python
如何对python的字典进行排序
Jun 19 Python
python 基于卡方值分箱算法的实现示例
Jul 17 Python
Keras—embedding嵌入层的用法详解
Jun 10 #Python
Keras框架中的epoch、bacth、batch size、iteration使用介绍
Jun 10 #Python
Python3.9 beta2版本发布了,看看这7个新的PEP都是什么
Jun 10 #Python
JAVA及PYTHON质数计算代码对比解析
Jun 10 #Python
keras 使用Lambda 快速新建层 添加多个参数操作
Jun 10 #Python
matplotlib 生成的图像中无法显示中文字符的解决方法
Jun 10 #Python
Tensorflow中k.gradients()和tf.stop_gradient()用法说明
Jun 10 #Python
You might like
PHP入门学习笔记之一
2010/10/12 PHP
如何使用PHP获取指定日期所在月的开始日期与结束日期
2013/08/01 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
2020/11/10 PHP
IE8 原生JSON支持
2009/04/13 Javascript
初窥JQuery(二) 事件机制(1)
2010/11/25 Javascript
jQuery隔行变色与普通JS写法的对比
2013/04/21 Javascript
jquerymobile局部渲染的各种刷新方法小结
2014/03/05 Javascript
javaScript年份下拉列表框内容为当前年份及前后50年
2014/05/28 Javascript
JavaScript基于setTimeout实现计数的方法
2015/05/08 Javascript
微信小程序实战之自定义toast(6)
2017/04/18 Javascript
基于Vue.js实现tab滑块效果
2017/07/23 Javascript
VsCode新建VueJs项目的详细步骤
2017/09/23 Javascript
element 结合vue 在表单验证时有值却提示错误的解决办法
2018/01/22 Javascript
Vue.use源码学习小结
2018/06/20 Javascript
利用Blob进行文件上传的完整步骤
2018/08/02 Javascript
浅谈Vue.js 中的 v-on 事件指令的使用
2018/11/25 Javascript
5分钟快速看懂ES6中的反射与代理
2019/12/19 Javascript
Node.JS如何实现JWT原理
2020/09/18 Javascript
[59:32]Liquid vs Fnatic 2019国际邀请赛淘汰赛败者组BO1 8.20.mp4
2020/07/19 DOTA
python读取浮点数和读取文本文件示例
2014/05/06 Python
Python 写入训练日志文件并控制台输出解析
2019/08/13 Python
基于Python 的语音重采样函数解析
2020/07/06 Python
基于opencv的selenium滑动验证码的实现
2020/07/24 Python
Selenium关闭INFO:CONSOLE提示的解决
2020/12/07 Python
python爬虫如何解决图片验证码
2021/02/14 Python
html5开发三八女王节表白神器
2018/03/07 HTML / CSS
维多利亚的秘密官方网站:Victoria’s Secret
2018/10/24 全球购物
产品促销活动策划书
2014/01/15 职场文书
文明寄语大全
2014/04/11 职场文书
实习单位鉴定评语
2014/04/26 职场文书
求职自我推荐信
2014/06/25 职场文书
2014医学院领导干部四风对照检查材料思想汇报
2014/09/16 职场文书
求职自荐信范文(优秀篇)
2015/03/27 职场文书
公司规章制度范本
2015/08/03 职场文书
2019已经过半,你知道年中工作总结该怎么写吗?
2019/07/03 职场文书
python数字图像处理之图像自动阈值分割示例
2022/06/28 Python