TensorFlow03-實現(xiàn)線性回歸


def test01_liner():
    # 用numpy生成100個點
    x_data = np.random.rand(100)
    y_data = x_data * 0.1 + 0.2

    # 構(gòu)造一個線程模型
    # k:斜率; b:偏置值
    b = tf.Variable(0.)
    k = tf.Variable(0.)
    y = k * x_data + b

    # 定義二次方差損失函數(shù),用于優(yōu)化計算結(jié)果,機(jī)器學(xué)習(xí)理論部分
    # 求得預(yù)測值和實際值的平方差,用于判斷計算結(jié)果的損失
    loss = tf.reduce_mean(tf.square(y_data - y))

    # 定義梯度下降法來進(jìn)行訓(xùn)練的優(yōu)化器,0.1參數(shù)為訓(xùn)練步長
    optimizer = tf.train.GradientDescentOptimizer(0.1)

    # 定義最小化代價函數(shù),梯度下降的目的是把loss降到最小
    # loss越小代表預(yù)測值與真實值越接近,
    # k,b越接近0.1和0.2
    train = optimizer.minimize(loss)

    # 初始化變量,一旦有變量,則需要初始化變量
    init = tf.global_variables_initializer()

    # run
    with tf.Session() as sess:
        sess.run(init)
        for step in range(8001):
            sess.run(train)
            if step % 20 == 0:
                print(step, sess.run([k, b]))

    """運行過程:
        1. sess.run(train) -> optimizer.minimize(loss) :使用梯度下降法計算最小化的loss:
        原理: 深度學(xué)習(xí)06-logistic
        2. 然后計算y_data 和y 的平方差,y_data為x_data的固定值;根據(jù)y的模型來計算斜率k和偏置量b
        3. 當(dāng)k和b最接近y_data模型中的斜率和偏置量,則說明模型最優(yōu)化
        4. 為什么要使用確定的值來訓(xùn)練模型?
            求預(yù)測模型最接近真實模型的算法
    """

if __name__ == "__main__":
    test01_liner()


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容