Python中的list/tuple,numpy中的ndarrray与tensorflow中的tensor。

用python中list/tuple理解,仅仅是从内存角度理解一个序列数据,而非数学中标量,向量和张量。

从python内存角度理解,就是一个数值,长度为1,并且不是一个序列;

从numpy与tensorflow数学角度理解,就是一个标量,shape为(),其轴为0;

[1,2,3,4,5,6]

从python内存角度理解,就是1*6或者长度为6的一个序列;

从numpy与tensorflow数学角度理解,就是一维向量,并且是列向量,shape为(6,),其轴为1;注:一维向量,列向量,其轴为1,轴下标为0,表示第一个轴;

[[1,2,3], [4,5,6]]

从python内存角度理解,就是一个二维数组2*3,2列3行;注意:不管python还是numpy/tensorflow都是列在前,即一个向量默认为列向量;

从numpy/tensorflow数学角度理解,就是一个二维张量,shape为(2,3),其轴为2;注:二维向量,第一个轴为列,下标为0,第二个轴为行,下标为1;

例子:

  import os, sys

  import numpy

  import tensorflow as tf

  a = [[1,2,3],[4,5,6]]

  b = tf.Variable(a, dtype=tf.float32)

  init = tf.global_variables_initializer()

  sess = tf.Session()

  sess.run(init)

  d1 = tf.reduce_mean(b)

  d2 = tf.reduce_mean(b, 0)

  d3 = tf.reduce_mean(b, 1)

  sess.run([b, b[0,:], b[:, 0]])

# [array([[ 1.,  2.,  3.],

#         [ 4.,  5.,  6.]], dtype=float32),

#  array([ 1.,  2.,  3.], dtype=float32),

#  array([ 1.,  4.], dtype=float32)]

  sess.run([d1, d2, d3])

# [3.5,

#  array([ 2.5,  3.5,  4.5], dtype=float32),

#  array([ 2.,  5.], dtype=float32)]

 
注:
[b, b[i,:], b[:, i]]
b[i,:]: 表示b矩阵第一个轴(列),第i列对应所有元素;
b[:,i]: 表示b矩阵第二个轴(行),第i行对应所有元素;
d1=tf.reduce_mean(b): 表示对矩阵所有元素进行均值;
d2=tf.reduce_mean(b, 0):表示对矩阵进行第一个轴(列)方向上的投影,即每一行上的均值;
d3=tf.reduce_mean(b, 1):表示对矩阵进行第二个轴(行)方向上的投影,即每一列的均值;
查看这个网址:http://www.cnblogs.com/silence-tommy/p/6554986.html
这个网址上说的有问题:
tf.reduce_mean(x) ==> 2.5 #如果不指定第二个参数,那么就在所有的元素中取平均值
tf.reduce_mean(x, 0) ==> [2.,  3.] #指定第二个参数为0,则第一维的元素取平均值,即每一列求平均值
tf.reduce_mean(x, 1) ==> [1.5,  3.5] #指定第二个参数为1,则第二维的元素取平均值,即每一行求平均值

这两句下划线的标注,是错误的。显然没有理解对于矩阵轴的概念;

(不好意思,这个网址博主,仅仅是看到了,所以仅仅从开发角度分析了下,并非故意,敬请谅解!)

python/numpy/tensorflow中,对矩阵行列操作,下标是怎么回事儿?的更多相关文章

  1. Python numpy tensorflow 中的 点乘 和 矩阵乘法

    1)点乘(即“ * ”) ---- 各个矩阵对应元素做乘法  若 w 为 m*1 的矩阵,x 为 m*n 的矩阵,那么通过点乘结果就会得到一个 m*n 的矩阵. 若 w 为 m*n 的矩阵,x 为 m ...

  2. tensorflow中一个矩阵和一个向量相加

    import tensorflow as tf x=tf.constant([[1,2],[3,4]]) y=tf.constant([[1],[1]])#列向量 z=tf.constant([1,1 ...

  3. python numpy初始化一个图像矩阵

    mask_all = np.zeros((256, 256), dtype='uint8')  单通道 mask_all_enlarge = np.zeros((256, 256, 3), dtype ...

  4. python numpy 数组中元素大于等于0的元素

    >>> import numpy as np >>> a = np.random.randint(-5, 5, (5, 5)) >>> a arr ...

  5. python numpy数组中的复制问题

    vector = numpy.array([5, 10, 15, 20]) equal_to_ten_or_five = (vector == 10) | (vector == 5) vector[e ...

  6. Octave中的矩阵常用操作2

    sum(a):矩阵里的数据求和prod(a):乘积floor(a):向上取整ceil(a):向下取整max(A,[],1):取每一列的最大值max(A,[],2):取每一行的最大值max(max(A) ...

  7. Python查找列表中某个元素返回所有下标

    需求 找出list中某一元素并返回所有匹配index值 问题 使用index()只能返回一个下标 >>> cw=[0,1,2,1,1,0,1,0,0,1] >>> ...

  8. Tensorflow中的padding操作

    转载请注明出处:http://www.cnblogs.com/willnote/p/6746668.html 图示说明 用一个3x3的网格在一个28x28的图像上做切片并移动 移动到边缘上的时候,如果 ...

  9. 第十四节,TensorFlow中的反卷积,反池化操作以及gradients的使用

    反卷积是指,通过测量输出和已知输入重构未知输入的过程.在神经网络中,反卷积过程并不具备学习的能力,仅仅是用于可视化一个已经训练好的卷积神经网络,没有学习训练的过程.反卷积有着许多特别的应用,一般可以用 ...

随机推荐

  1. win10 uwp 打包第三方字体到应用

    有时候我们会把一些特殊字体打包到软件,因为如果找不到我们的字体会变为默认,现在很多字体图标我们用得好,有时候我们的应用会用很漂亮的字体,需要我们自己打包,因为用户一般是没有字体. UWP使用第三方字体 ...

  2. 使用Hexo+Github一步步搭建属于自己的博客(基础)

    前言:电脑系统为window 10专业版,64位 相关步骤: 1.安装Node.js和配置好Node.js环境,打开cmd命令行,成功界面如下 2.安装Git和配置好Git环境,安装成功的象征就是在电 ...

  3. Java基础-Random类(05)

    随机数(Random) 作用:用于产生一个随机数 使用步骤(和Scanner类似) 导包import java.util.Random; 创建对象Random r = new Random(); 获取 ...

  4. C++const使用(06)

    可以在类中使用const关键字定义数据成员和成员函数或修饰一个对象.一个const对象只能访问const成员函数,否则将产生编译错误. 常量成员 常量成员包括常量数据成员.静态常数据成员和常引用.静态 ...

  5. LeetCode 245. Shortest Word Distance III (最短单词距离之三) $

    This is a follow up of Shortest Word Distance. The only difference is now word1 could be the same as ...

  6. CMake vs Make对比

    程序员现在已经使用了CMake和Make了很久.当您加入大公司或开始使用大型代码库开发项目时,您需要处理所有这些构建.你必须看到这些“CMakeLists.txt”文件浮动.你应该在终端上运行“cma ...

  7. R-kmeans聚类算法

    K-means也是聚类算法中最简单的一种了,但是里面包含的思想却是不一般.最早我使用并实现这个算法是在学习韩爷爷那本数据挖掘的书中,那本书比较注重应用.看了Andrew Ng的这个讲义后才有些明白K- ...

  8. Ellipse

    Description There is an beautiful ellipse whose curve equation is: b > 0)" src="http:// ...

  9. shell编程下 特殊变量、test / [ ]判断、循环、脚本排错

    第1章 shell中的特殊变量 1.1 $# $# 表示参数的个数 1.1.1 [示例]脚本内容 [root@znix ~]# cat /server/scripts/show2.sh #!/bin/ ...

  10. CUDA C Best Practices Guide 在线教程学习笔记 Part 2

    10. 执行配置优化 ● 一个 SM中,占用率 = 活动线程束的数量 / 最大可能活动线程束的数量.后者保存在设备属性的  maxThreadsPerMultiProcessor  分量中(GTX10 ...