如何用TensorFlow实现线性回归

环境Anaconda

废话不多说,关键看代码

import tensorflow as tf
import os
os.environ[‘TF_CPP_MIN_LOG_LEVEL‘]=‘2‘

tf.app.flags.DEFINE_integer("max_step", 300, "训练模型的步数")
FLAGS = tf.app.flags.FLAGS

def linear_regression():
    ‘‘‘
    自实现线性回归
    :return:
    ‘‘‘
    #1.准备100个样本 特征值X,目标值y_true

    with tf.variable_scope("original_data"):
        #mean是平均值
        #stddev代表方差
        X = tf.random_normal(shape=(100,1),mean=0,stddev=1)

        y_true = tf.matmul(X,[[0.8]])+0.7

    #2.建立线性模型:
    with tf.variable_scope("linear_model"):
        weigh = tf.Variable(initial_value=tf.random_normal(shape=(1,1)))
        bias = tf.Variable(initial_value=tf.random_normal(shape=(1,1)))

        y_predict = tf.matmul(X,weigh)+bias

    # 3 确定损失函数
    #均方误差((y-y_repdict)^2)/m = 平均每一个样本的误差
    with tf.variable_scope("loss"):
        error = tf.reduce_mean(tf.square(y_predict-y_true))

    #4梯度下降优化损失:需要指定学习率
    with tf.variable_scope("gd_optimizer"):
        optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01).minimize(error)

    #收集变量
    tf.summary.scalar("error",error)
    tf.summary.histogram("weights",weigh)
    tf.summary.histogram("bias",bias)

    #合并变量
    merge = tf.summary.merge_all()

    #初始化变量
    init = tf.global_variables_initializer()

    #创建一个saver
    saver = tf.train.Saver()
    #开启会话进行训练
    with tf.Session() as sess:
        #初始化变量op
        sess.run(init)
        print("随机初始化的权重为{},偏执为{}".format(weigh.eval(),bias.eval()))

        # print(weigh.eval(), bias.eval())
        # saver.restore(sess,"./checkpoint/linearregression")
        # print(weigh.eval(),bias.eval())
        #创建文件事件
        file_writer = tf.summary.FileWriter(logdir="./",graph=sess.graph)
        #训练模型

        for i in range(FLAGS.max_step):
            sess.run(optimizer)
            summary = sess.run(merge)
            file_writer.add_summary(summary,i)
            print("第{}步的误差为{},权重为{},偏执为{}".format(i,error.eval(),weigh.eval(),bias.eval()))
            #checkpoint:检查点文件
            #tf.keras:h5
            # saver.save(sess,"./checkpoint/linearregression")

if __name__ == ‘__main__‘:
    linear_regression()

  部分结果输出:

第294步的误差为7.031372661003843e-06,权重为[[0.7978232]],偏执为[[0.69850117]]
第295步的误差为5.66376502320054e-06,权重为[[0.7978593]],偏执为[[0.6985256]]
第296步的误差为5.646746103593614e-06,权重为[[0.7978932]],偏执为[[0.698556]]
第297步的误差为5.33674938196782e-06,权重为[[0.7979515]],偏执为[[0.69858944]]
第298步的误差为5.233380761637818e-06,权重为[[0.79799336]],偏执为[[0.6986183]]
第299步的误差为5.024347956350539e-06,权重为[[0.7980382]],偏执为[[0.6986382]]

  

原文地址:https://www.cnblogs.com/LiuXinyu12378/p/11366803.html

时间: 2024-10-29 15:48:33

如何用TensorFlow实现线性回归的相关文章

从原理到代码:大牛教你如何用 TensorFlow 亲手搭建一套图像识别模块 | AI 研习社

从原理到代码:大牛教你如何用 TensorFlow 亲手搭建一套图像识别模块 | AI 研习社 PPT链接: https://pan.baidu.com/s/1i5Jrr1N 视频链接: https://v.qq.com/x/page/n0386utnrb0.html?start=492

tensorflow 学习1——tensorflow 做线性回归

1. 首先 Numpy: Numpy是Python的科学计算库,提供矩阵运算. 想想list已经提供了矩阵的形式,为啥要用Numpy,因为numpy提供了更多的函数. 使用numpy,首先要导入numpy: import numpy as np 使用numpy创建数组以list 或tuple作为参数: np.array([1,2,3,4]) np.array((1.2,2,3,4)) 使用numpy可以指定数据类型: numpy.int32, numpy.int16, numpy.float64

TensorFlow 实现线性回归

1.生成高斯分布的随机数 导入numpy模块,通过numpy模块内的方法生成一组在方程 y = 2 * x + 3 周围小幅波动的随机坐标.代码如下: 1 import numpy as np 2 import matplotlib.pyplot as plot 3 4 5 def getRandomPoints(count): 6 xList = [] 7 yList = [] 8 for i in range(count): 9 x = np.random.normal(0, 0.5) 10

tensorflow训练线性回归模型

完整代码 import tensorflow as tf import matplotlib.pyplot as plt import numpy as np #样本数据 x_train = np.linspace(-1,1,300)[:,np.newaxis] noise = np.random.normal(0, 0.1, x_train.shape) y_train = x_train * 3 + noise + 0.8 #线性模型 W = tf.Variable([0.1],dtype

自学tensorflow——2.使用tensorflow计算线性回归模型

废话不多说,直接开始 1.首先,导入所需的模块: import numpy as np import os import tensorflow as tf 关闭tensorflow输出的一大堆硬件信息 os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' 2.写一个函数generate_data(),用来生成我们所需要的数据,这里使用的线性函数是y = 0.1*x + 0.3,具体解释见注释 def generate_data():#随机生成测试数据 num_poin

tensorflow版线性回归

import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' import tensorflow as tf def linearregression(): X = tf.random_normal([100,1],mean=0.0,stddev=1.0) y_true = tf.matmul(X,[[0.8]]) + [[0.7]] weights = tf.Variable(initial_value=tf.random_normal([1,1]))

如何用TensorFlow图像处理函数裁剪图像?

当给定大量不同质量的训练数据时,CNN往往能够很好地工作. –图像能够通过可视化的方式,传达复杂场景所蕴含的某种目标主题. –在Stanford Dogs数据集中,重要的是图像能够以可视化的方式,突出图片中狗的重要性. –一幅狗位于画面中心的图像,会被认为比狗作为背景的图像更有价值. 并非所有数据集都拥有最有价值的图像.下面所示的两幅图像,按照假设,该数据集本应突出不同的狗的品种 左图突出的是一条典型的墨西哥无毛犬的重要属性,而右图是两个参加聚会的人,在逗一条墨西哥无毛犬.右图中充斥了大量的无关

TensorFlow入门:线性回归

随机.mini-batch.batch(见最后解释) 在每个 epoch 送入单个数据点.这被称为随机梯度下降(stochastic gradient descent).我们也可以在每个 epoch 送入一堆数据点,这被称为 mini-batch 梯度下降,或者甚至在一个 epoch 一次性送入所有的数据点,这被称为 batch 梯度下降. 转自:https://cloud.tencent.com/developer/article/1004866 TensorFlow基本使用 TensorFl

tensorflow入门(1):构造线性回归模型

今天让我们一起来学习如何用TF实现线性回归模型.所谓线性回归模型就是y = W * x + b的形式的表达式拟合的模型. 我们先假设一条直线为 y = 0.1x + 0.3,即W = 0.1,b = 0.3,然后利用随机数在这条直线附近产生1000个随机点,然后利用tensorflow构造的线性模型去学习,最后对比模型所得的W和b与真实值的差距即可. (某天在浏览Github的时候,发现了一个好东西,Github上有一个比较好的有关tensorflow的Demo合集,有注释有源代码非常适合新手入