03_linear_regression_sol.py
第三课示例代码笔记
目标
这是一个线性回归的例子,通过输入火灾数量X与盗窃数量Y的数据,用X预测Y。通过这个简单的例子可以窥见TF的数据结构,所以在这里记录一下。
代码分析
先忽略预处理输入数据的步骤不管。
输入数据用placeholder初始化先占位。设name,之后生成graph对应的名字是' '内的内容。
X = tf.placeholder(tf.float32, name='X')
Y = tf.placeholder(tf.float32, name='Y')
网络内部的参数用Variable声明,variable是optimizer可以优化的一类数据。设name,之后生成graph对应的名字是' '内的内容。
w = tf.Variable(0.0, name='weights')
b = tf.Variable(0.0, name='bias
编辑预测模型的公式
Y_predicted = X * w + b
编辑计算loss的公式
loss = tf.square(Y - Y_predicted, name='loss')
初始化优化功能,做梯度下降。
其实到这一步已经把预测模型和loss计算统统打包了。
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.001).minimize(loss)
开始正式计算
with tf.Session() as sess:
#初始化之前的所有variable(w与b)
sess.run(tf.global_variables_initializer())
#写入tensorboard的graph文件
writer = tf.summary.FileWriter('./graphs/linear_reg', sess.graph)
for i in range(50): # 训练50次
total_loss = 0
for x, y in data:
# 正式开始optimizer运算并获取loss数值
#从feed_dict输入数据
_, l = sess.run([optimizer, loss], feed_dict={X: x, Y:y})
total_loss += l
print('Epoch {0}: {1}'.format(i, total_loss/n_samples))
Tensorboard输出的graph
可以在图中找出这两个公式
Y_predicted=X*w+b
loss=(Y-Y_predicted)²
1.png
网友评论