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. UWP appButtonBar样式

    UWP 的appButtonBar使用<AppBarButton Icon = "Next" Label = "Next" /> Icon是 Sym ...

  2. C基本类型

    C基本类型有: char:8位,可添加修改符signed或是unsigned short:16位,同有singed和unsigned int:32位,同有singed和unsigned long:在3 ...

  3. js面向对象知识点之对象属性 创建对象 总结中

    昨天面试出了一道面试题 本人我做错了 于是痛定思痛 再过一遍面向对象 var name="一体机"; var value="infolist"; //构造函数 ...

  4. 自学ConcuurentHashMap源码

    自学ConcuurentHashMap源码 参考:https://my.oschina.net/hosee/blog/675884 http://www.cnblogs.com/ITtangtang/ ...

  5. idea 创建多模块依赖Maven项目

    本来网上的教程还算多,但是本着自己有的才是自己的原则,还是自己写一份的好,虽然可能自己也不会真的用得着. 1. 创建一个新maven项目 2. 3. 输入groupid和artifactid,后面步骤 ...

  6. SIP简介,第1部分:SIP初探

    说明:以下内容来着之前下载的一份文档,现将概念部分摘录在BLog,完成文档将放在文件中. SIP简介,第1部分:SIP初探 时间:2006-04-07作者:Emmanuel Proulx浏览次数: 2 ...

  7. 深度学习系列 Part (1)

    传统机器学习的回顾 近年来,深度学习的概念十分火热,人工智能也由于这一技术的兴起,在近几年吸引了越来越多的关注.我们这里,将结合一些基本的用例,简要的介绍一下这一新的技术. 我们首先需要明确人工智能. ...

  8. Problem L

    Problem Description 在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数. 例如n=3时,为2× 3方格,骨牌的铺放方案有三种,如下图: L&qu ...

  9. 解决Android下元素滑动问题

    移动端左右.上下滑动: 当页面中既需要页面滑动操作,又需要上下或左右滑动页面上的某个元素时,直接使用zepto中提供的swipe事件是不能直接达到目的的,原因如下: (1)在Android低端机上to ...

  10. Python学习中的一些小例子

    这篇文章包括用Python编写的斐波那契数列,三位数的水仙花数和百钱买百鸡的基础代码 斐波那契数列: ''' def hanshu(n): n_1 = 1 n_2 = 1 m = n sumn = 0 ...