读《三体》有感——关于对于矩阵操作维度的企业级理解
抽象总结如下:
当我们指定按某个维度进行操作时,此时该维度便是唯一维,该维度内的任何元素不要进行低维展开!每个元素都看作一个不可分割的个体,操作便是在该维度上对这些元素进行的,而这些元素接受这些操作的形式则是基于其同质性,进行对位操作!
举例如下:
import tensorflow as tf
import numpy as np
matrix1 = [[1.,2.,3.], #二维,元素为列表
[4.,5.,6.]]
# [2 3] 0 1 2
matrix2 = [[[1.,2.],
[3.,4.]], #三维,元素为矩阵
[[5.,6.],
[7.,8.]]]
# [2 2 2]
res_2 = tf.reduce_mean(matrix1)
res_3 = tf.reduce_mean(matrix2)
res1_2 = tf.reduce_mean(matrix1,axis=[0])
res1_3 = tf.reduce_mean(matrix2,axis=[0])
res2_2 = tf.reduce_mean(matrix1,axis=[1])
res2_3 = tf.reduce_mean(matrix2,axis=[2])
sess = tf.Session()
print("reduction_indices=None:res_2={},res_3={}".format(sess.run(res_2),sess.run(res_3)))
print("reduction_indices=[0]:res1_2={},res1_3={}".format(sess.run(res1_2),sess.run(res1_3)))
print("reduction_indices=[1]:res2_2={},res2_3={}".format(sess.run(res2_2),sess.run(res2_3)))
输出:
reduction_indices=None:res_2=3.5,res_3=4.5
reduction_indices=[0]:res1_2=[2.5 3.5 4.5],res1_3=[[3. 4.]
[5. 6.]]
reduction_indices=[1]:res2_2=[2. 5.],res2_3=[[1.5 3.5]
[5.5 7.5]]