<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 機器學習的矩陣和矩陣算法簡介 > 原文: [https://machinelearningmastery.com/introduction-matrices-machine-learning/](https://machinelearningmastery.com/introduction-matrices-machine-learning/) 矩陣是線性代數的基本元素。 在訓練算法時,在算法和過程(例如輸入數據變量(X))的描述中,在整個機器學習領域中使用矩陣。 在本教程中,您將發現線性代數中的矩陣以及如何在 Python 中對它們進行操作。 完成本教程后,您將了解: * 什么是矩陣以及如何使用 NumPy 在 Python 中定義矩陣。 * 如何執行元素操作,如加法,減法和 Hadamard 產品。 * 如何將矩陣相乘以及操作背后的直覺。 讓我們開始吧。 ![A Gentle Introduction to Matrices for Machine Learning](img/c57b334ad0ed881003cc804dfe0e16c1.jpg) 機器學習矩陣的溫和介紹 [Maximiliano Kolus](https://www.flickr.com/photos/agent1994/5062439082/) 的照片,保留一些權利。 ## 教程概述 本教程分為 6 個部分;他們是: 1. 什么是矩陣? 2. 定義矩陣 3. 矩陣算術 4. 矩陣 - 矩陣乘法(點積) 5. 矩陣向量乘法 6. 矩陣 - 標量乘法 ## 什么是矩陣? 矩陣是具有一個或多個列和一個或多個行的標量的二維陣列。 > 矩陣是數字的二維數組(表)。 - 第 115 頁,[無線性代數廢話指南](http://amzn.to/2k76D4C),2017 年 矩陣的符號通常是大寫字母,例如 A,并且條目由它們的行(i)和列(j)的二維下標引用,例如 aij。例如: ``` A = ((a11, a12), (a21, 22), (a31, a32)) ``` 更常見的是使用水平表示法定義矩陣。 ``` a11, a12 A = (a21, a22) a31, a32 ``` 您可能在機器學習中遇到矩陣的第一個地方是模型訓練數據,該數據由許多行和列組成,并且通常使用大寫字母“X”表示。 用于幫助理解向量及其某些操作的幾何類比不適用于矩陣。此外,向量本身可以被認為是具有一列和多行的矩陣。 對于行數和列數,矩陣的尺寸通常表示為 m 和 n。 既然我們知道矩陣是什么,那么讓我們看看在 Python 中定義矩陣。 ## 定義矩陣 我們可以使用二維 NumPy 數組在 Python 中表示矩陣。 可以在給定列表列表的情況下構造 NumPy 數組。例如,下面是 3 行,2 列矩陣。 ``` # create matrix from numpy import array A = array([[1, 2, 3], [4, 5, 6]]) print(A) ``` 運行該示例將打印顯示預期結構的創建矩陣。 ``` [[1 2 3] [4 5 6]] ``` ## 矩陣算術 在本節中將演示簡單的矩陣 - 矩陣算法,其中所有操作在相同大小的兩個矩陣之間以元素方式執行,以產生具有相同大小的新矩陣。 ### 矩陣加法 可以將具有相同尺寸的兩個矩陣相加在一起以創建新的第三矩陣。 ``` C = A + B ``` 所得矩陣中的標量元素被計算為添加的每個矩陣中元素的相加。 ``` a11 + b11, a12 + b12 A + B = (a21 + b21, a22 + b22) a31 + b31, a32 + b32 ``` 或者,換句話說: ``` C[0,0] = A[0,0] + B[0,0] C[1,0] = A[1,0] + B[1,0] C[2,0] = A[2,0] + B[2,0] C[0,1] = A[0,1] + B[0,1] C[1,1] = A[1,1] + B[1,1] C[2,1] = A[2,1] + B[2,1] ``` 我們可以在 python 中使用 plus 運算符直接在兩個 NumPy 數組上實現它。 ``` # add matrices from numpy import array A = array([[1, 2, 3], [4, 5, 6]]) print(A) B = array([[1, 2, 3], [4, 5, 6]]) print(B) C = A + B print(C) ``` 該示例首先定義兩個 2×3 矩陣,然后將它們相加。 運行該示例首先打印兩個父矩陣,然后將它們添加到一起。 ``` [[1 2 3] [4 5 6]] [[1 2 3] [4 5 6]] [[ 2 4 6] [ 8 10 12]] ``` ### 矩陣減法 類似地,可以從具有相同尺寸的另一個矩陣中減去一個矩陣。 ``` C = A - B ``` 計算得到的矩陣中的標量元素,作為每個矩陣中元素的減法。 ``` a11 - b11, a12 - b12 A - B = (a21 - b21, a22 - b22) a31 - b31, a32 - b32 ``` Or, put another way: ``` C[0,0] = A[0,0] - B[0,0] C[1,0] = A[1,0] - B[1,0] C[2,0] = A[2,0] - B[2,0] C[0,1] = A[0,1] - B[0,1] C[1,1] = A[1,1] - B[1,1] C[2,1] = A[2,1] - B[2,1] ``` 我們可以在 python 中使用 minus 運算符直接在兩個 NumPy 數組上實現它。 ``` # subtract matrices from numpy import array A = array([[1, 2, 3], [4, 5, 6]]) print(A) B = array([[0.5, 0.5, 0.5], [0.5, 0.5, 0.5]]) print(B) C = A - B print(C) ``` 該示例首先定義兩個 2×3 矩陣,然后從另一個中減去一個。 運行該示例首先打印兩個父矩陣,然后從第二個矩陣中減去第一個矩陣。 ``` [[1 2 3] [4 5 6]] [[ 0.5 0.5 0.5] [ 0.5 0.5 0.5]] [[ 0.5 1.5 2.5] [ 3.5 4.5 5.5]] ``` ### 矩陣乘法(Hadamard 產品) 具有相同大小的兩個矩陣可以相乘,這通常稱為逐元素矩陣乘法或 Hadamard 乘積。 當提到矩陣乘法時,這不是典型的操作,因此經常使用不同的算子,例如圓圈“o”。 ``` C = A o B ``` 與逐元素減法和加法一樣,逐元素乘法涉及從每個父矩陣乘以元素以計算新矩陣中的值。 ``` a11 * b11, a12 * b12 A o B = (a21 * b21, a22 * b22) a31 * b31, a32 * b32 ``` Or, put another way: ``` C[0,0] = A[0,0] * B[0,0] C[1,0] = A[1,0] * B[1,0] C[2,0] = A[2,0] * B[2,0] C[0,1] = A[0,1] * B[0,1] C[1,1] = A[1,1] * B[1,1] C[2,1] = A[2,1] * B[2,1] ``` 我們可以在 python 中使用 star 運算符直接在兩個 NumPy 數組上實現它。 ``` # element-wise multiply matrices from numpy import array A = array([[1, 2, 3], [4, 5, 6]]) print(A) B = array([[1, 2, 3], [4, 5, 6]]) print(B) C = A * B print(C) ``` 該示例首先定義兩個 2×3 矩陣,然后將它們相乘。 運行該示例首先打印兩個父矩陣,然后將它們與 Hadamard 產品相乘。 ``` [[1 2 3] [4 5 6]] [[1 2 3] [4 5 6]] [[ 1 4 9] [16 25 36]] ``` ### 矩陣分部 一個矩陣可以被具有相同尺寸的另一個矩陣劃分。 ``` C = A / B ``` 得到的矩陣中的標量元素被計算為每個矩陣中元素的劃分。 ``` a11 / b11, a12 / b12 A / B = (a21 / b21, a22 / b22) a31 / b31, a32 / b32 ``` Or, put another way: ``` C[0,0] = A[0,0] / B[0,0] C[1,0] = A[1,0] / B[1,0] C[2,0] = A[2,0] / B[2,0] C[0,1] = A[0,1] / B[0,1] C[1,1] = A[1,1] / B[1,1] C[2,1] = A[2,1] / B[2,1] ``` 我們可以直接在兩個 NumPy 數組上使用除法運算符在 python 中實現它。 ``` # divide matrices from numpy import array A = array([[1, 2, 3], [4, 5, 6]]) print(A) B = array([[1, 2, 3], [4, 5, 6]]) print(B) C = A / B print(C) ``` 該示例首先定義兩個 2×3 矩陣,然后將第一個與第二個矩陣相除。 首先運行該示例打印兩個父矩陣,然后將第一個矩陣除以第二個矩陣。 ``` [[1 2 3] [4 5 6]] [[1 2 3] [4 5 6]] [[ 1\. 1\. 1.] [ 1\. 1\. 1.]] ``` ## 矩陣 - 矩陣乘法(點積) 矩陣乘法(也稱為矩陣點乘積)比先前的操作更復雜,并且涉及規則,因為并非所有矩陣都可以相乘。 ``` C = A * B ``` 要么 ``` C = AB ``` 矩陣乘法的規則如下: * 第一矩陣(A)中的列數(n)必須等于第二矩陣(B)中的行數(m)。 例如,矩陣 A 的尺寸為 m 行 n 列,矩陣 B 的尺寸為 n 和 k。 A 行和 n 行 b 中的 n 列相等。結果是一個 m 行和 k 列的新矩陣。 ``` C(m,k) = A(m,n) * B(n,k) ``` 此規則適用于矩陣乘法鏈,其中鏈中一個矩陣中的列數必須與鏈中下一個矩陣中的行數匹配。 > 涉及矩陣的最重要的操作之一是兩個矩陣的乘法。矩陣 A 和 B 的矩陣乘積是第三矩陣 C.為了定義該乘積,A 必須具有與 B 具有行相同的列數。如果 A 的形狀為 m×n 且 B 的形狀為 n×p,則 C 的形狀為 m×p。 - 第 34 頁,[深度學習](http://amzn.to/2B3MsuU),2016 年。 矩陣乘法的直覺是我們計算矩陣 A 中每一行與矩陣 B 中每列之間的點積。例如,我們可以逐步降低 A 列的行數并將每一行乘以 B 中的第 1 列來給出標量 C 列第 1 列中的值 使用以下圖像可以清楚地看到這一點。 ![Depiction of matrix multiplication.](img/111352d280178b57d37b0809545812fa.jpg) 矩陣乘法的描述,取自 [Wikipedia](https://en.wikipedia.org/wiki/Matrix_multiplication) ,保留一些權利。 下面描述使用矩陣表示法的矩陣乘法。 ``` a11, a12 A = (a21, a22) a31, a32 b11, b12 B = (b21, b22) a11 * b11 + a12 * b21, a11 * b12 + a12 * b22 C = (a21 * b11 + a22 * b21, a21 * b12 + a22 * b22) a31 * b11 + a32 * b21, a31 * b12 + a32 * b22 ``` 通過刪除乘法符號可以簡化這一點: ``` a11b11 + a12b21, a11b12 + a12b22 C = (a21b11 + a22b21, a21b12 + a22b22) a31b11 + a32b21, a31b12 + a32b22 ``` 我們可以使用數組表示法描述矩陣乘法運算。 ``` C[0,0] = A[0,0] * B[0,0] + A[0,1] * B[1,0] C[1,0] = A[1,0] * B[0,0] + A[1,1] * B[1,0] C[2,0] = A[2,0] * B[0,0] + A[2,1] * B[1,0] C[0,1] = A[0,0] * B[0,1] + A[0,1] * B[1,1] C[1,1] = A[1,0] * B[0,1] + A[1,1] * B[1,1] C[2,1] = A[2,0] * B[0,1] + A[2,1] * B[1,1] ``` 矩陣乘法運算可以使用 dot()函數在 NumPy 中實現。 ``` # matrix dot product from numpy import array A = array([[1, 2], [3, 4], [5, 6]]) print(A) B = array([[1, 2], [3, 4]]) print(B) C = A.dot(B) print(C) ``` 該示例首先定義兩個 2×3 矩陣,然后計算它們的點積。 運行該示例首先打印兩個父矩陣,然后打印點積的結果。 ``` [[1 2] [3 4] [5 6]] [[1 2] [3 4]] [[ 7 10] [15 22] [23 34]] ``` ## 矩陣向量乘法 只要觀察到矩陣乘法的規則,矩陣和向量就可以相乘。 具體而言,矩陣中的列數必須等于向量中的項數。與矩陣乘法一樣,可以使用點表示法編寫操作。因為向量只有一列,所以結果總是一個向量。 ``` c = A . v ``` 或者沒有緊湊形式的圓點。 ``` c = Av ``` 結果是一個與父矩陣具有相同行數的向量。 ``` a11, a12 A = (a21, a22) a31, a32 v1 v = (v2) a11 * v1 + a12 * v2 c = (a21 * v1 + a22 * v2) a31 * v1 + a32 * v2 ``` 或者,更緊湊。 ``` a11v1 + a12v2 c = (a21v1 + a22v2) a31v1 + a32v2 ``` 矩陣向量乘法可以使用 dot()函數在 NumPy 中實現。 ``` # matrix-vector multiplication from numpy import array A = array([[1, 2], [3, 4], [5, 6]]) print(A) B = array([0.5, 0.5]) print(B) C = A.dot(B) print(C) ``` 該示例首先定義 2×3 矩陣和 2 元素向量,然后將它們相乘。 首先運行示例打印父矩陣和向量,然后將它們相乘的結果打印出來。 ``` [[1 2] [3 4] [5 6]] [ 0.5 0.5] [ 1.5 3.5 5.5] ``` ## 矩陣 - 標量乘法 矩陣可以乘以標量。 這可以使用矩陣和標量之間的點表示法來表示。 ``` C = A . b ``` 或者沒有點符號。 ``` C = Ab ``` 結果是具有與父矩陣相同大小的矩陣,其中矩陣的每個元素乘以標量值。 ``` a11, a12 A = (a21, a22) a31, a32 b a11 * b, a12 * b C = (a21 * b, a22 * b) a31 * b, a32 * b ``` or ``` a11b, a12b C = (a21b, a22b) a31b, a32b ``` 我們也可以用數組表示法來表示它。 ``` C[0,0] = A[0,0] * b C[1,0] = A[1,0] * b C[2,0] = A[2,0] * b C[0,1] = A[0,1] * b C[1,1] = A[1,1] * b C[2,1] = A[2,1] * b ``` 這可以使用乘法運算符直接在 NumPy 中實現。 ``` # matrix-scalar multiplication from numpy import array A = array([[1, 2], [3, 4], [5, 6]]) print(A) b = 0.5 print(b) C = A * b print(C) ``` 該示例首先定義 2×3 矩陣和標量,然后將它們相乘。 首先運行示例打印父矩陣和標量,然后將它們相乘的結果打印出來。 ``` [[1 2] [3 4] [5 6]] 0.5 [[ 0.5 1\. ] [ 1.5 2\. ] [ 2.5 3\. ]] ``` ## 擴展 本節列出了一些擴展您可能希望探索的教程的想法。 * 使用您自己的數據使用每個操作創建 5 個示例。 * 為定義為列表列表的矩陣手動實現每個矩陣操作。 * 搜索機器學習論文并找到每個正在使用的操作的示例。 如果你探索任何這些擴展,我很想知道。 ## 進一步閱讀 如果您希望深入了解,本節將提供有關該主題的更多資源。 ### 圖書 * 第 2.3 節,矩陣運算。 [線性代數無廢話指南](http://amzn.to/2k76D4),2017 年。 * 第 3.3 節,矩陣乘法。 [線性代數無廢話指南](http://amzn.to/2k76D4),2017 年。 * 第 1.3 節矩陣,[線性代數簡介](http://amzn.to/2AZ7R8j),第五版,2016 年。 * 第 2.4 節矩陣運算規則,[線性代數導論](http://amzn.to/2AZ7R8j),第五版,2016 年。 * 第 2.1 節標量,向量,矩陣和張量,[深度學習](http://amzn.to/2j4oKuP),2016 年。 * 第 2.2 節乘以矩陣和向量,[深度學習](http://amzn.to/2B3MsuU),2016。 ### API * [numpy.array()API](https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.array.html) * [numpy.dot()API](https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.dot.html) ### 用品 * [矩陣(數學)](https://en.wikipedia.org/wiki/Matrix_(mathematics)) * [維基百科上的矩陣乘法](https://en.wikipedia.org/wiki/Matrix_multiplication) * [維基百科上的 Hadamard 產品(矩陣)](https://en.wikipedia.org/wiki/Hadamard_product_(matrices)) * 維基百科上的 [Dot 產品](https://en.wikipedia.org/wiki/Dot_product) ## 摘要 在本教程中,您發現了線性代數中的矩陣以及如何在 Python 中對它們進行操作。 具體來說,你學到了: * 什么是矩陣以及如何使用 NumPy 在 Python 中定義矩陣。 * 如何執行元素操作,如加法,減法和 Hadamard 產品。 * 如何將矩陣相乘以及操作背后的直覺。 你有任何問題嗎? 在下面的評論中提出您的問題,我會盡力回答。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看