tensorflow入门01——搭建简单的线性回归模型

这两天跟着老师发的视频开始入门深度学习,虽然之前有过一段时间的接触,但并没有什么有效的进展,现在算是正式开始整了,希望可以通过这一个多月的寒假有所收获吧。

·Tensorflow是一种计算图模型,即用图的形式来表示运算过程的一种模型。Tensorflow程序一般分为图的构建和图的执行两个阶段。图的构建阶段也称为图的定义阶段,该过程会在图模型中定义所需的运算,每次运算的的结果以及原始的输入数据都可称为一个节点。

·线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。其表达形式为y = w'x+e,e为误差服从均值为0的正态分布。 回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。

下面用tensorflow搭建了一个简单的线性回归模型。

import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
import numpy as np
import matplotlib.pyplot as plt
import os
os.environ["CUDA_VISIBLE_DEVICES"]="0"
#训练参数
learn_rate=0.1
training_epochs=200
display_step=50

train_x=[]
train_y=[]

#生成训练数据
for i in range(training_epochs):
    x=np.random.normal(0.0,0.55)
    y=0.3*x+2+np.random.normal(0.0,0.05)
    train_x.append(x)
    train_y.append(y)

train_x=np.asarray(train_x)
train_y=np.asarray(train_y)
n_samples=train_x.shape[0]

#初始权重
w=tf.Variable(np.random.randn(),name="weight")
b=tf.Variable(np.random.randn(),name="bias")

#构造线性回归模型
pred=w*train_x+b

#lost
lost=tf.reduce_sum(tf.pow(pred-train_y,2))/(2*n_samples)

#tf自带的梯度下降算法
optimizer=tf.train.GradientDescentOptimizer(learn_rate).minimize(lost)

#初始化
init=tf.global_variables_initializer()

#创建tfsession
with tf.Session() as sess:
    sess.run(init)

    #开始训练
    for epoch in range(training_epochs):
            sess.run(optimizer)
            print("cost=", sess.run(lost), "W=", sess.run(w), "b=", sess.run(b))

    train_lost=sess.run(lost)
    print("cost=",train_lost,"W=",sess.run(w),"b=",sess.run(b))

    plt.plot(train_x,train_y,'ro')
    plt.plot(train_x,sess.run(w)*train_x+sess.run(b))
    plt.legend()
    plt.show()

 

posted @ 2021-01-07 16:44  XiaoGao128  阅读(226)  评论(0编辑  收藏  举报