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

本文介绍了一个使用TensorFlow实现的简单线性回归案例。通过随机生成数据集并利用梯度下降法进行模型训练,最终得到最优的权重和偏置。文中详细展示了如何构建模型、定义损失函数及优化过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

"""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()

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值