用 TensorFlow 训练线性模型拟合一条直线的例子
作者:互联网
这个案例,重在通过分析代码入门 TensorFlow
文章目录
一、代码分析
- 创建数据:
import tensorflow as tf
import numpy as np
# 创建 100 个 float32 类型的小数,作为训练数据
x_data = np.random.rand(100).astype(np.float32)
y_data = x_data * 0.1 + 0.3
这里使用 numpy 来创建我们的数据
这里可以把 y_data = x_data * 0.1 + 0.3
想象成 y_data = x * Weights + biases
然后神经网络通过训练,学着将 Weights 变成 0.1 ,biases 变成 0.3
- 搭建模型:
# 由于0.1是1维,所以这里指定 Weights 是一维,初始值为 -1 到 1 的范围
Weights = tf.Variable(tf.random_uniform([1],-1.0,1.0))
# biases初始值 设为 0
biases = tf.Variable(tf.zeros([1]))
y = Weights*x_data + biases
- 计算误差,使用 均方误差函数
loss = tf.reduce_mean(tf.square(y - y_data))
# 误差的传递方法,采用梯度下降法,指定 learning rate 为 0.5
optimizer = tf.train.GradientDescentOptimizer(0.5)
# 使用 optimizer 来传递反向误差,通过不断训练,不断降低反向误差的值
train = optimizer.minimize(loss)
- 初始化 神经网络的结构
init = tf.global_variables_initializer()
建立了神经网络后,还没有使用这个结构,使用之前,必须先初始化所有之前定义的 Variable
5.创建会话 Session
sess = tf.Session()
sess.run(init) # 至关重要
这里我先创建 Session ,然后使用 Session 来执行 init 初始化步骤
- 通过训练数据,提高神经网络的预测准确性
for step in range(201):
sess.run(train)
if step % 20 ==0:
print(step,sess.run(Weights),sess.run(biases))
二、完整代码
import tensorflow as tf
import numpy as np
# create data
x_data = np.random.rand(100).astype(np.float32)
y_data = x_data * 0.1 + 0.3
# create tensorflow structure start
# tf.random_uniform 随机均匀分布
Weights = tf.Variable(tf.random_uniform([1],-1.0,1.0)) # 1维,初始值是 -1 到 1 的范围
biases = tf.Variable(tf.zeros([1])) # 初始值是0
y = Weights*x_data + biases
loss = tf.reduce_mean(tf.square(y - y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)
for step in range(201):
sess.run(train)
if step % 20 ==0:
print(step,sess.run(Weights),sess.run(biases))
运行结果:
标签:sess,run,tf,Weights,biases,拟合,线性,TensorFlow,data 来源: https://blog.csdn.net/nanhuaibeian/article/details/100585202