1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        【TensorFlow】筆記:基礎知識-線性回歸預測房價

        共 1646字,需瀏覽 4分鐘

         ·

        2021-02-04 22:47

        點擊上方“公眾號”可訂閱哦!



        年份
        2013
        2014
        201520162017
        房價
        12000
        1400015000
        16500
        17500


        我們使用numpy和TensorFlow分別對房價數(shù)據(jù)進行回歸分析。

        現(xiàn)在,我們希望通過對該數(shù)據(jù)進行線性回歸,即使用線性模??來擬合上述數(shù)據(jù),此處?a?和?b?是待求的參數(shù)。


        01

        Numpy下的線性回歸


        在這里,我們使用 NumPy 這一通用的科學計算庫來實現(xiàn)梯度下降方法。NumPy 提供了多維數(shù)組支持,可以表示向量、矩陣以及更高維的張量。同時,也提供了大量支持在多維數(shù)組上進行操作的函數(shù)(比如下面的?np.dot()?是求內(nèi)積,?np.sum()?是求和)。


        導入數(shù)據(jù),歸一化處理

        import numpy as np
        X_raw = np.array([2013, 2014, 2015, 2016, 2017], dtype=np.float32)y_raw = np.array([12000, 14000, 15000, 16500, 17500], dtype=np.float32)
        X = (X_raw - X_raw.min()) / (X_raw.max() - X_raw.min())y = (y_raw - y_raw.min()) / (y_raw.max() - y_raw.min())


        使用梯度下降法反復迭代

        a, b = 0, 0
        num_epoch = 10000learning_rate = 5e-4for e in range(num_epoch): # 手動計算損失函數(shù)關于自變量(模型參數(shù))的梯度 y_pred = a * X + b grad_a, grad_b = 2 * (y_pred - y).dot(X), 2 * (y_pred - y).sum()
        # 更新參數(shù) a, b = a - learning_rate * grad_a, b - learning_rate * grad_b
        print(a, b)

        輸出:

        0.9763702027872221 0.057564988311377796



        02

        TensorFlow下的線性回歸


        X = tf.constant(X)y = tf.constant(y)
        a = tf.Variable(initial_value=0.)b = tf.Variable(initial_value=0.)variables = [a, b]
        num_epoch = 10000optimizer = tf.keras.optimizers.SGD(learning_rate=5e-4)for e in range(num_epoch): # 使用tf.GradientTape()記錄損失函數(shù)的梯度信息 with tf.GradientTape() as tape: y_pred = a * X + b loss = tf.reduce_sum(tf.square(y_pred - y)) # TensorFlow自動計算損失函數(shù)關于自變量(模型參數(shù))的梯度 grads = tape.gradient(loss, variables) # TensorFlow自動根據(jù)梯度更新參數(shù) optimizer.apply_gradients(grads_and_vars=zip(grads, variables)print(a.numpy(), b.numpy())


        輸出:

        0.97637 0.057565063






        ?END

        掃碼關注

        微信號|sdxx_rmbj


        瀏覽 93
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            水密桃网站 | 美女av片 | 人人色人人操 | 国产免费黄色录像 | 欧美日韩国产一区二区三区在线观看 | 白丝班长扒开腿让我爽了一夜 | 潘金莲武松再深一点 | 世界顶级白嫩裸体ass | 久久资源365 | www.sesese 秋霞黄片 |