<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 實現分解方法 對于這個秘籍,我們將實現一個用于線性回歸的矩陣分解方法。具體來說,我們將使用 Cholesky 分解,TensorFlow 中存在相關函數。 ## 做好準備 在大多數情況下,實現前一個秘籍中的逆方法在數值上效率低,尤其是當矩陣變得非常大時。另一種方法是分解`A`矩陣并對分解執行矩陣運算。一種方法是在 TensorFlow 中使用內置的 Cholesky 分解方法。 人們對將矩陣分解為更多矩陣如此感興趣的一個原因是,所得到的矩陣將具有允許我們有效使用某些方法的保證屬性。 Cholesky 分解將矩陣分解為下三角矩陣和上三角矩陣,比如`L`和`L'`,使得這些矩陣是彼此的轉置。有關此分解屬性的更多信息,有許多可用資源來描述它以及如何到達它。在這里,我們將通過將其寫為`LL'x = b`來解決系統`Ax = b`。我們首先解決`Ly = b`的`y`,然后求解`L'x = y`得到我們的系數矩陣`x`。 ## 操作步驟 我們按如下方式處理秘籍: 1. 我們將以與上一個秘籍完全相同的方式設置系統。我們將導入庫,初始化圖并創建數據。然后,我們將以之前的方式獲得我們的`A`矩陣和`b`矩陣: ```py import matplotlib.pyplot as plt import numpy as np import tensorflow as tf from tensorflow.python.framework import ops ops.reset_default_graph() sess = tf.Session() x_vals = np.linspace(0, 10, 100) y_vals = x_vals + np.random.normal(0, 1, 100) x_vals_column = np.transpose(np.matrix(x_vals)) ones_column = np.transpose(np.matrix(np.repeat(1, 100))) A = np.column_stack((x_vals_column, ones_column)) b = np.transpose(np.matrix(y_vals)) A_tensor = tf.constant(A) b_tensor = tf.constant(b) ``` 1. 接下來,我們找到方陣的 Cholesky 分解,`A^T A`: ```py tA_A = tf.matmul(tf.transpose(A_tensor), A_tensor) L = tf.cholesky(tA_A) tA_b = tf.matmul(tf.transpose(A_tensor), b) sol1 = tf.matrix_solve(L, tA_b) sol2 = tf.matrix_solve(tf.transpose(L), sol1) ``` > 請注意,TensorFlow 函數`cholesky()`僅返回分解的下對角線部分。這很好,因為上對角矩陣只是下對角矩陣的轉置。 1. 現在我們有了解決方案,我們提取系數: ```py solution_eval = sess.run(sol2) slope = solution_eval[0][0] y_intercept = solution_eval[1][0] print('slope: ' + str(slope)) print('y_intercept: ' + str(y_intercept)) slope: 0.956117676145 y_intercept: 0.136575513864 best_fit = [] for i in x_vals: best_fit.append(slope*i+y_intercept) plt.plot(x_vals, y_vals, 'o', label='Data') plt.plot(x_vals, best_fit, 'r-', label='Best fit line', linewidth=3) plt.legend(loc='upper left') plt.show() ``` 繪圖如下: ![](https://img.kancloud.cn/2f/1b/2f1b78eb2c44f3ae9a176710c0bb0e8f_374x256.png) 圖 2:通過 Cholesky 分解獲得的數據點和最佳擬合線 ## 工作原理 如您所見,我們得出了與之前秘籍非常相似的答案。請記住,這種分解矩陣然后對碎片執行操作的方式有時會更加高效和數值穩定,尤其是在考慮大型數據矩陣時。
                  <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>

                              哎呀哎呀视频在线观看