import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
随机生成1000个点在直线 y=0.1x+0.3周围
num_point = 1000
vector_set = []
for i in range(num_point):
# 0为均值0.55为标准差
x = np.random.normal(0, 0.55)
y = x * 0.1 +0.3 + np.random.normal(0, 0.03)
vector_set.append([x, y])
生成一些样本点 如何理解这个公式 将一个矩阵中数据取出来
x_data = [v[0] for v in vector_set]
x_data = []
for i in vector_set:
x_data.append(i[0])
y_data = [v[1] for v in vector_set]
plt.scatter(x_data, y_data,c=‘r’)
plt.show()
对上面的数据建立模型
只有一个输入 x 对应一个 w值 对应一个 b值
w = tf.Variable(tf.random_uniform([1],-1, 1), name=“w”)
生成偏置值b
b = tf.Variable(tf.zeros([1]), name=‘b’)
y = w * x_data + b
损失值是不是要计算,预测值减去样本值的平均 均方误差
loss = tf.reduce_mean(tf.square(y - y_data),name=‘loss’)
如何优化我们的参数 梯度下降? GradientDescentOptimizer 渐变下降优化器
optimizer = tf.train.GradientDescentOptimizer(0.5)
最小化均方误差
train = optimizer.minimize(loss, name=‘train’)
sess = tf.Session()
初始化所有的tensor
init = tf.global_variables_initializer()
sess.run(init)
初始化过程
print(“w=”,sess.run(w), “b=”,sess.run(b), "loss= ",sess.run(loss))
优化步长设计
for step in range(20):
sess.run(train)
print(“w=”, sess.run(w), “b=”, sess.run(b), "loss= ", sess.run(loss))
plt.scatter(x_data,y_data,c=‘r’)
plt.plot(x_data,sess.run(w)*x_data+sess.run(b))
plt.show()
这样只能得到一个点吧 y1
y1 = sess.run(w) * x_data + sess.run(b)
plt.plot(x_data, y1,c=‘g’)
plt.show()