吴裕雄--天生自然TensorFlow2教程:维度变换
图片视图
[b, 28, 28] # 保存b张图片,28行,28列(保存数据一般行优先),图片的数据没有被破坏
[b, 28*28] # 保存b张图片,不考虑图片的行和列,只保存图片的数据,不关注图片数据的细节
[b, 2, 14*28] # 保存b张图片,把图片分为上下两个部分,两个部分具体多少行是不清楚的
[b, 28, 28, 1] # 保存b张图片,28行,28列,1个通道
First Reshape(重塑视图) import tensorflow as tf
a = tf.random.normal([4, 28, 28, 3])
a.shape, a.ndim tf.reshape(a, [4, 784, 3]).shape # 给出一张图片某个通道的数据,丢失行、宽的信息 tf.reshape(a, [4, -1, 3]).shape # 4*(-1)*3 = 4*28*28*3 tf.reshape(a, [4, 784*3]).shape # 给出一张图片的所有数据,丢失行、宽和通道的信息 tf.reshape(a, [4, -1]).shape
Second Reshape(恢复视图) tf.reshape(tf.reshape(a, [4, -1]), [4, 28, 28, 3]).shape tf.reshape(tf.reshape(a, [4, -1]), [4, 14, 56, 3]).shape tf.reshape(tf.reshape(a, [4, -1]), [4, 1, 784, 3]).shape first reshape:
images: [4,28,28,3]
reshape to: [4,784,3] second reshape:
[4,784,3] height:28,width:28 [4,28,28,3] √
[4,784,3] height:14,width:56 [4,14,56,3] ×
[4,784,3] width:28,height:28 [4,28,28,3] ×
Transpose(转置) a = tf.random.normal((4, 3, 2, 1))
a.shape tf.transpose(a).shape tf.transpose(a, perm=[0, 1, 3, 2]).shape # 按照索引替换维度 a = tf.random.normal([4, 28, 28, 3]) # b,h,w,c
a.shape tf.transpose(a, [0, 2, 1, 3]).shape # b,2,h,c tf.transpose(a, [0, 3, 2, 1]).shape # b,c,w,h tf.transpose(a, [0, 3, 1, 2]).shape # b,c,h,w
Expand_dims(增加维度) a:[classes, students, classes]
add school dim(增加学校的维度):
[1, 4, 35, 8] + [1, 4, 35, 8] = [2, 4, 35, 8] a = tf.random.normal([4, 25, 8])
a.shape tf.expand_dims(a, axis=0).shape # 索引0前 tf.expand_dims(a, axis=3).shape # 索引3前 tf.expand_dims(a,axis=-1).shape # 索引-1后 tf.expand_dims(a,axis=-4).shape # 索引-4后,即左边空白处
Squeeze(挤压维度)
Only squeeze for shape = 1 dim(只删除维度为1的维度) [4, 35, 8, 1] = [4, 35, 8]
[1, 4, 35, 8] = [14, 35, 8]
[1, 4, 35, 1] = [4, 35, 8] tf.squeeze(tf.zeros([1,2,1,1,3])).shape a = tf.zeros([1,2,1,3])
a.shape
tf.squeeze(a,axis=0).shape
tf.squeeze(a,axis=2).shape
tf.squeeze(a,axis=-2).shape
tf.squeeze(a,axis=-4).shape
吴裕雄--天生自然TensorFlow2教程:维度变换的更多相关文章
- 吴裕雄--天生自然TensorFlow2教程:多输出感知机及其梯度
import tensorflow as tf x = tf.random.normal([2, 4]) w = tf.random.normal([4, 3]) b = tf.zeros([3]) ...
- 吴裕雄--天生自然TensorFlow2教程:合并与分割
import tensorflow as tf # 6个班级的学生分数情况 a = tf.ones([4, 35, 8]) b = tf.ones([2, 35, 8]) c = tf.concat( ...
- 吴裕雄--天生自然TensorFlow2教程:Broadcasting
Broadcasting可以理解成把维度分成大维度和小维度,小维度较为具体,大维度更加抽象.也就是小维度针对某个示例,然后让这个示例通用语大维度. import tensorflow as tf x ...
- 吴裕雄--天生自然TensorFlow2教程:Tensor数据类型
list: [1,1.2,'hello'] ,存储图片占用内存非常大 np.array,存成一个静态数组,但是numpy在深度学习之前就出现了,所以不适合深度学习 tf.Tensor,为了弥补nump ...
- 吴裕雄--天生自然TensorFlow2教程:手写数字问题实战
import tensorflow as tf from tensorflow import keras from keras import Sequential,datasets, layers, ...
- 吴裕雄--天生自然TensorFlow2教程:函数优化实战
import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D def himme ...
- 吴裕雄--天生自然TensorFlow2教程:反向传播算法
- 吴裕雄--天生自然TensorFlow2教程:链式法则
import tensorflow as tf x = tf.constant(1.) w1 = tf.constant(2.) b1 = tf.constant(1.) w2 = tf.consta ...
- 吴裕雄--天生自然TensorFlow2教程:单输出感知机及其梯度
import tensorflow as tf x = tf.random.normal([1, 3]) w = tf.ones([3, 1]) b = tf.ones([1]) y = tf.con ...
随机推荐
- 快速进阶Vue3.0
在2019.10.5日发布了Vue3.0预览版源码,但是预计最早需要等到 2020 年第一季度才有可能发布 3.0 正式版. 可以直接看 github源码. 新版Vue 3.0计划并已实现的主要架构改 ...
- thinkphp调用sqlserver储存过程返回多个结果集
首先安装扩展 windows 分为两个步骤 找到对应自己PHP版本的pdo扩展,下载解压出来,并且在php.ini里面启用扩展,需要注意的问题是php版本以及是否为安全版本 下载 ODBC Drive ...
- 一百零三、SAP中常量的定义CONSTANTS
一.代码如下 二.运行效果如下
- 【SQL必知必会笔记(1)】数据库基础、SQL、MySQL8.0.16下数据库、表的创建及数据插入
文章目录 1.数据库基础 1.1 数据库(database) 1.2 表(table) 1.3 列和数据类型 1.4 行 1.5 主键 2.什么是SQL 3.创建后续练习所需数据库.表(MySQL8. ...
- UVA - 1645 Count (统计有根树)(dp)
题意:输入n(n <=1000),统计有多少个n结点的有根树,使得每个深度中所有结点的子结点数相同.输出数目除以109+7的余数. 分析: 1.dp[i],i个结点的有根树个数 2.假设n=7, ...
- Egret Engine 2D - 矢量绘图
绘制矩形 drawRect 绘制矩形边 lineStyle( 10, 0x00ff00 清空绘图 clear 绘制园形 drawCircle 绘制直线 moveTo lineTo 绘制曲线 cur ...
- 洛谷 P2516 [HAOI2010]最长公共子序列
题目传送门 解题思路: 第一问要求最长公共子序列,直接套模板就好了. 第二问要求数量,ans[i][j]表示第一个字符串前i个字符,第二个字符串前j个字符的最长公共子序列的数量 如果f[i][j]是由 ...
- java课程之团队开发第一阶段评论
1.没有UI设计,整体的样式感觉不堪入目 2.功能方面实现的并不是很多,还需要继续努力 3.还需要添加一些常用的课表功能,比如说导入课表等
- GIT-Linux(CentOS7)系统安装Git
GIT-Linux(CentOS7)系统安装Git 未成功 查看是否已安装了Git 发现Git版本已存在,说明已安装了Git [root@localhost ~]# rpm -qa|grep git ...
- 201903-1 小中大 Java
思路: 中位数就是排序后中间的那个数.如果有偶数个数,就是中间两个数的平均值. 注意,这个平均值可能是整数,可能是小数,如果都是一样的处理,如果输出整数是3.0,而不是3,就有问题.所以需要分开处理. ...