美文网首页深度学习
线性回归实例

线性回归实例

作者: zidea | 来源:发表于2019-09-28 20:15 被阅读0次
    mxnet.jpg

    线性回归实例

    来一个线性回归问题实例,在开始之前我们先明确一些问题,也就是我们要训练模型几个步骤,在李宏毅教授的课程中他提到会分为建立模型(也就是函数集合),然后就是定义损失函数,最后根据损失函数进行优化找到最优的函数。
    不过我们对于简单的神经网,个人总结了一点经验,首先是准备好训练和测试数据集,然后处理这些数据以便训练,然后就是定义输入变量,因为都是矩阵和向量乘法,在设计神经网网络时候我们需要考虑结构以及矩阵的维度和矩阵元素类型,这样运算可以顺利进行。然后就是定义损失函数,接下来是定义优化找到让损失函数最小的那个方程也就是我们最优解,然后用最优解方程来测试我们测试数据,来评估我们模型精确度。

    准备数据

    import tensorflow as tf
    import numpy as np
    import matplotlib.pyplot as plt
    
    learning_rate = 0.01
    epochs = 200
    
    n_samples = 30
    train_x = np.linspace(0,20,n_samples)
    train_y = 3 * train_x + 4* np.random.rand(n_samples)
    
    plt.plot(train_x,train_y,'o')
    plt.show()
    
    train_x_data.png
    plt.plot(train_x,train_y,'o')
    plt.plot(train_x, 3 * train_x)
    plt.show()
    

    创建变量

    X = tf.placeholder(tf.float32)
    Y = tf.placeholder(tf.float32)
    
    W = tf.Variable(np.random.randn,name='weights')
    B = tf.Variable(np.random.randn,name='bias')
    

    定义计算图

    pred = X * W + B

    定义损失函数

    然后定义评估函数也就是我们提到损失函数
    \frac{1}{2n} \sum_{i}^n(pred(i) -Y_i)^2

    cost = tf.reduce_sum((pred - Y) ** 2) / (2 * n_samples)
    
    

    用计算出估计值(pred) 减去实际值,也就是估计值到真实值的距离然后平方来去掉负数后取均值。

    优化

    optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)
    

    我们优化就是需要让损失函数最小,所以最小化 cost 函数的参数就是最好的参数

    训练

    init = tf.global_variables_initializer()
    with tf.Session() as sess:
        sess.run(init)
        for epoch in range(epochs):
            for x, y in zip(train_x,train_y):
                sess.run(optimizer,feed_dict={X:x,Y:y})
            if not epoch % 20:
                c = sess.run(cost,feed_dict={X:train_x,Y:train_y})
                w = sess.run(W)
                b = sess.run(B)
                print(f'epoch:{epoch:04d} c={c:.4f} w={w:.4f} b={b:.4f}')
    

    设计好我们计算图后,就可以开始进行计算了,我们所有计算图都需要放到

    验证结果

        weight = sess.run(W)
        bias = sess.run(B)
        plt.plot(train_x,train_y,'o')
        plt.plot(train_x,weight * train_x + bias)
        plt.show()
    
    train_data.png
    epoch:0000 c=78.2851 w=1.8528 b=1.4544
    epoch:0020 c=7.5476 w=2.8999 b=1.4118
    epoch:0040 c=7.4682 w=2.9079 b=1.2879
    epoch:0060 c=7.3967 w=2.9155 b=1.1703
    epoch:0080 c=7.3324 w=2.9226 b=1.0587
    epoch:0100 c=7.2745 w=2.9295 b=0.9528
    epoch:0120 c=7.2224 w=2.9359 b=0.8522
    epoch:0140 c=7.1755 w=2.9421 b=0.7568
    epoch:0160 c=7.1334 w=2.9479 b=0.6662
    epoch:0180 c=7.0954 w=2.9535 b=0.5802
    

    相关文章

      网友评论

        本文标题:线性回归实例

        本文链接:https://www.haomeiwen.com/subject/xzwtpctx.html