tensorflow中tensor的静态维度和动态维度
tf中使用张量(tensor)这种数据结构来表示所有的数据,可以把张量看成是一个具有n个维度的数组或列表,张量会在各个节点之间流动,参与计算。
张量具有静态维度和动态维度。
在图构建过程中定义的张量拥有的维度是静态维度,这个维度可以被定义为不确定的,例如定义一个tensor的维度是[None,10],表示这个tensor的第一个维度是不确定的,可以是任意的,None 表示具体维度值要在图运行过程中确定。
在图运行的时候,张量在图中各个节点之间流动,此时张量具有的维度是动态维度,依据操作的需要,动态维度是可以动态转变的,所以tensor的动态维度不是唯一的,但是静态维度是唯一的(静态维度可以是形状不确定的)。
定义张量、设置静态维度、查询静态维度
设置静态维度使用 set_shape()
查询静态维度使用 tensorX.shape.as_list()
# -*- coding:utf-8 -*-
import tensorflow as tf
# 定义一个第一维度不确定的tensor
a = tf.placeholder(tf.float32, [None, 128])
b = tf.placeholder(tf.int32,[2,5,6])
# 查询张量a的静态维度
static_shape_a = a.shape.as_list()
static_shape_b = b.shape.as_list()
print static_shape_a,static_shape_b
# 设置张量a的静态维度,a必须有最少一个维度上是不确定才可以设置静态维度
a.set_shape([32, 128])
# b声明的时候3个静态维度已经是确定的了,再设置b的静态维度会报错
# b.set_shape([4,5,3])
# 查询张量a设置静态维度后的静态维度
static_shape_a = a.shape.as_list()
print static_shape_a
输出:
[None, 128] [2, 5, 6]
[32, 128]
静态维度可以认为是tensor的原始维度,如果定义tensor时候具体指定了tensor各个维度的具体值,则tensor的静态维度就是确定的了,不可以再更改静态维度信息了。 只有当定义tensor的时候至少一个维度上使用了 None,tensor的静态维度才可以
使用 set_shape()再指定。
改变和查询动态维度
动态的改变tensor的动态维度使用 tf.reshape()
查询tensor的动态维度使用 tf.shape()
# -*- coding:utf-8 -*-
import tensorflow as tf
# 定义一个第一维度不确定的tensor
a = tf.placeholder(tf.float32, [None, 128])
# 查询a的动态维度
dynamic_shape = tf.shape(a)
print dynamic_shape
#改变a的动态维度
a = tf.reshape(a, [32, 64,2])
# 查询a的动态维度
dynamic_shape = tf.shape(a)
print dynamic_shape
输出:
Tensor("Shape:0", shape=(2,), dtype=int32)
Tensor("Shape_1:0", shape=(3,), dtype=int32)
tensorflow中tensor的静态维度和动态维度的更多相关文章
- linux中C的静态库和动态库分析
从开始学C语言写第一个"hello world"历程到现在,我依然困惑于到底这个程序完整的执行流程是什么样的.不过,现在我正在尝试一点一点的揭开它的面纱.现在,我尝试分析linux ...
- 获取tensorflow中tensor的值
tensorflow中的tensor值的获取: import tensorflow as tf #定义变量a a=tf.Variable([[[1,2,3],[4,5,6]],[[7,8,9],[10 ...
- java中代理,静态代理,动态代理以及spring aop代理方式,实现原理统一汇总
若代理类在程序运行前就已经存在,那么这种代理方式被成为 静态代理 ,这种情况下的代理类通常都是我们在Java代码中定义的. 通常情况下, 静态代理中的代理类和委托类会实现同一接口或是派生自相同的父类. ...
- 对Tensorflow中tensor的理解
Tensor即张量,在tensorflow中所有的数据都通过张量流来传输,在看代码的时候,对张量的概念很不解,很容易和矩阵弄混,今天晚上查了点资料,并深入了解了一下,简单总结一下什么是张量的阶,以及张 ...
- Tensorflow中Tensor对象的常用方法(持续更新)
Tensor是Tensorflow中重要的对象.下面是Tensor的常用方法,后面还会写一篇随笔记录Variable的用法. 1. 生成一个(常)Tensor对象 >>>A = tf ...
- Android中的BroadCast静态注册与动态注册
1.静态注册 新建MyBroadcast类继承BroadcastReceiver,实现onReceive方法 /** * Author:JsonLu * DateTime:2015/9/21 16:4 ...
- jsp中的include静态包含与动态包含,
d动态包含与静态包含的最大区别是 静态包含:<%@ include file = "文件名.jsp"%>,在<body>的标签外定义.在没有编译的时候,两个 ...
- 引用yml中自定义数据 静态引用和动态引用
//静态 @Component public class LinusFile { public static String imageUrl; @Value("${web.uploadPat ...
- tensorflow中tensor与数组之间的转换
# 主要是两个方法: # 1.数组转tensor:数组a, tensor_a=tf.convert_to_tensor(a) # 2.tensor转数组:tensor b, array_b=b.eva ...
随机推荐
- sql2008 express 实现自动备份
在一个项目中用到的数据库是sqlserver 2008 r2 express .可没想到express版本的功能有些限制,此前一直都不知道啊.百度百科可以看到它的限制: “1.数据库的大小限制:SQL ...
- kylin与superset整合
前提: kylin安装以及配置可以参考 https://www.cnblogs.com/654wangzai321/p/9676204.html 我这边用的Linux自带的python2.7,为了保证 ...
- 文件读写网络IO简单了解,同步IO和异步IO
在Linux中,对文件的读写其实就是IO. 与IO有关的名词:同步,异步,阻塞,非阻塞,甚至是同步阻塞,同步非阻塞,异步阻塞,异步非阻塞.别急,下面有举例IO分为两大种,同步和异步 同步IO:阻塞IO ...
- 一个简单清晰的Redis操作类-php
<?php /** * redis处理的二次封装 * */ class Redis{ private $_redis; private $_config; public function __c ...
- bzoj1610 / P2665 [USACO08FEB]连线游戏Game of Lines
P2665 [USACO08FEB]连线游戏Game of Lines 第一次写快读没判负数....(捂脸) 暴力$O(n^2)$求斜率,排序判重. 注意垂直方向的直线要特判. end. #inclu ...
- 上传jar包至nexus
上传命令: mvn deploy:deploy-file -DgroupId=com.xxx -DartifactId=xxx-pdf -Dversion=16.10.0 -Dpackaging=ja ...
- 20145315 《Java程序设计》第八周学习总结
20145315 <Java程序设计>第八周学习总结 教材学习内容总结 第十五章通用API 15.1日志 15.1.1日志API简介 使用日志的起点是logger类,logger实例的创建 ...
- Rsync+sersync实现实时同步
介绍: sersync主要用于服务器同步,web镜像等功能.基于boost1.43.0,inotify api,rsync command.开发.目前使用的比较多的同步解决方案是inotify-too ...
- 枚举子集&高位前缀和
最近做的题里面有这个东西,于是写一篇博客总结一下吧. 枚举子集 枚举子集就是状压的时候枚举其中的二进制位中的1的子集.直接暴力枚举二进制位时间复杂度是\(O(4^n)\),但是我们可以发现,对于每一位 ...
- http://www.artrobot.com/北京钢铁侠
http://www.artrobot.com/ 钢铁侠ROS智能机器人 钢铁侠ROS智能机器人 型号 ARTrobot-ROS 产品图片: 产品概述: ARTrobot-ROS全开放机器人套件服 ...