在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常用web框架简单性能测试结果分享(包含django、flask、bottle、tornado)
Aug 25 Python
Python常用内置函数总结
Feb 08 Python
python循环监控远程端口的方法
Mar 14 Python
Python键盘输入转换为列表的实例
Jun 23 Python
Django基础知识与基本应用入门教程
Jul 20 Python
python实现抽奖小程序
Apr 15 Python
安装PyInstaller失败问题解决
Dec 14 Python
pyftplib中文乱码问题解决方案
Jan 11 Python
Python实现子类调用父类的初始化实例
Mar 12 Python
Python+Matplotlib图像上指定坐标的位置添加文本标签与注释
Apr 11 Python
Python尝试实现蒙特卡罗模拟期权定价
Apr 21 Python
Python 匹配文本并在其上一行追加文本
May 11 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与XML联手进行网站编程代码实例
2008/07/10 PHP
PHP文件缓存内容保存格式实例分析
2014/08/20 PHP
php实现检查文章是否被百度收录
2015/01/27 PHP
php算法实例分享
2015/07/14 PHP
php中时间函数date及常用的时间计算
2017/05/12 PHP
javascript事件模型代码
2007/07/01 Javascript
对xmlHttp对象方法和属性的理解
2011/01/17 Javascript
文本框输入时 实现自动提示(像百度、google一样)
2012/04/05 Javascript
JavaScript中的作用域链和闭包
2012/06/30 Javascript
使用jquery修改表单的提交地址基本思路
2014/06/04 Javascript
jquery+php随机生成红包金额数量代码分享
2015/08/27 Javascript
jquery特效 点击展示与隐藏全文
2015/12/09 Javascript
JavaScript中setTimeout和setInterval函数的传参及调用
2016/03/11 Javascript
基于Bootstrap仿淘宝分页控件实现代码
2016/11/07 Javascript
深入理解jquery中extend的实现
2016/12/22 Javascript
原生Javascript插件开发实践
2017/01/18 Javascript
Easyui ueditor 整合解决不能编辑的问题(推荐)
2017/06/25 Javascript
详谈javascript精度问题与调整
2017/07/08 Javascript
JS如何设置元素样式的方法示例
2017/08/28 Javascript
Angular4开发解决跨域问题详解
2017/08/28 Javascript
使用Node.js写一个代码生成器的方法步骤
2019/05/10 Javascript
Elasticsearch实现复合查询高亮结果功能
2019/09/10 Javascript
tensorflow 恢复指定层与不同层指定不同学习率的方法
2018/07/26 Python
3种python调用其他脚本的方法
2020/01/06 Python
TensorFlow打印输出tensor的值
2020/04/19 Python
Django 解决model 反向引用中的related_name问题
2020/05/19 Python
Python基础教程(一)——Windows搭建开发Python开发环境
2020/07/20 Python
python爬虫scrapy框架的梨视频案例解析
2021/02/20 Python
使用CSS3的rem属性制作响应式页面布局的要点解析
2016/05/24 HTML / CSS
斯洛伐克时尚服装网上商店:Cellbes
2016/10/20 全球购物
美国领先的水果篮送货公司和新鲜水果供应商:The Fruit Company
2018/02/13 全球购物
捷克移动配件网上商店:ProMobily.cz
2019/03/15 全球购物
买房协议书
2014/04/11 职场文书
写给父母的感谢信
2015/01/22 职场文书
2016年小学教师师德承诺书
2016/03/25 职场文书
利用Matlab绘制各类特殊图形的实例代码
2021/07/16 Python