TensorFlow03-实现线性回归


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

    # 构造一个线程模型
    # k:斜率; b:偏置值
    b = tf.Variable(0.)
    k = tf.Variable(0.)
    y = k * x_data + b

    # 定义二次方差损失函数,用于优化计算结果,机器学习理论部分
    # 求得预测值和实际值的平方差,用于判断计算结果的损失
    loss = tf.reduce_mean(tf.square(y_data - y))

    # 定义梯度下降法来进行训练的优化器,0.1参数为训练步长
    optimizer = tf.train.GradientDescentOptimizer(0.1)

    # 定义最小化代价函数,梯度下降的目的是把loss降到最小
    # loss越小代表预测值与真实值越接近,
    # 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:
        原理: 深度学习06-logistic
        2. 然后计算y_data 和y 的平方差,y_data为x_data的固定值;根据y的模型来计算斜率k和偏置量b
        3. 当k和b最接近y_data模型中的斜率和偏置量,则说明模型最优化
        4. 为什么要使用确定的值来训练模型?
            求预测模型最接近真实模型的算法
    """

if __name__ == "__main__":
    test01_liner()


你可能感兴趣的:(TensorFlow03-实现线性回归)