<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      矩陣的計算和應用

      在前面關于機器學習中的數學表示一文中提到了矩陣,實際上它是計算機領域非常重要的一種數據結構,但除了CV類(計算機視覺)開發,我們在許多軟件開發場景中卻很少用到它,以至于開始慶幸:

      "反正在以前線性代數也沒怎么學好,作用也不大嘛..."
      
      "按說,這種觀點是要受批評的。"
      

      實際上關于矩陣的計算到處都是,只是你鮮少留意罷了?;蛘哒f,當你在使用某個三方庫的時候,它里面已經幫你做好高度封裝,讓你不再顧及里面的細節..

      一、矩陣是什么

      矩陣可以看做是向量的維度延伸,也就是一個二維數組。

      矩陣的數學表示為\(x \in \mathbb{R}^{m*n}\),其中m和n分別代表行和列,其展開的形式如下:

      \[A = \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \cdots & a_{mn} \end{bmatrix} \]

      如果矩陣A = 矩陣B,那么那么 A 和 B 的行列結構,以及每個對應位置的元素都是相等的。

      特殊的矩陣
      • 矩陣為 1*n,只有一行,稱為行向量

      \[A = \begin{bmatrix} x_1 & x_2 & x_3 & \cdots & x_n \end{bmatrix} \]

      • 矩陣為 n*1,只有一列,稱為列向量

      \[A = \begin{bmatrix} x_1 \\ x_2 \\ x_3 \\ \vdots \\ x_m \end{bmatrix} \]

      • 矩陣為 n*n,行列相同,稱為方陣

      \[A = \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n1} & a_{n2} & \cdots & a_{nn} \end{bmatrix} \]

      二、基本計算

      2.1 矩陣加法

      對于兩個 \(m \times n\) 矩陣 \(\mathbf{A}\)\(\mathbf{B}\)

      \[\mathbf{A} + \mathbf{B} = \begin{bmatrix} a_{11} & a_{12} & \dots & a_{1n} \\ a_{21} & a_{22} & \dots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \dots & a_{mn} \end{bmatrix} + \begin{bmatrix} b_{11} & b_{12} & \dots & b_{1n} \\ b_{21} & b_{22} & \dots & b_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ b_{m1} & b_{m2} & \dots & b_{mn} \end{bmatrix} = \begin{bmatrix} a_{11}+b_{11} & a_{12}+b_{12} & \dots & a_{1n}+b_{1n} \\ a_{21}+b_{21} & a_{22}+b_{22} & \dots & a_{2n}+b_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1}+b_{m1} & a_{m2}+b_{m2} & \dots & a_{mn}+b_{mn} \end{bmatrix} \]

      其和 \(\mathbf{C} = \mathbf{A} + \mathbf{B}\) 的元素 \(c_{ij}\) 為: $$c_{ij} = a_{ij} + b_{ij}$$

      示例

      給定矩陣 \(\mathbf{A}\)\(\mathbf{B}\)

      \[\mathbf{A} = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}, \quad \mathbf{B} = \begin{bmatrix} 5 & 6 \\ 7 & 8 \end{bmatrix} \]

      \[\mathbf{A} + \mathbf{B} = \begin{bmatrix} 1+5 & 2+6 \\ 3+7 & 4+8 \end{bmatrix} = \begin{bmatrix} 6 & 8 \\ 10 & 12 \end{bmatrix} \]

      應用場景

      在圖像處理中,圖像可以表示為一個像素矩陣。將兩張圖像進行融合時,可以通過矩陣加法實現。

      融合圖像=圖像A+圖像B
      

      在醫學影像中,CT 和 MRI 圖像可以通過矩陣加法融合,幫助醫生更全面地觀察病灶。

      image-20250904112447692

      2.2 矩陣減法

      對于兩個 \(m \times n\) 矩陣 \(\mathbf{A}\)\(\mathbf{B}\)

      \[\mathbf{A} - \mathbf{B} = \begin{bmatrix} a_{11} & a_{12} & \dots & a_{1n} \\ a_{21} & a_{22} & \dots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \dots & a_{mn} \end{bmatrix} - \begin{bmatrix} b_{11} & b_{12} & \dots & b_{1n} \\ b_{21} & b_{22} & \dots & b_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ b_{m1} & b_{m2} & \dots & b_{mn} \end{bmatrix} = \begin{bmatrix} a_{11}-b_{11} & a_{12}-b_{12} & \dots & a_{1n}-b_{1n} \\ a_{21}-b_{21} & a_{22}-b_{22} & \dots & a_{2n}-b_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1}-b_{m1} & a_{m2}-b_{m2} & \dots & a_{mn}-b_{mn} \end{bmatrix} \]

      其差 \(\mathbf{C} = \mathbf{A} - \mathbf{B}\) 的元素 \(c_{ij}\) 為:\(c_{ij} = a_{ij} - b_{ij}\)

      示例

      給定矩陣 \(\mathbf{A}\)\(\mathbf{B}\)

      \[\mathbf{A} = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}, \quad \mathbf{B} = \begin{bmatrix} 5 & 6 \\ 7 & 8 \end{bmatrix} \]

      \[\mathbf{A} - \mathbf{B} = \begin{bmatrix} 1-5 & 2-6 \\ 3-7 & 4-8 \end{bmatrix} = \begin{bmatrix} -4 & -4 \\ -4 & -4 \end{bmatrix} \]

      應用場景

      在安防監控中,連續幀圖像之間的差異可以通過矩陣減法計算:

      變化矩陣=當前幀A?前一幀B
      

      如果差異矩陣中某些區域值顯著變化,說明畫面中可能出現了移動物體或異常行為。

      image-20250904113211233

      2.3 矩陣常量乘法

      對于一個常數 \(k\) 和一個 \(m \times n\) 矩陣 \(\mathbf{A}\)

      \[k\mathbf{A} = k \begin{bmatrix} a_{11} & a_{12} & \dots & a_{1n} \\ a_{21} & a_{22} & \dots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \dots & a_{mn} \end{bmatrix} = \begin{bmatrix} k a_{11} & k a_{12} & \dots & k a_{1n} \\ k a_{21} & k a_{22} & \dots & k a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ k a_{m1} & k a_{m2} & \dots & k a_{mn} \end{bmatrix} \]

      其積 \(\mathbf{C} = k\mathbf{A}\) 的元素 \(c_{ij}\) 為:\(c_{ij} = k \cdot a_{ij}\)

      示例

      給定矩陣 \(\mathbf{A}\) 和常數 \(k=3\)

      \[\mathbf{A} = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}, \quad k = 3 \]

      \[3\mathbf{A} = 3 \cdot \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix} = \begin{bmatrix} 3 \cdot 1 & 3 \cdot 2 \\ 3 \cdot 3 & 3 \cdot 4 \end{bmatrix} = \begin{bmatrix} 3 & 6 \\ 9 & 12 \end{bmatrix} \]

      應用場景

      在圖像處理中,調整圖像亮度可以通過對像素矩陣乘以一個常數:

      亮度增強圖像=k?原圖像矩陣,
      

      這會使圖像整體變亮,常用于圖像增強和預處理。

      image-20250904113004482

      除此之外,在深度學習中,模型的權重矩陣常常需要乘以一個縮放因子(如學習率、正則化系數)來控制訓練過程。

      2.4 矩陣乘積

      設矩陣 \(A \in \mathbb{R}^{m \times n}\),矩陣\(B \in \mathbb{R}^{n \times p}\),則它們的乘積為:\(C = AB 是一個 m \times p\) 的矩陣。

      矩陣 A 和 B可相乘的條件是,A的列數與 B的行數必須相同乘積 C 的行數與A相同,列數與B相同。

      示例

      \[A = \begin{bmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \end{bmatrix}, \quad B = \begin{bmatrix} b_{11} & b_{12} \\ b_{21} & b_{22} \\ b_{31} & b_{32} \end{bmatrix} \]

      \[AB = \begin{bmatrix} a_{11}b_{11} + a_{12}b_{21} + a_{13}b_{31} & a_{11}b_{12} + a_{12}b_{22} + a_{13}b_{32} \\ a_{21}b_{11} + a_{22}b_{21} + a_{23}b_{31} & a_{21}b_{12} + a_{22}b_{22} + a_{23}b_{32} \end{bmatrix} \]

      對于乘積 C來說,每個元素 \(c_{ij} 是矩陣 AA 的第 ii 行與矩陣 BB 的第 jj 列的點積:\)

      \[c_{ij} = \sum_{k=1}^{n} a_{ik} \cdot b_{kj} \]

      規律

      • 乘法不滿足交換律: 一般情況下 AB≠BA(特殊情況除外)

      • 乘法滿足結合律與分配律:

        • A(BC)=(AB)CA(BC) = (AB)C
        • A(B+C)=AB+AC
      單位矩陣

      單位矩陣(Identity Matrix) 是一種特殊的方陣,其主對角線上的元素全為 1,其余元素全為 0。

      單位矩陣記做$ I_n$,對于任意矩陣 \(A \in \mathbb{R}^{n \times n}\),有:

      \[AI_n=I_nA=A \]

      比如,一個 3*3 的單位矩陣,計算過程如下:

      \[I_3 = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} \]

      \[AI_3 = \begin{bmatrix} 2 & -1 & 3 \\ 0 & 4 & 5 \\ -2 & 1 & 0 \end{bmatrix} \cdot \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} = \begin{bmatrix} 2 & -1 & 3 \\ 0 & 4 & 5 \\ -2 & 1 & 0 \end{bmatrix} \]

      2.5 矩陣轉置

      矩陣的轉置是將矩陣的行列互換,記作 \(A^T\)。 如果矩陣 \(A \in \mathbb{R}^{m \times n}\),則其轉置 \(A^T∈\mathbb{R}^{n×m}\)

      \[A = \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \cdots & a_{mn} \end{bmatrix} \quad \Rightarrow \quad A^T = \begin{bmatrix} a_{11} & a_{21} & \cdots & a_{m1} \\ a_{12} & a_{22} & \cdots & a_{m2} \\ \vdots & \vdots & \ddots & \vdots \\ a_{1n} & a_{2n} & \cdots & a_{mn} \end{bmatrix} \]

      矩陣轉置有許多計算意義,例如在圖像處理中,圖像可以表示為一個像素矩陣。 將圖像矩陣進行轉置,可以實現圖像的90°旋轉(配合行列反轉)

      應用場景

      假設你管理一家公司,銷售三種產品:T恤、褲子鞋子。你有三個銷售渠道:實體店A、實體店B網上商店?,F在,你記錄了周一和周二在每個渠道每種產品的具體銷量。同時,這些產品的價格在不同日期可能會有微調。

      我們的目標是計算出每個渠道在周一和周二分別獲得了多少總收入。

      1. 銷量矩陣(A)

      這個矩陣記錄了每個渠道在周一和周二的每種產品銷量。

      \[\text{A} = \begin{bmatrix} 20 & 15 & 8 \\ 5 & 10 & 12 \\ 3 & 4 & 5 \end{bmatrix} \]

      • 代表了銷售渠道(從左到右依次為:實體店A,實體店B,網上商店)。
      • 代表了產品種類。

      2. 價格矩陣(B)

      這個矩陣記錄了三種產品在周一和周二的價格。

      \[\text{B} = \begin{bmatrix} 100 & 98 \\ 200 & 195 \\ 300 & 295 \end{bmatrix} \]

      • 代表了產品種類。
      • 代表了日期(周一,周二)。

      3. 矩陣乘法

      要計算每個渠道在兩天的總收入,我們將銷量矩陣(A)轉置,然后與價格矩陣(B)相乘,即 \(C=A^TB\)。

      \[\text{C} = \begin{bmatrix} 20 & 5 & 3 \\ 15 & 10 & 4 \\ 8 & 12 & 5 \end{bmatrix} \times \begin{bmatrix} 100 & 98 \\ 200 & 195 \\ 300 & 295 \end{bmatrix} \]

      4. 計算過程與結果

      \[\text{C} = \begin{bmatrix} (20\times100+5\times200+3\times300) & (20\times98+5\times195+3\times295) \\ (15\times100+10\times200+4\times300) & (15\times98+10\times195+4\times295) \\ (8\times100+12\times200+5\times300) & (8\times98+12\times195+5\times295) \end{bmatrix} \]

      5. 結果分析

      \[\text{C} = \begin{bmatrix} 3900 & 3865 \\ 4700 & 4540 \\ 4700 & 4599 \end{bmatrix} \]

      新的結果矩陣清晰地顯示了每個渠道在每一天的總收入:

      • 第一行 [3900, 3865]實體店A 周一總收入為 3900,周二為 3865。
      • 第二行 [4700, 4540]實體店B 周一總收入為 4700,周二為 4540。
      • 第三行 [4700, 4599]網上商店 周一總收入為 4700,周二為 4599。

      2.6 Hadamard乘積

      矩陣的 Hadamard 乘積,也稱為元素級乘積(element-wise product),是一種特殊的矩陣運算。與矩陣乘法不同,Hadamard 乘積不涉及行與列的點積,而是將兩個相同結構的矩陣中對應位置的元素直接相乘,然后將結果組成一個新的矩陣。

      如果兩個矩陣 A 和 B 的維度都是 m×n,它們的 Hadamard 積 \(C=A⊙B\) 的每個元素 \(c_{ij}\) 滿足:

      \[c_{ij}=a_{ij}?b_{ij} \]

      Hadamard 乘積常用于需要對數據進行逐元素加權或篩選的場景。

      應用場景

      在圖像處理中,圖像數據通常以矩陣形式存儲,矩陣中的每個元素代表一個像素的亮度或顏色值。這時可以使用 Hadamard 乘積來實現圖像遮罩效果,只保留圖像中感興趣的區域。

      假設你有一張黑白照片,并想把照片中某一部分變暗或去除。你可以創建一個遮罩矩陣

      • 圖像矩陣 (A): 一個表示圖像像素值的矩陣,例如一個 3x3 矩陣。

        \[\text{A} = \begin{bmatrix} 200 & 210 & 205 \\ 180 & 190 & 185 \\ 150 & 160 & 155 \end{bmatrix} \]

      • 遮罩矩陣 (B): 一個與圖像矩陣同維度的矩陣,其中你想保留的區域元素為1,想遮蓋或變暗的區域元素為0或接近0的值。

        \[B = \begin{bmatrix} 1 & 1 & 1 \\ 0 & 0 & 0 \\ 0 & 0 & 0 \end{bmatrix} \]

      • Hadamard 積 (C=A⊙B): 將兩個矩陣逐元素相乘,結果是新的圖像矩陣。

        \[\text{C} = \begin{bmatrix} 200\times1 & 210\times1 & 205\times1 \\ 180\times0 & 190\times0 & 185\times0 \\ 150\times0 & 160\times0 & 155\times0 \end{bmatrix} \]

        \[\text{C} = \begin{bmatrix} 200 & 210 & 205 \\ 0 & 0 & 0 \\ 0 & 0 & 0 \end{bmatrix} \]

      最終結果是只保留了圖像上半部分的像素,下半部分像素值變為0(全黑),這樣便可以實現了圖像的局部處理功能。

      三、小試牛刀

      下面使用 numpy 來實現本文提到的這些矩陣運算,包括:加法、減法、常量乘法、矩陣乘積、單位矩陣初始化,以及 Hadamard(元素乘)乘積。

      代碼示例
      import numpy as np
      
      # 初始化兩個矩陣 A 和 B(3x3)
      A = np.array([[1, 2, 3],
                    [4, 5, 6],
                    [7, 8, 9]])
      
      B = np.array([[9, 8, 7],
                    [6, 5, 4],
                    [3, 2, 1]])
      
      # 1?? 矩陣加法
      add_result = A + B
      
      # 2?? 矩陣減法
      sub_result = A - B
      
      # 3?? 常量乘法(例如 k = 2)
      k = 2
      scalar_mul_result = k * A
      
      # 4?? 矩陣乘積(矩陣乘法)
      dot_result = np.dot(A, B)
      
      # 5?? 單位矩陣初始化(3x3)
      identity_matrix = np.eye(3)
      
      # 6?? Hadamard 乘積(元素乘法)
      hadamard_result = A * B
      
      # 輸出結果
      print("矩陣 A:\n", A)
      print("矩陣 B:\n", B)
      print("矩陣加法 A + B:\n", add_result)
      print("矩陣減法 A - B:\n", sub_result)
      print("常量乘法 k * A:\n", scalar_mul_result)
      print("矩陣乘積 A * B:\n", dot_result)
      print("單位矩陣 I:\n", identity_matrix)
      print("Hadamard 乘積 A HM B:\n", hadamard_result)
      
      

      執行上述程序,輸出結果如下:

      矩陣 A:
       [[1 2 3]
       [4 5 6]
       [7 8 9]]
      矩陣 B:
       [[9 8 7]
       [6 5 4]
       [3 2 1]]
      矩陣加法 A + B:
       [[10 10 10]
       [10 10 10]
       [10 10 10]]
      矩陣減法 A - B:
       [[-8 -6 -4]
       [-2  0  2]
       [ 4  6  8]]
      常量乘法 k * A:
       [[ 2  4  6]
       [ 8 10 12]
       [14 16 18]]
      矩陣乘積 A * B:
       [[ 30  24  18]
       [ 84  69  54]
       [138 114  90]]
      單位矩陣 I:
       [[1. 0. 0.]
       [0. 1. 0.]
       [0. 0. 1.]]
      Hadamard 乘積 A HM B:
       [[ 9 16 21]
       [24 25 24]
       [21 16  9]]
      

      四、小結

      這篇文章介紹了矩陣的一些基本特征和運算方法,算是對數學不好的小伙伴做個回憶和科普吧,矩陣在機器學習中是一個重要基礎,實際上很多的算法都來源于數學應用。關于矩陣的更高階的一些特性,后面還會繼續更新。

      posted @ 2025-09-05 14:39  美碼師  閱讀(965)  評論(4)    收藏  舉報
      主站蜘蛛池模板: 国产曰批视频免费观看完| 国产精品亚洲综合色区丝瓜| 国产午夜A理论毛片| 欧洲尺码日本尺码专线美国又| 精品一区二区免费不卡| 日韩少妇人妻vs中文字幕| 中文字幕国产精品资源| 少妇人妻无码专区在线视频 | 国产高清精品在线一区二区| 亚洲av男人电影天堂热app| 性色av无码久久一区二区三区 | 精品国产成人国产在线观看| 亚洲欧美日韩久久一区二区| 亚洲日韩久热中文字幕| 人妻少妇精品专区性色av| 亚洲中文字幕精品久久| 中文字幕av日韩有码| 国产欧美精品aaaaaa片| 国产欧美一区二区精品性色| 亚洲精品国产一二三区| 久久99精品国产麻豆婷婷| 福利成人午夜国产一区| 浏阳市| 麻豆tv入口在线看| 亚洲自拍偷拍福利小视频| 1024你懂的国产精品| 日本a在线播放| 亚洲天堂一区二区三区四区| 亚洲2区3区4区产品乱码2021| av中文字幕一区二区| 豆国产97在线 | 亚洲| av无码精品一区二区乱子| 色猫咪av在线网址| 中文字幕在线视频不卡一区二区| 中文字幕在线亚洲精品| 招远市| 亚洲欧洲日产国码久在线| A级日本乱理伦片免费入口| 人成午夜免费大片| 一区二区三区四区五区自拍| 四虎国产精品永久免费网址|