Tensorflow张量的形状表示方法
对输入或输出而言:
一个张量的形状为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张量的形状表示方法的更多相关文章
- AI - TensorFlow - 张量(Tensor)
张量(Tensor) 在Tensorflow中,变量统一称作张量(Tensor). 张量(Tensor)是任意维度的数组. 0阶张量:纯量或标量 (scalar), 也就是一个数值,例如,\'Howd ...
- TensorFlow模型保存和加载方法
TensorFlow模型保存和加载方法 模型保存 import tensorflow as tf w1 = tf.Variable(tf.constant(2.0, shape=[1]), name= ...
- 连续张量理解和contiguous()方法使用,view和reshape的区别
连续张量理解和contiguous()方法使用,view和reshape的区别 待办 内存共享: 下边的x内存布局是从0开始的,y内存布局,不是从0开始的张量 For example: when yo ...
- TensorFlow指定CPU和GPU方法
TensorFlow指定CPU和GPU方法 TensorFlow 支持 CPU 和 GPU.它也支持分布式计算.可以在一个或多个计算机系统的多个设备上使用 TensorFlow. TensorFlow ...
- tensorflow 张量的阶、形状、数据类型及None在tensor中表示的意思。
x = tf.placeholder(tf.float32, [None, 784]) x isn't a specific value. It's a placeholder, a value th ...
- tensorflow中的参数初始化方法
1. 初始化为常量 tf中使用tf.constant_initializer(value)类生成一个初始值为常量value的tensor对象. constant_initializer类的构造函数定义 ...
- Tensorflow高效读取数据的方法
最新上传的mcnn中有完整的数据读写示例,可以参考. 关于Tensorflow读取数据,官网给出了三种方法: 供给数据(Feeding): 在TensorFlow程序运行的每一步, 让Python代码 ...
- TensorFlow高效读取数据的方法——TFRecord的学习
关于TensorFlow读取数据,官网给出了三种方法: 供给数据(Feeding):在TensorFlow程序运行的每一步,让python代码来供给数据. 从文件读取数据:在TensorFlow图的起 ...
- tensorflow张量排序
本篇记录一下TensorFlow中张量的排序方法 tf.sort和tf.argsort # 声明tensor a是由1到5打乱顺序组成的 a = tf.random.shuffle(tf.range( ...
随机推荐
- c语言学习——安装
作为颜控,选择了vs2019 工作组件选择c++,vs扩展开发. 默认安装就行了 安装成功,附图
- C# winform webbrowser如何指定内核为IE11?
1)假设你应用程序的名字为MyApplication.exe 2)运行Regedit,打开注册表,找到 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsof ...
- base大家族详解
base大家族详解 */--> pre.src {background-color: #292b2e; color: #b2b2b2;} pre.src {background-color: # ...
- [luogu2680] 运输计划
题面 很明显, 由于是求最长路的最小值, 我们可以使用二分求解. 我们二分一个长度\(mid\), 将所有使得\(dis(u, v)\)大于\(mid\)的点对\((u, v)\)找出, 设总共有 ...
- 基于Verilog的偶数、奇数、半整数分频以及任意分频器设计
在FPGA的学习过程中,最简单最基本的实验应该就是分频器了.由于FPGA的晶振频率都是固定值,只能产生固定频率的时序信号,但是实际工程中我们需要各种各样不同频率的信号,这时候就需要对晶振产生的频率进行 ...
- USB耳机声卡-音频输入/输出控制器:DP108替代兼容CM108
DP108是一款完全替代CM108的高度集成的单芯片USB音频解决方案芯片.方便的USB即插即用的兼容性,用户可以快速创建易用性,高质量和便携式USB音频产品基于高度集成的单芯片解决方案.所有重要的模 ...
- IE8 下处理select标签高度不居中
IE8: Chrome: 同样的代码可是在IE8下select的文字并不是垂直居中. 处理:给select的样式添加padding上下的内边距. 加line-height一点用都 ...
- C#只能lock 引用类型的值 (转载)
Lock: C#只能lock 引用类型的值,如果lock一个int, bool,编译器会报错. 当一个互斥锁已被占用时,在同一线程中执行的代码仍可以获取和释放该锁.但是,在其他线程 ...
- 快速开发平台分享-UCML快速开发七种武器
传统的快速开发平台强调的是组件重用.构件重用,主要解决功能重用层面,一般提供了软件开发最常用的功能:表单设计.BPM(业务流程管理).报表.组织机构及权限等功能.但只有功能重用,没有过程重用,要么只能 ...
- OO——求导作业总结
目录 OO--求导作业总结 程序结构的分析 第一次作业 第二次作业 第三次作业 对多项式合法性判断的讨论 程序bug的分析 未通过的互测bug bug的位置与程序结构的关系 继承和接口的使用 互测 手 ...