说明:np ----> numpy       tf ----> tensorflownp.stack(arraysaxis=0)

np.stack(arrays, axis=0) ---- 同样也适用于tf.stack()

numpy 和 tensorflow 都有 stack() 函数,该函数主要是用来提升维度。

在只提供数组(张量)和axis参数的前提下,  两者的使用方法和结果一样,原理一样,所以这里用numpy做演示。

假设要转变的张量数组arrays的长度为N,其中的每个张量数组的形状为(A, B, C)。

如果轴axis=0,则转变后的张量的形状为(N, A, B, C)。

如果轴axis=1,则转变后的张量的形状为(A, N, B, C)。

如果轴axis=2,则转变后的张量的形状为(A, B, N, C)。其它情况依次类推。

例如:

np.stack(arrays, axis=0)则表示arrays[0], arrays[1], arrays[2]进行堆叠,所以结果与原始数组一样。

np.stack(arrays, axis=1)则表示arrays[0][0], arrays[1][0]和arrays[2][0]进行堆叠,然后是arrays[0][1],arrays[1][1]与arrays[2][1]进行堆叠。

np.stack(arrays, axis=2)则表示arrays[0][0][0],arrays[1][0][0]和arrays[2][0][0]进行堆叠,然后是arrays[0][0][1],arrays[1][0][1]与arrays[2][0][1]进行堆叠,接着为arrays[0][0][2],arrays[1][0][2]与arrays[2][0][2]进行堆叠......

图例说明:

注:转化后的索引看上面蓝色和绿色的线。

到这里就是我全部的理解,如有错误,欢迎指出。

np.stack() 与 tf.stack() 的简单理解的更多相关文章

  1. tf.concat, tf.stack和tf.unstack的用法

    tf.concat, tf.stack和tf.unstack的用法 tf.concat相当于numpy中的np.concatenate函数,用于将两个张量在某一个维度(axis)合并起来,例如: a ...

  2. tf.unstack()、tf.stack()

    tf.unstack 原型: unstack( value, num=None, axis=0, name='unstack' ) 官方解释:https://tensorflow.google.cn/ ...

  3. tensorflow 基本函数(1.tf.split, 2.tf.concat,3.tf.squeeze, 4.tf.less_equal, 5.tf.where, 6.tf.gather, 7.tf.cast, 8.tf.expand_dims, 9.tf.argmax, 10.tf.reshape, 11.tf.stack, 12tf.less, 13.tf.boolean_mask

    1.  tf.split(3, group, input)  # 拆分函数    3 表示的是在第三个维度上, group表示拆分的次数, input 表示输入的值 import tensorflow ...

  4. tf.stack和tf.unstack

    import tensorflow as tf a = tf.constant([1,2,3]) b = tf.constant([4,5,6]) c1 = tf.stack([a,b],axis=0 ...

  5. tf.stack( )和tf.unstack( )

    相同点:他们都增加了矩阵的维度,而split()不改变维度! tf.stack()这是一个矩阵拼接的函数,tf.unstack()则是一个矩阵分解的函数 c是拼接,而d和e则是不同维度的分解

  6. 简单理解Struts2中拦截器与过滤器的区别及执行顺序

    简单理解Struts2中拦截器与过滤器的区别及执行顺序 当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标 ...

  7. 使用C++11实现无锁stack(lock-free stack)

    前几篇文章,我们讨论了如何使用mutex保护数据及使用使用condition variable在多线程中进行同步.然而,使用mutex将会导致一下问题: 等待互斥锁会消耗宝贵的时间 — 有时候是很多时 ...

  8. 并发编程(三): 使用C++11实现无锁stack(lock-free stack)

    前几篇文章,我们讨论了如何使用mutex保护数据及使用使用condition variable在多线程中进行同步.然而,使用mutex将会导致一下问题: 等待互斥锁会消耗宝贵的时间 - 有时候是很多时 ...

  9. 并发编程入门(三): 使用C++11实现无锁stack(lock-free stack)

    前几篇文章,我们讨论了如何使用mutex保护数据及使用使用condition variable在多线程中进行同步.然而,使用mutex将会导致一下问题: 等待互斥锁会消耗宝贵的时间 - 有时候是很多时 ...

随机推荐

  1. makefile 中的符号替换($@、$^、$<、$?)

    Makefile  $@, $^, $< $@  表示目标文件$^  表示所有的依赖文件$<  表示第一个依赖文件$?  表示比目标还要新的依赖文件列表 如一个目录下有如下文件: $ ls ...

  2. UVa 1149 装箱

    https://vjudge.net/problem/UVA-1149 题意:给定N个物品的重量和背包的容量,同时要求每个背包最多装两个物品.求至少需要的背包数. 思路:很简单的贪心.每次将最轻的和最 ...

  3. python删除所有自定义变量方法--转载

    http://blog.sina.com.cn/s/blog_b2f983a50102yexs.html   当我们在pythonwin中创建多个变量后,通过dir()函数,可以看到所有已创建变量,这 ...

  4. os.environ() 说明

    我们想要用Python获得一些有关系统的各种信息的时候就不得不想到os的environ,那这里面都具体包含了那些内容呢? 一.简介 对于官方的解释,environ是一个字符串所对应环境的映像对象.这是 ...

  5. go变量赋初值

    package main import "fmt" func variableinitial(){ , var s string="abc" fmt.Print ...

  6. highcharts PHP中使用

    官网 https://www.hcharts.cn/demo/highcharts html <div id="container" style="min-widt ...

  7. Map<K, V> 中k,v如果为null就转换

    Set<String> set = map.keySet(); if(set != null && !set.isEmpty()) { for(String key : s ...

  8. centos7: vsftpd安装及启动: ftp配置(以虚拟用户为例)

    centos7: vsftpd安装及启动: ftp配置 1安装: yum -y install vsftpd /bin/systemctl start vsftpd.service #启动 /bin/ ...

  9. Android发展历程

    Android历代版本的命名: 我们都是知道,安卓系统的历来的名称都是很有意思的,下面无限互联Android培训的老师归纳了一下:Android在正式发行之前,最开始拥有两个内部测试版本,并且以著名的 ...

  10. python-day45--mysql索引

    一 .介绍 为何要有索引? 一些复杂的查询操作,对查询语句的优化显然是重中之重.说起加速查询,就不得不提到索引了. 什么是索引? 索引在MySQL中也叫做“键”,是存储引擎用于快速找到记录的一种数据结 ...