ts线性回归

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
import datetime


#获取 -1,1之间的 100 个随时数
train_X = np.linspace(-1,1,100)

#y = 2 * X + a * 0.3 a 属于 【-1,1】 之间的随机数
train_Y = 2 * train_X + np.random.random(*train_X.shape) * 0.3

#plt.plot(train_X,train_Y,'ro',label = 'Original data')
#plt.legend()
#plt.show()

star_time = datetime.datetime.now()


#创建模型
#--------------正向搭建模型--------------------
#占位符
#X和Y:为占位符,使用了placeholder函数进行定义。一个代表x的输入,一个代表对应真实值y。
X = tf.placeholder("float")
Y = tf.placeholder("float")


#模型参数
# w 为模型权重,b为偏执值
# W被初始化为[-1,1]的随机数,b初始化为0。
#tf.Variable 为定义变量
W = tf.Variable(tf.random_normal([1]),name="weight")
b = tf.Variable(tf.zeros([1]),name="bias")

#向前结构
#tf.multiply 表示定义两个数进行相乘 结果加上b等于z
z = tf.multiply(X,W)+ b


#--------------反向搭建模型--------------------

#反向优化
#这里的损失函数等于生成值与真实值的平方差
cost = tf.reduce_mean(tf.square(Y-z))

#给学习率η传入参数
#值越大,调整速度越大,但不精确
#值越小,调整速度越小,但精确
learing_rate = 0.01

#梯度下降
#GradientDescentOptimizer 封装好的梯度下降方法,传入学习率和损失函数
optimizer = tf.train.GradientDescentOptimizer(learing_rate).minimize(cost)


#迭代训练模型


#------------迭代训练模型------------
#1、先进行初始化所有变量
#2、设置训练迭代的次数
#3、启动session开始运行任务

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

#设置参数
training_epochs = 20
display_step = 2


#启动session
with tf.Session() as sess:
    sess.run(init)
    #存放批次值和损失值
    plotdata={"batchsize":[],"loss":[]}
    #向模型输入数据
    for epoch in range(training_epochs):
        for (x,y) in zip (train_X,train_Y):
            sess.run(optimizer,feed_dict={X:x,Y:y})

            #显示训练中的详细信息
        if epoch % display_step ==0:
            loss = sess.run(cost,feed_dict={X:train_X,Y:train_Y})
            print("Epoch:", epoch + 1, "cost=", loss, "W=", sess.run(W), "b=", sess.run(b))
            if not (loss=="NA"):
                plotdata["batchsize"].append(epoch)
                plotdata["loss"].append(epoch)

    print("Finishd")
    print("cost=",sess.run(cost,feed_dict={X:train_X,Y:train_Y}),
          "W=",sess.run(W),"b=",sess.run(b))


end_time = (datetime.datetime.now()-star_time)
print("一共花费时间为:"+str(end_time))


Epoch: 1 cost= 0.10799 W= [ 1.48621941] b= [ 0.28674421]
Epoch: 3 cost= 0.0153496 W= [ 1.85399914] b= [ 0.20614058]
Epoch: 5 cost= 0.00763554 W= [ 1.95568049] b= [ 0.16813947]
Epoch: 7 cost= 0.00725381 W= [ 1.98208296] b= [ 0.15802477]
Epoch: 9 cost= 0.00726556 W= [ 1.98891127] b= [ 0.15540481]
Epoch: 11 cost= 0.007276 W= [ 1.99067724] b= [ 0.1547271]
Epoch: 13 cost= 0.00727919 W= [ 1.99113417] b= [ 0.15455176]
Epoch: 15 cost= 0.00728005 W= [ 1.99125183] b= [ 0.15450659]
Epoch: 17 cost= 0.00728028 W= [ 1.99128294] b= [ 0.15449472]
Epoch: 19 cost= 0.00728033 W= [ 1.99128997] b= [ 0.15449189]
Finishd
cost= 0.00728034 W= [ 1.9912914] b= [ 0.15449135]
一共花费时间为:0:00:01.784181

你可能感兴趣的:(个人日记)