AI基础 矩阵乘法 一维数组在前后的区别

97 阅读1分钟

一、一维数组在乘号后面时

A=[[1,2],[3,4]] *[5,6],v会被转换(视为)列向量

       矩阵 A (2×2)        向量 v (2,)
      ┌───────────┐        ┌───┐
      │ 1    2    │        │ 5 │
      │ 3    4    │        │ 6 │
      └───────────┘        └───┘
            │                  │
            └────────┬─────────┘
                     │
                     ▼
       自动扩展为列向量 v (2×1)
               ┌───┐
               │ 5 │
               │ 6 │
               └───┘
                     
          ┌───────────┐
          │ 1    2    │   ×   ┌───┐   =   ┌───────────────┐
          │ 3    4    │       │ 5 │       │ 1×5 + 2×6 = 17 │
          └───────────┘       │ 6 │       │ 3×5 + 4×6 = 39 │
                              └───┘       └───────────────┘

二、一维数组在乘号前面时,v会转为行向量,如下图所示

       向量 v (2,)          矩阵 A (2×2)
      ┌───┐               ┌───────────┐
      │ 5 │               │ 1    2    │
      │ 6 │               │ 3    4    │
      └───┘               └───────────┘
            │                  │
            └────────┬─────────┘
                     │
                     ▼
       自动扩展为行向量 v (1×2)
               ┌───────┐
               │ 5   6 │
               └───────┘
                     
          ┌───────┐   ┌───────────┐   ┌───────────────────────┐
          │ 5   6 │ × │ 1    2    │ = │ 5×1 + 6×3    5×2 + 6×4 │
          └───────┘   │ 3    4    │   │ = 23        = 34      │
                      └───────────┘   └───────────────────────┘

三. 维度变化图解

1、当向量在后 (A @ v):

  矩阵 A (m×n)     向量 v (n,)
      □ □ □          ●          自动扩展
      □ □ □          ●      →     ●
      □ □ □          ●            ●
      m×n            n            n×1
      
     ↓ 点积运算 ↓
     
       结果向量 (m,)
          ●
          ●
          ●
          m

2、当向量在前 (v @ A):

  向量 v (n,)       矩阵 A (n×p)
      ● ● ●          □ □ □       自动扩展
                    □ □ □    →   ■■■■■   (1×n)
                    □ □ □
                     n×p
                     
     ↓ 点积运算 ↓
     
       结果向量 (p,)
          ■■■
           p