Tensorflow矩阵运算实例(矩阵相乘,点乘,行/列累加)

  

Tensorflow二维、三维、四维矩阵运算(矩阵相乘,点乘,行/列累加)

  

<强> 1。矩阵相乘  Tensorflow矩阵运算实例(矩阵相乘,点乘,行/列累加)

  

根据矩阵相乘的匹配原则,左乘矩阵的列数要等于右乘矩阵的行数。

  

在多维(三维、四维)矩阵的相乘中,需要最后两维满足匹配原则。

  

可以将多维矩阵理解成:(矩阵排列,矩阵),即后两维为矩阵,前面的维度为矩阵的排列。

  

比如对于(2,2,4)来说,视为2个(2、4)矩阵。

  

对于(2,2,2,4)来说,视为2 * 2个(2、4)矩阵。

        进口tensorflow特遣部队      a_2d=特遣部队。常数([1]* 6、形状=[2、3])   b_2d=特遣部队。常数([2]* 12,形状=[3,4])   c_2d=特遣部队。matmul (a_2d b_2d)   a_3d=特遣部队。常数([1]* 12,形状=[2,2,3])   b_3d=特遣部队。常数([2]* 24、形状=(2、3、4))   c_3d=特遣部队。matmul (a_3d b_3d)   a_4d=特遣部队。常数([1]* 24、形状=[2,2,2,3])   b_4d=特遣部队。常数([2]* 48、形状=(2,2,3,4))   c_4d=特遣部队。matmul (a_4d b_4d)      与tf.Session税():   .run tf.global_variables_initializer () ()   打印(" # {}* {}={}\ n {}”。   格式(a_2d.eval ()。形状,b_2d.eval ()。形状,c_2d.eval ()。形状,c_2d.eval ()))   打印(" # {}* {}={}\ n {}”。   格式(a_3d.eval ()。形状,b_3d.eval ()。形状,c_3d.eval ()。形状,c_3d.eval ()))   打印(" # {}* {}={}\ n {}”。   格式(a_4d.eval ()。形状,b_4d.eval ()。形状,c_4d.eval ()。形状,c_4d.eval ()))      

 Tensorflow矩阵运算实例(矩阵相乘,点乘,行/列累加)

  

<强> 2。点乘  Tensorflow矩阵运算实例(矩阵相乘,点乘,行/列累加)

  

点乘指的是形状相同的两个矩阵,对应位置元素相乘,得到一个新的形状相同的矩阵。

        a_2d=特遣部队。常数([1]* 6、形状=[2、3])   b_2d=特遣部队。常数([2]* 6、形状=[2、3])   c_2d=特遣部队。乘(a_2d b_2d)   a_3d=特遣部队。常数([1]* 12,形状=[2,2,3])   b_3d=特遣部队。常数([2]* 12,形状=[2,2,3])   c_3d=特遣部队。乘(a_3d b_3d)   a_4d=特遣部队。常数([1]* 24、形状=[2,2,2,3])   b_4d=特遣部队。常数([2]* 24、形状=[2,2,2,3])   c_4d=特遣部队。乘(a_4d b_4d)   与tf.Session税():   .run tf.global_variables_initializer () ()   打印(" # {}* {}={}\ n {}”。   格式(a_2d.eval ()。形状,b_2d.eval ()。形状,c_2d.eval ()。形状,c_2d.eval ()))   打印(" # {}* {}={}\ n {}”。   格式(a_3d.eval ()。形状,b_3d.eval ()。形状,c_3d.eval ()。形状,c_3d.eval ()))   打印(" # {}* {}={}\ n {}”。   格式(a_4d.eval ()。形状,b_4d.eval ()。形状,c_4d.eval ()。形状,c_4d.eval ()))      

 Tensorflow矩阵运算实例(矩阵相乘,点乘,行/列累加)

  

另外,点乘的其中一方可以是一个常数,也可以是一个和矩阵行向量等长(即列数)的向量。

  

 Tensorflow矩阵运算实例(矩阵相乘,点乘,行/列累加)

  

因为在点乘过程中,会自动将常数或者向量进行扩维。

        a_2d=特遣部队。常数([1]* 6、形状=[2、3])   k=tf.constant (2)   l=特遣部队。常数([2、3、4)   b_2d_1=特遣部队。乘(k, a_2d) #特遣部队。乘(a_2d k)也是好的   b_2d_2=特遣部队。乘(l, a_2d) #特遣部队。乘(a_2d l)也是好的   a_3d=特遣部队。常数([1]* 12,形状=[2,2,3])   b_3d_1=特遣部队。乘(k, a_3d) #特遣部队。乘(a_3d k)也是好的   b_3d_2=特遣部队。乘(l, a_3d) #特遣部队。乘(a_3d l)也是好的   a_4d=特遣部队。常数([1]* 24、形状=[2,2,2,3])   b_4d_1=特遣部队。乘(k, a_4d) #特遣部队。乘(a_4d k)也是好的   b_4d_2=特遣部队。乘(l, a_4d) #特遣部队。乘(a_4d l)也是好的      与tf.Session税():   .run tf.global_variables_initializer () ()   打印(" # {}* {}={}\ n {}”。   格式(k.eval ()。形状,a_2d.eval ()。形状,b_2d_1.eval ()。形状,b_2d_1.eval ()))   打印(" # {}* {}={}\ n {}”。   格式(l.eval ()。形状,a_2d.eval ()。形状,b_2d_2.eval ()。形状,b_2d_2.eval ()))   打印(" # {}* {}={}\ n {}”。   格式(k.eval ()。形状,a_3d.eval ()。形状,b_3d_1.eval ()。形状,b_3d_1.eval ()))   打印(" # {}* {}={}\ n {}”。   格式(l.eval ()。形状,a_3d.eval ()。形状,b_3d_2.eval ()。形状,b_3d_2.eval ()))   打印(" # {}* {}={}\ n {}”。   格式(k.eval ()。形状,a_4d.eval ()。形状,b_4d_1.eval ()。形状,b_4d_1.eval ()))   打印(" # {}* {}={}\ n {}”。   格式(l.eval ()。形状,a_4d.eval ()。形状,b_4d_2.eval ()。形状,b_4d_2.eval ()))

Tensorflow矩阵运算实例(矩阵相乘,点乘,行/列累加)