Tensorflow进阶------tensorflow实现一个简单的线性回归案例

 

"""tensorflow实现一个简单的线性回归案例"""

def myregression():
    """
    自定义一个线性回归
    :return: None
    """

    # 1.准备数据,x 特征值[100,1] y 目标值[100]
    x=tf.random_normal([100,1],mean=1.75,stddev=0.5,name='x_data')

    #矩阵相乘必须是二维的
    y_true=tf.matmul(x,[[0.7]])+0.8

    #2.建立线性回归模型,1个特征,1个权重,一个偏置y= x w+b
    #随机给一个权重和偏置,让他去计算损失,然后在当前状态下优化
    #用变量定义才能优化
    weight=tf.Variable(tf.random_normal([1,1],mean=0.0,stddev=1.0),name='w')
    bias=tf.Variable(0.0,name='b')

    y_predict=tf.matmul(x,weight)+bias

    #3.建立损失函数,计算均方误差
    loss=tf.reduce_mean(tf.square(y_predict-y_true))

    #4梯度下降优化损失
    train_op=tf.train.GradientDescentOptimizer(0.1).minimize(loss)

    #定义一个初始化变量op
    init_op=tf.global_variables_initializer()

    #通过会话运行程序
    with tf.Session() as sess:
        #初始化变量
        sess.run(init_op)

        #打印随机最先初始化的权重和偏置
        print('随机初始化的参数权重为:%f,偏置为:%f'%(weight.eval(),bias.eval()))

        #循环训练
        for i in range(100):
            sess.run(train_op)

            print('参数权重为:%f,偏置为:%f'%(weight.eval(),bias.eval()))

    return None

if __name__=='__main__':
    myregression()

 

"""tensorflow实现一个简单的线性回归案例"""

def myregression():
    """
    自定义一个线性回归
    :return: None
    """
    with tf.variable_scope('data'):
        # 1.准备数据,x 特征值[100,1] y 目标值[100]
        x=tf.random_normal([100,1],mean=1.75,stddev=0.5,name='x_data')

        #矩阵相乘必须是二维的
        y_true=tf.matmul(x,[[0.7]])+0.8

    with tf.variable_scope('model'):
        #2.建立线性回归模型,1个特征,1个权重,一个偏置y= x w+b
        #随机给一个权重和偏置,让他去计算损失,然后在当前状态下优化
        #用变量定义才能优化
        weight=tf.Variable(tf.random_normal([1,1],mean=0.0,stddev=1.0),name='w')
        bias=tf.Variable(0.0,name='b')

        y_predict=tf.matmul(x,weight)+bias

    with tf.variable_scope('loss'):
        #3.建立损失函数,计算均方误差
        loss=tf.reduce_mean(tf.square(y_predict-y_true))

    with tf.variable_scope('optimizer'):
        #4梯度下降优化损失
        train_op=tf.train.GradientDescentOptimizer(0.1).minimize(loss)

    #定义一个初始化变量op
    init_op=tf.global_variables_initializer()

    #通过会话运行程序
    with tf.Session() as sess:
        #初始化变量
        sess.run(init_op)

        #打印随机最先初始化的权重和偏置
        print('随机初始化的参数权重为:%f,偏置为:%f'%(weight.eval(),bias.eval()))


        #建立事件文件
        filewriter=tf.summary.FileWriter('./tem/',graph=sess.graph)
        #循环训练
        for i in range(100):
            sess.run(train_op)

            print('参数权重为:%f,偏置为:%f'%(weight.eval(),bias.eval()))

    return None

if __name__=='__main__':
    myregression()

def myregression():
    """
    自定义一个线性回归
    :return: None
    """
    with tf.variable_scope('data'):
        # 1.准备数据,x 特征值[100,1] y 目标值[100]
        x=tf.random_normal([100,1],mean=1.75,stddev=0.5,name='x_data')

        #矩阵相乘必须是二维的
        y_true=tf.matmul(x,[[0.7]])+0.8

    with tf.variable_scope('model'):
        #2.建立线性回归模型,1个特征,1个权重,一个偏置y= x w+b
        #随机给一个权重和偏置,让他去计算损失,然后在当前状态下优化
        #用变量定义才能优化
        weight=tf.Variable(tf.random_normal([1,1],mean=0.0,stddev=1.0),name='w')
        bias=tf.Variable(0.0,name='b')

        y_predict=tf.matmul(x,weight)+bias

    with tf.variable_scope('loss'):
        #3.建立损失函数,计算均方误差
        loss=tf.reduce_mean(tf.square(y_predict-y_true))

    with tf.variable_scope('optimizer'):
        #4梯度下降优化损失
        train_op=tf.train.GradientDescentOptimizer(0.1).minimize(loss)

    #1.收集tensor
    tf.summary.scalar('losses',loss)
    tf.summary.histogram('weights',weight)

    #定义合并tensor的op
    merged=tf.summary.merge_all()

    #定义一个初始化变量op
    init_op=tf.global_variables_initializer()

    # 定义一个保存模型的实例
    saver = tf.train.Saver()

    #通过会话运行程序
    with tf.Session() as sess:
        #初始化变量
        sess.run(init_op)

        #打印随机最先初始化的权重和偏置
        print('随机初始化的参数权重为:%f,偏置为:%f'%(weight.eval(),bias.eval()))


        #建立事件文件
        filewriter=tf.summary.FileWriter('./tem/',graph=sess.graph)

        #加载模型,覆盖模型当中随机定义的参数,从上次训练的参数结果开始
        if os.path.exists('./tem/ckpt/checkpoint'):
            saver.restore(sess,'./tem/ckpt/model')

        #循环训练
        for i in range(100):
            sess.run(train_op)

            #运行合并的tensor
            summary=sess.run(merged)
            filewriter.add_summary(summary,i)

            print('参数权重为:%f,偏置为:%f'%(weight.eval(),bias.eval()))
        saver.save(sess,'./tem/ckpt/model')
    return None

if __name__=='__main__':
    myregression()

猜你喜欢

转载自blog.csdn.net/qq_35654080/article/details/88853172
今日推荐