对输入或输出而言:

一个张量的形状为a x b x c x d,实际写出这个张量时:

最外层括号[…]表示这个是一个张量,无别的意义!

次外层括号有a个,表示这个张量里有a个样本

再往内的括号有b个,表示每个样本的长

再往内的括号有c个,表示每个样本的宽

再往内没有括号,也就是最内层的括号里的数有d个,表示每个样本的深度为d

tf.nn.conv2d(), tf.reshape()等都是这样表示

给一个具体的张量,求这个张量的a,b,c,d值时,首先忽略最外层的括号,再数次外层括号个数(a),再往内(b),再往内(c),最后看最里层的括号内有几个数(d)(各数代表各深度层的值)。

如:

Tensor = tf.constant([[[[1],[2],[ 3]],[[4],[5],[6 ]],[[ 7],[8],[9]]]])  # 也可以不写逗号
# Tensor.shape = (1, 3, 3, 1)

形状为(1, 3, 3, 1)

(看着容易眼花,所以一般竖着写)

Tensor2 = tf.constant([[[[1],[2],[ 3]],[[4],[5],[6 ]],[[ 7],[8],[9]]], [[[1],[2],[ 3]],[[4],[5],[6 ]],[[ 7],[8],[9]]]])
# Tensor2.shape = (2, 3, 3, 1)

形状为(2, 3, 3, 1)  

类似的还有tf.ones(), tf.zeros()

注意!!!

对卷积核来说,a,b,c,d对应的括号形式虽然相同,但a,b,c,d代表的含义和输入不一样!!分别代表长,宽,深,个数!!所以书写时要注意括号的形式!!比如我要写一个长宽分别为2,2,深度为1,个数为1的kernel张量,则它的形状应为(2,2,1,1),而不是(1,2,2,1),用类似tf.random.normal的方法来初始化kernel或weights时也是(长,宽,深,个数)

比如:

filter = tf.constant([[[[1]],
[[2]]],
[[[ 3]],
[[4]]]])

我想可能是和矩阵的乘法(左矩阵和右矩阵的位置)有关

池化层的池化窗口大小ksize形状为[1, height, width, 1]

使用tensor.reshape(-1, a, b, c)时,-1代表不指定这一维的大小,因为张量里的元素个数是一定的,其他维的大小确定后,这一维的大小也随之确定,但不能在2各维度上使用-1(可以想象为解一元方程组,有一个未知数时方程有特解,有两个未知数时方程的解不定)

Tensorflow张量的形状表示方法的更多相关文章

  1. AI - TensorFlow - 张量(Tensor)

    张量(Tensor) 在Tensorflow中,变量统一称作张量(Tensor). 张量(Tensor)是任意维度的数组. 0阶张量:纯量或标量 (scalar), 也就是一个数值,例如,\'Howd ...

  2. TensorFlow模型保存和加载方法

    TensorFlow模型保存和加载方法 模型保存 import tensorflow as tf w1 = tf.Variable(tf.constant(2.0, shape=[1]), name= ...

  3. 连续张量理解和contiguous()方法使用,view和reshape的区别

    连续张量理解和contiguous()方法使用,view和reshape的区别 待办 内存共享: 下边的x内存布局是从0开始的,y内存布局,不是从0开始的张量 For example: when yo ...

  4. TensorFlow指定CPU和GPU方法

    TensorFlow指定CPU和GPU方法 TensorFlow 支持 CPU 和 GPU.它也支持分布式计算.可以在一个或多个计算机系统的多个设备上使用 TensorFlow. TensorFlow ...

  5. tensorflow 张量的阶、形状、数据类型及None在tensor中表示的意思。

    x = tf.placeholder(tf.float32, [None, 784]) x isn't a specific value. It's a placeholder, a value th ...

  6. tensorflow中的参数初始化方法

    1. 初始化为常量 tf中使用tf.constant_initializer(value)类生成一个初始值为常量value的tensor对象. constant_initializer类的构造函数定义 ...

  7. Tensorflow高效读取数据的方法

    最新上传的mcnn中有完整的数据读写示例,可以参考. 关于Tensorflow读取数据,官网给出了三种方法: 供给数据(Feeding): 在TensorFlow程序运行的每一步, 让Python代码 ...

  8. TensorFlow高效读取数据的方法——TFRecord的学习

    关于TensorFlow读取数据,官网给出了三种方法: 供给数据(Feeding):在TensorFlow程序运行的每一步,让python代码来供给数据. 从文件读取数据:在TensorFlow图的起 ...

  9. tensorflow张量排序

    本篇记录一下TensorFlow中张量的排序方法 tf.sort和tf.argsort # 声明tensor a是由1到5打乱顺序组成的 a = tf.random.shuffle(tf.range( ...

随机推荐

  1. Day14 集合(一)

    集合总体介绍 Java集合是java提供的工具包,包含了常用的数据结构:集合.链表.队列.栈.数组.映射等.Java集合工具包位置是java.util.*Java集合主要可以划分为4个部分:List列 ...

  2. python基础整理4——面向对象装饰器惰性器及高级模块

    面向对象编程 面向过程:根据业务逻辑从上到下写代码 面向对象:将数据与函数绑定到一起,进行封装,这样能够更快速的开发程序,减少了重复代码的重写过程 面向对象编程(Object Oriented Pro ...

  3. 我的linux shell 脚本头部

    #!/bin/bash #################################################### # version:1.01 # # link:http://www. ...

  4. 专家PID控制

    1.专家PID控制原理 PID专家控制的实质是,基于受控对象和控制规律的各种知识,无需知道被控对象的精确模型,利用专家经验来设计PID参数.专家PID控制是一种直接型专家控制器. 典型的二阶系统单位阶 ...

  5. PAT乙级1020

    1020 月饼 (25 分)   月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼.现给定所有种类月饼的库存量.总售价.以及市场的最大需求量,请你计算可以获得的最大收益是多少. ...

  6. sqoop工具介绍(hdfs与关系型数据库进行数据导入导出)

    数据表 第一类:数据库中的数据导入到HDFS上 #数据库驱动jar包用mysql-connector-java--bin,否则有可能报错! ./sqoop import --connect jdbc: ...

  7. Sublime Text2中的快捷键一览表(Sublime 键盘快捷键大全 )

    快捷键 功能 ctrl+shift+n 打开新Sublime ctrl+shift+w 关闭Sublime,关闭所有打开文件 ctrl+shift+t 重新打开最近关闭文件 ctrl+n 新建文件 c ...

  8. vue+vux-ui+axios+mock搭建一个简单vue框架

    1.首先感谢同事 2.之前一直在做angularjs的项目,目前vue火热,所以自己搭建了一个的vue框架,在此作为记录 vue+vux-ui这里就不介绍了,有很多博客都写的很详细了. 下面简单记录下 ...

  9. iOS开发用如何用类"SKStoreProductViewController"跳转AppStore点赞评分?

    大家都知道,评论和评分是决定app在appstore中排名的重要因素,但是大部分用户下载安装APP后却不会去点评,所以添加提示用户去点评的功能是很必要的. 目前,AppStore点赞评分有两种方法,一 ...

  10. 打开 CRM 时,出现错误:"Invalid Action – The selected action was not valid"

    今天当所有用户在打开CRM时,都出现了一个错误提示 “Invalid Action – The selected action was not valid”. 打开服务器的 event viewer查 ...