tensorflow获取变量维度信息

tensorflow版本1.4

获取变量维度是一个使用频繁的操作,在tensorflow中获取变量维度主要用到的操作有以下三种:

  • Tensor.shape
  • Tensor.get_shape()
  • tf.shape(input,name=None,out_type=tf.int32)

对上面三种操作做一下简单分析:(这三种操作先记作A、B、C)

A 和 B 基本一样,只不过前者是Tensor的属性变量,后者是Tensor的函数。
A 和 B 均返回TensorShape类型,而 C 返回一个1D的out_type类型的Tensor。
A 和 B 可以在任意位置使用,而 C 必须在Session中使用。
A 和 B 获取的是静态shape,可以返回不完整的shape; C 获取的是动态的shape,必须是完整的shape。

另外,补充从TenaorShape变量中获取具体维度数值的方法

# 直接获取TensorShape变量的第i个维度值
x.shape[i].value
x.get_shape()[i].value

# 将TensorShape变量转化为list类型,然后直接按照索引取值
x.get_shape().as_list()

下面给出全部的示例程序:

import tensorflow as tf

x1 = tf.constant([[1,2,3],[4,5,6]])
# 占位符创建变量,第一个维度初始化为None,表示暂不指定维度
x2 = tf.placeholder(tf.float32,[None, 2,3])
print('x1.shape:',x1.shape)
print('x2.shape:',x2.shape)
print('x2.shape[1].value:',x2.shape[1].value)
print('tf.shape(x1):',tf.shape(x1))
print('tf.shape(x2):',tf.shape(x2))
print('x1.get_shape():',x1.get_shape())
print('x2.get_shape():',x2.get_shape())
print('x2.get_shape.as_list[1]:',x2.get_shape().as_list()[1])
shapeOP1 = tf.shape(x1)
shapeOP2 = tf.shape(x2)
with tf.Session() as sess:
 print('Within session, tf.shape(x1):',sess.run(shapeOP1))
 # 由于x2未进行完整的变量填充,其维度不完整,因此执行下面的命令将会报错
 # print('Within session, tf.shape(x2):',sess.run(shapeOP2)) # 此命令将会报错

输出结果为:

x1.shape: (2, 3)
x2.shape: (?, 2, 3)
x2.shape[1].value: 2
tf.shape(x1): Tensor("Shape:0", shape=(2,), dtype=int32)
tf.shape(x2): Tensor("Shape_1:0", shape=(3,), dtype=int32)
x1.get_shape(): (2, 3)
x2.get_shape(): (?, 2, 3)
x2.get_shape.as_list[1]: 2
Within session, tf.shape(x1): [2 3]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • TensorFlow变量管理详解

    一.TensorFlow变量管理 1. TensorFLow还提供了tf.get_variable函数来创建或者获取变量,tf.variable用于创建变量时,其功能和tf.Variable基本是等价的.tf.get_variable中的初始化方法(initializer)的参数和tf.Variable的初始化过程也类似,initializer函数和tf.Variable的初始化方法是一一对应的,详见下表. tf.get_variable和tf.Variable最大的区别就在于指定变量名称的参数

  • tensorflow: 查看 tensor详细数值方法

    问题 tensor详细数值 不能直接print打印: import tensorflow as tf x = tf.constant(1) print x 输出: Tensor("Const:0", shape=(), dtype=int32) 原因: print只能打印输出shape的信息,而要打印输出tensor的值,需要借助 tf.Session,tf.InteractiveSession. 因为我们在建立graph的时候,只建立 tensor 的 结构形状信息 ,并没有 执行

  • tensorflow创建变量以及根据名称查找变量

    环境:Ubuntu14.04,tensorflow=1.4(bazel源码安装),Anaconda python=3.6 声明变量主要有两种方法:tf.Variable和 tf.get_variable,二者的最大区别是: (1) tf.Variable是一个类,自带很多属性函数:而 tf.get_variable是一个函数; (2) tf.Variable只能生成独一无二的变量,即如果给出的name已经存在,则会自动修改生成新的变量name; (3) tf.get_variable可以用于生成

  • Tensorflow 查看变量的值方法

    定义一个变量,直接输出会输出变量的属性,并不能输出变量值.那么怎么输出变量值呢?请看下面得意 import tensorflow as tf biases=tf.Variable(tf.zeros([2,3]))#定义一个2x3的全0矩阵 sess=tf.InteractiveSession()#使用InteractiveSession函数 biases.initializer.run()#使用初始化器 initializer op 的 run() 方法初始化 'biases' print(se

  • tensorflow获取变量维度信息

    tensorflow版本1.4 获取变量维度是一个使用频繁的操作,在tensorflow中获取变量维度主要用到的操作有以下三种: Tensor.shape Tensor.get_shape() tf.shape(input,name=None,out_type=tf.int32) 对上面三种操作做一下简单分析:(这三种操作先记作A.B.C) A 和 B 基本一样,只不过前者是Tensor的属性变量,后者是Tensor的函数. A 和 B 均返回TensorShape类型,而 C 返回一个1D的o

  • tensorflow 获取变量&打印权值的实例讲解

    在使用tensorflow中,我们常常需要获取某个变量的值,比如:打印某一层的权重,通常我们可以直接利用变量的name属性来获取,但是当我们利用一些第三方的库来构造神经网络的layer时,存在一种情况:就是我们自己无法定义该层的变量,因为是自动进行定义的. 比如用tensorflow的slim库时: <span style="font-size:14px;">def resnet_stack(images, output_shape, hparams, scope=None

  • pytorch 获取tensor维度信息示例

    我就废话不多说了,直接上代码吧! >>> import torch >>> from torch.autograd import Variable >>> from torch import IntTensor >>> var = Variable(IntTensor([[1,0],[0,1]])) >>> var Variable containing: 1 0 0 1 [torch.IntTensor of si

  • tensorflow 获取checkpoint中的变量列表实例

    方式1:静态获取,通过直接解析checkpoint文件获取变量名及变量值 通过 reader = tf.train.NewCheckpointReader(model_path) 或者通过: from tensorflow.python import pywrap_tensorflow reader = pywrap_tensorflow.NewCheckpointReader(model_path) 代码: model_path = "./checkpoints/model.ckpt-7500

  • Tensorflow获取张量Tensor的具体维数实例

    获取Tensor的维数 >>> import tensorflow as tf >>> tf.__version__ '1.2.0-rc1' >>> x=tf.placeholder(dtype=float32,shape=[1,2,3,4]) >>> x=tf.placeholder(dtype=tf.float32,shape=[1,2,3,4]) >>> x.shape TensorShape([Dimensi

  • java反射之获取类的信息方法(推荐)

    本文接上文"老生常谈反射之Class类的使用(必看篇)",以编写一个用来获取类的信息(成员函数.成员变量.构造函数)的工具类来讲解"反射之获取类的信息" 1.获取成员函数信息 /** * 获取成员函数信息 * @param obj */ public static void printClassMethodMessage(Object obj){ //获取类的信息 获取类的类类型 Class c = obj.getClass(); //获取类的名称 System.o

  • 通过Python 获取Android设备信息的轻量级框架

    今天跟大家分享一下,如何通过Python实现一个轻量级的库来获取电脑上连接的Android设备信息,为什么说轻量呢因为整个库也就4KB,相比其他诸如Appetizer这样动辄就8MB多的库要轻很多,而且也基本满足项目中的需求. 这个库只有一个文件,通过封装Android的ADB命令实现,返回的是一个包含所有设备信息的标准json格式的列表方便解析,下面简单介绍一下: 检查环境变量 # 判断是否设置环境变量ANDROID_HOME if "ANDROID_HOME" in os.envi

  • tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式

    已经有了一个预训练的模型,我需要从其中取出某一层,把该层的weights和biases赋值到新的网络结构中,可以使用tensorflow中的pywrap_tensorflow(用来读取预训练模型的参数值)结合Session.assign()进行操作. 这种需求即预训练模型可能为单分支网络,当前网络为多分支,我需要把单分支A复用到到多个分支去(B,C,D). 先导入对应的工具包 from tensorflow.python import pywrap_tensorflow 接下来的操作在一个tf.

  • TensorFlow人工智能学习数据类型信息及转换

    目录 一.数据类型 二.数据类型信息 ①.device ②.numpy() ③.shape / .ndim 三.数据类型转换 ①tf.convert_to_tensor ②tf.cast() 一.数据类型 在tf中,数据类型有整型(默认是int32),浮点型(默认是float32),以及布尔型,字符串. 二.数据类型信息 ①.device 查看tensor在哪(CPU上面或者GPU上面),可以通过.cpu(),.gpu()进行转换,如果数据所在的处理器位置不一样,则不能进行计算. ②.numpy

随机推荐