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的静态维度和动态维度的更多相关文章

  1. linux中C的静态库和动态库分析

    从开始学C语言写第一个"hello world"历程到现在,我依然困惑于到底这个程序完整的执行流程是什么样的.不过,现在我正在尝试一点一点的揭开它的面纱.现在,我尝试分析linux ...

  2. 获取tensorflow中tensor的值

    tensorflow中的tensor值的获取: import tensorflow as tf #定义变量a a=tf.Variable([[[1,2,3],[4,5,6]],[[7,8,9],[10 ...

  3. java中代理,静态代理,动态代理以及spring aop代理方式,实现原理统一汇总

    若代理类在程序运行前就已经存在,那么这种代理方式被成为 静态代理 ,这种情况下的代理类通常都是我们在Java代码中定义的. 通常情况下, 静态代理中的代理类和委托类会实现同一接口或是派生自相同的父类. ...

  4. 对Tensorflow中tensor的理解

    Tensor即张量,在tensorflow中所有的数据都通过张量流来传输,在看代码的时候,对张量的概念很不解,很容易和矩阵弄混,今天晚上查了点资料,并深入了解了一下,简单总结一下什么是张量的阶,以及张 ...

  5. Tensorflow中Tensor对象的常用方法(持续更新)

    Tensor是Tensorflow中重要的对象.下面是Tensor的常用方法,后面还会写一篇随笔记录Variable的用法. 1. 生成一个(常)Tensor对象 >>>A = tf ...

  6. Android中的BroadCast静态注册与动态注册

    1.静态注册 新建MyBroadcast类继承BroadcastReceiver,实现onReceive方法 /** * Author:JsonLu * DateTime:2015/9/21 16:4 ...

  7. jsp中的include静态包含与动态包含,

    d动态包含与静态包含的最大区别是 静态包含:<%@ include file = "文件名.jsp"%>,在<body>的标签外定义.在没有编译的时候,两个 ...

  8. 引用yml中自定义数据 静态引用和动态引用

    //静态 @Component public class LinusFile { public static String imageUrl; @Value("${web.uploadPat ...

  9. tensorflow中tensor与数组之间的转换

    # 主要是两个方法: # 1.数组转tensor:数组a, tensor_a=tf.convert_to_tensor(a) # 2.tensor转数组:tensor b, array_b=b.eva ...

随机推荐

  1. php获取目录下所有文件路径(递归)

    <?php function tree(&$arr_file, $directory, $dir_name='') { $mydir = dir($directory); while($ ...

  2. Missing Number-[回溯][难]

    2. Missing number 转自:https://mp.weixin.qq.com/s/WLRXLdi-3igkjtiWlHg7Ug Given a positive integer n(n≤ ...

  3. file /etc/httpd/conf.d/php.conf from install of php-5.6.37-1.el7.remi.x86_64 conflicts with file from package mod_php71w-7.1.18-1.w7.x86_64

    yum remove mod_php71w php71w-cli

  4. 【转】Deep Learning(深度学习)学习笔记整理系列之(七)

    9.5.Convolutional Neural Networks卷积神经网络 卷积神经网络是人工神经网络的一种,已成为当前语音分析和图像识别领域的研究热点.它的权值共享网络结构使之更类似于生物神经网 ...

  5. python16_day36【爬虫1】

    一.requests 1. GET请求 # 1.无参数实例 import requests ret = requests.get('https://github.com/timeline.json') ...

  6. 2016-2017 CT S03E07: Codeforces Trainings Season 3 Episode 7

    B. Pen Pineapple Apple Pen Solved. 题意:将一个序列合并成一个数. 思路:分类讨论一下, 水. #include<bits/stdc++.h> using ...

  7. 883. Projection Area of 3D Shapes

    问题 NxN个格子中,用1x1x1的立方体堆叠,grid[i][j]表示坐标格上堆叠的立方体个数,求三视图面积. Input: [[1,2],[3,4]] Output: 17 Explanation ...

  8. SQL Server System.Data.SqlClient.SqlException:已成功于服务器建立连接,但是在 登录前的握手期间发生错误

    一.错误描述 错误名称如上.整体错误如下: System.Data.EntityException 基础提供程序在Open上失败--> System.Data.SqlClient.SqlExce ...

  9. Java8 Predicate

    code: package com.qhong; import java.util.ArrayList; import java.util.Arrays; import java.util.List; ...

  10. reason: image not found的解决方案

    在制作framework时遇到真机运行时导致的reason: image not found允许崩溃的问题,下面是我的解决方案: 首先我们分析一下出现这种情况的原因,原因就是framework找不到镜 ...