图片视图
[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教程:维度变换的更多相关文章

  1. 吴裕雄--天生自然TensorFlow2教程:多输出感知机及其梯度

    import tensorflow as tf x = tf.random.normal([2, 4]) w = tf.random.normal([4, 3]) b = tf.zeros([3]) ...

  2. 吴裕雄--天生自然TensorFlow2教程:合并与分割

    import tensorflow as tf # 6个班级的学生分数情况 a = tf.ones([4, 35, 8]) b = tf.ones([2, 35, 8]) c = tf.concat( ...

  3. 吴裕雄--天生自然TensorFlow2教程:Broadcasting

    Broadcasting可以理解成把维度分成大维度和小维度,小维度较为具体,大维度更加抽象.也就是小维度针对某个示例,然后让这个示例通用语大维度. import tensorflow as tf x ...

  4. 吴裕雄--天生自然TensorFlow2教程:Tensor数据类型

    list: [1,1.2,'hello'] ,存储图片占用内存非常大 np.array,存成一个静态数组,但是numpy在深度学习之前就出现了,所以不适合深度学习 tf.Tensor,为了弥补nump ...

  5. 吴裕雄--天生自然TensorFlow2教程:手写数字问题实战

    import tensorflow as tf from tensorflow import keras from keras import Sequential,datasets, layers, ...

  6. 吴裕雄--天生自然TensorFlow2教程:函数优化实战

    import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D def himme ...

  7. 吴裕雄--天生自然TensorFlow2教程:反向传播算法

  8. 吴裕雄--天生自然TensorFlow2教程:链式法则

    import tensorflow as tf x = tf.constant(1.) w1 = tf.constant(2.) b1 = tf.constant(1.) w2 = tf.consta ...

  9. 吴裕雄--天生自然TensorFlow2教程:单输出感知机及其梯度

    import tensorflow as tf x = tf.random.normal([1, 3]) w = tf.ones([3, 1]) b = tf.ones([1]) y = tf.con ...

随机推荐

  1. Spring-IOC(基于XML配置)

    什么是IOC? IOC: Inversion of Control(控制反转). 控制反转:将对象的创建权反转给(交给)Spring. 在使用Spring框架之后,对象的实例不再由调用者来创建,而 是 ...

  2. 打包APK出现org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:lintVitalRelease'.

    AndroidS Studio打包APK时出现问题:org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':a ...

  3. Bulma CSS框架教程

    Bulma是一个轻量级的现代CSS框架,基于flex,跟bootstrap不一样纯CSS没有JS,与vuejs.reactjs这样JavaScript框架可以很好地集成. 为降低学习难度,让初学者可以 ...

  4. C#如何编写短信接口,以及接口的调用,包括C#.net访问web,并处理返回值的简例。

    在系统的开发中我们经常会用到接口,下面给大家介绍一种短信接口的编写与调用. 我们常调用接口来完成一些信息的通知或者发送验证码,那么这些操作是如何完成的呢?来看一下详细的介绍吧! 首先呢,我们需要有一个 ...

  5. linux命令之strace简单使用

    strace是什么 strace是一个可用于诊断.调试和教学的Linux用户空间跟踪器.我们用它来监控用户空间进程和内核的交互,比如系统调用.信号传递.进程状态变更等. 使用方式 strace 使用帮 ...

  6. POJ 2443:Set Operation 经典位运算好题

    Set Operation Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 2965   Accepted: 1196 Des ...

  7. Eclipse反编译插件jad的安装

    Eclipse反编译插件jad的安装 JadClipse是Jad的Eclipse插件,是一款非常实用而且方便的Java反编译插件.时间久了,可能忘记在哪里进行配置了,因此记录下以备后续使用(若需要). ...

  8. 仿flash的文字动画效果

    .tips{ font-size: 24px; font-family: sans-serif; font-weight: 600; text-shadow: 1px 1px #ffb700; col ...

  9. Redis: Reducing Memory Usage

    High Level Tips for Redis Most of Stream-Framework's users start out with Redis and eventually move ...

  10. 抓DHCP客户端ip脚本

    cat testnew.sh #!/bin/bash catch_ip (){Ip=`sudo nmap -sP 192.168.1.0/24 |grep -i -B2 $mac|grep Nmap ...