在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通过pil模块将raw图片转换成png图片的方法
Mar 16 Python
python简单获取数组元素个数的方法
Jul 13 Python
简单讲解Python中的数字类型及基本的数学计算
Mar 11 Python
python的pdb调试命令的命令整理及实例
Jul 12 Python
Python实现压缩和解压缩ZIP文件的方法分析
Sep 28 Python
Python使用pandas处理CSV文件的实例讲解
Jun 22 Python
Python 实现交换矩阵的行示例
Jun 26 Python
python实现最大优先队列
Aug 29 Python
win10安装tensorflow-gpu1.8.0详细完整步骤
Jan 20 Python
Python使用Selenium实现淘宝抢单的流程分析
Jun 23 Python
解决keras模型保存h5文件提示无此目录问题
Jul 01 Python
Pytorch可视化的几种实现方法
Jun 10 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
为IP查询添加GOOGLE地图功能的代码
2010/08/08 PHP
PHP数组交集的优化代码分析
2011/03/06 PHP
php文本转图片自动换行的方法
2013/03/13 PHP
php使用cookie实现记住用户名和密码实现代码
2015/04/27 PHP
php判断数组是否为空的实例方法
2020/05/10 PHP
js 数值项目的格式化函数代码
2010/05/14 Javascript
JavaScript中链式调用之研习
2011/04/07 Javascript
Raphael带文本标签可拖动的图形实现代码
2013/02/20 Javascript
JavaScript lastIndexOf方法入门实例(计算指定字符在字符串中最后一次出现的位置)
2014/10/17 Javascript
浅谈javascript事件取消和阻止冒泡
2015/05/26 Javascript
jQuery使用$.ajax提交表单完整实例
2015/12/11 Javascript
详解jQuery UI库中文本输入自动补全功能的用法
2016/04/23 Javascript
JS实现星星评分功能实例代码(两种方法)
2016/06/09 Javascript
JS正则替换掉小括号及内容的方法
2016/11/29 Javascript
Angularjs中的ui-bootstrap的使用教程
2017/02/19 Javascript
JavaScript数组特性与实践应用深入详解
2018/12/30 Javascript
详解wepy开发小程序踩过的坑(小结)
2019/05/22 Javascript
JavaScript检测是否开启了控制台(F12调试工具)
2020/10/02 Javascript
简单谈谈Python中函数的可变参数
2016/09/02 Python
Python SQLite3数据库日期与时间常见函数用法分析
2017/08/14 Python
Python开发的HTTP库requests详解
2017/08/29 Python
Python中实现最小二乘法思路及实现代码
2018/01/04 Python
java中的控制结构(if,循环)详解
2019/06/26 Python
Python生命游戏实现原理及过程解析(附源代码)
2019/08/01 Python
如何分离django中的媒体、静态文件和网页
2019/11/12 Python
美国男装连锁零售商:Men’s Wearhouse
2016/10/14 全球购物
给幼儿园老师的表扬信
2014/01/19 职场文书
探亲假请假条
2014/04/11 职场文书
小摄影师教学反思
2014/04/27 职场文书
在职员工证明书
2014/09/19 职场文书
诚信承诺书
2015/01/19 职场文书
关于食品安全的演讲稿范文(三篇)
2019/10/21 职场文书
MySQL Threads_running飙升与慢查询的相关问题解决
2021/05/08 MySQL
MongoDB支持的索引类型
2022/04/11 MongoDB
python小型的音频操作库mp3Play
2022/04/24 Python
Springboot集成kafka高级应用实战分享
2022/08/14 Java/Android