深度学习-使用Tensorflow模拟线性回归

基本过程为:随机创建数据点(根据某条直线波动),然后动过训练,看是否最终得出的直线方程是否是一开始使用的那个。

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

os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'  # 1是默认的显示等级,显示所有信息,2显示 warning 和 Error ,3只显示 Error

num_points = 1000
vectories_set = []
for i in range(num_points):
    x1 = np.random.normal(0.0, 0.55)  # 高斯分布,随机初始化,以0为均值,以0.55为标准差
    y1 = x1 * 0.1 + 0.3 + np.random.normal(0.0, 0.03)  # y=w*x+b的基础上,加一个小范围的浮动,高斯分布,以0.0为均值,0.03为标准差
    vectories_set.append([x1, y1])
x_data = [v[0] for v in vectories_set]
y_data = [v[1] for v in vectories_set]

w = tf.Variable(tf.random.uniform([1], -1.0, 1.0), name="w")  # 生成1维矩阵,取值是[-1,1]之间的随机数
b = tf.Variable(tf.zeros([1]), name="b")  # 生成1维德b矩阵,初始值是0
y = w * x_data + b  # 经计算得出预估值
loss = tf.reduce_mean(tf.square(y - y_data), name="loss")  # 以预估值y和实际值y_data之间的均方误差作为损失,square为求平方项
optimize = tf.compat.v1.train.GradientDescentOptimizer(0.5)  # 采用梯度下降法来优化参数,学习率为0.5
train = optimize.minimize(loss, name="train")  # 训练的过程就是最小化这个误差值
sess = tf.compat.v1.Session()
init = tf.compat.v1.global_variables_initializer()
sess.run(init)
print("w=", sess.run(w), "b=", sess.run(b), "loss=", sess.run(loss))
for step in range(20):  # 执行20次训练
    sess.run(train)
    print("w=", sess.run(w), "b=", sess.run(b), "loss=", sess.run(loss))  # 输出训练好的w和b

plt.scatter(x_data, y_data, c="r")
plt.plot(x_data, sess.run(w) * x_data + sess.run(b))
plt.show()

深度学习-使用Tensorflow模拟线性回归

不太喜欢Tensorflow这种风格,感觉好乱。师姐让我学Pytorch,听说这个和python相近,Tensorflow要先放放了。

 

上一篇:20210528 TensorFlow 的基本用法


下一篇:tensorflow 迭代周期长,每个epoch时间变慢