Tensorflow学习(一)--使用TensorFlow实现线性回归
来源:互联网 发布:淘宝美工用什么软件 编辑:程序博客网 时间:2024/06/05 18:06
本博客仅为作者记录笔记之用,不免有很多细节不对之处。还望各位看官能够见谅,欢迎批评指正。
最近发现自己都没有真正好好学习过TensorFlow,只是看看别人project的代码,然后能跑起来就行,实际自己想要去搭建一些网络还是很困难,因此准备写一个使用TensorFlow实现一些网络的系列。这是第一篇,因此就从最简单的线性回归开始。
首先简单介绍一下线性回归。线性回归的表达式为:
其中w为权重,b为偏移量。
定义线性回归的损失函数:
主要是通过梯度下降法,不断的去更新权重w,b,来最小化损失函数。
首先我们需要导入TensorFlow、numpy以及matplotlib这三个库
import tensorflow as tfimport numpy as npimport matplotlib.pyplot as pltrng = np.random
设置模型的参数,定义学习率、模型的迭代次数以及迭代多少次计算一次模型损失
# Parameterslearning_rate = 0.01training_epochs = 5000display_step = 50
定义输入数据 X , Y以及样本个数n
# Training Datatrain_X = np.asarray([3.3, 4.4, 5.5, 6.71, 6.93, 4.168, 9.779, 6.182, 7.59, 2.167, 7.042, 10.791, 5.313, 7.997, 5.654, 9.27, 3.1])train_Y = np.asarray([1.7, 2.76, 2.09, 3.19, 1.694, 1.573, 3.366, 2.596, 2.53, 1.221, 2.827, 3.465, 1.65, 2.904, 2.42, 2.94, 1.3])n_samples = train_X.shape[0]
初始化模型的输入输出变量以及定义模型的权重系数和偏移量
# tf Graph InputX = tf.placeholder(tf.float32)Y = tf.placeholder(tf.float32)# Set model weightsW = tf.Variable(rng.randn(), name="weight")b = tf.Variable(rng.randn(), name="bias")
定义线性模型,使用均方误差作为模型的训练误差。优化训练误差的方法为梯度下降
# Construct a linear modelpred = tf.add(tf.multiply(X, W), b)# Mean squared errorcost = tf.reduce_sum(tf.pow(pred-Y, 2))/(2*n_samples)# Gradient descent# Note, minimize() knows to modify W and b because Variable objects are trainable=True by defaultoptimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)# Initialize the variables (i.e. assign their default value)init = tf.global_variables_initializer()
准备工作都做好之后,我们就可以开始进行训练线性模型了。
# 开始训练with tf.Session() as sess: # 执行初始化操作 sess.run(init) # 拟合模型数据 for epoch in range(training_epochs): for (x, y) in zip(train_X, train_Y): sess.run(optimizer, feed_dict={X: x, Y: y}) # 每50次迭代后在控制台输出模型当前训练的loss以及权重大小 if (epoch+1) % display_step == 0: c = sess.run(cost, feed_dict={X: train_X, Y:train_Y}) print("Epoch:", '%04d' % (epoch+1), "cost=", "{:.9f}".format(c), \ "W=", sess.run(W), "b=", sess.run(b)) print("Optimization Finished!") training_cost = sess.run(cost, feed_dict={X: train_X, Y: train_Y}) print("Training cost=", training_cost, "W=", sess.run(W), "b=", sess.run(b), '\n') # 画出拟合图像 plt.plot(train_X, train_Y, 'ro', label='Original data') plt.plot(train_X, sess.run(W) * train_X + sess.run(b), label='Fitted line') plt.legend() plt.show()
得到最后的模型损失和参数值
画出拟合直线与数据点的图如下所示:
得到模型之后,我们将模型在测试数据上进行测试。
# 创建测试数据 test_X = np.asarray([6.83, 4.668, 8.9, 7.91, 5.7, 8.7, 3.1, 2.1]) test_Y = np.asarray([1.84, 2.273, 3.2, 2.831, 2.92, 3.24, 1.35, 1.03]) print("Testing... (Mean square loss Comparison)") testing_cost = sess.run( tf.reduce_sum(tf.pow(pred - Y, 2)) / (2 * test_X.shape[0]), feed_dict={X: test_X, Y: test_Y}) # same function as cost above print("Testing cost=", testing_cost) print("Absolute mean square loss difference:", abs( training_cost - testing_cost)) plt.plot(test_X, test_Y, 'bo', label='Testing data') plt.plot(train_X, sess.run(W) * train_X + sess.run(b), label='Fitted line') plt.legend() plt.show()
得到图像如下所示:
最后附上实现完整代码的GitHub仓库,欢迎各位看官star和fork~~~~
阅读全文
0 0
- Tensorflow学习(一)--使用TensorFlow实现线性回归
- TensorFlow学习笔记(二):TensorFlow实现线性回归模型
- Tensorflow学习笔记(一):初识TensorFlow——实现线性回归
- tensorflow 实现线性回归
- Tensorflow实现线性回归
- Tensorflow实现线性回归
- TensorFlow实现线性回归
- tensorflow tutorials(一):用tensorflow建立线性回归模型
- 学习TensorFlow,线性回归模型
- TensorFlow学习笔记--线性回归
- Tensorflow学习:线性回归问题
- 使用TensorFlow进行线性回归
- 线性回归(linear_regression),多项式回归(polynomial regression)(Tensorflow实现)
- TensorFlow学习笔记【一】Helloworld,简单计算,线性回归
- 使用TensorFlow实现简单的线性回归(LinearRegression)
- [深度学习] (2):实现简单的线性回归(使用TensorFlow优化)
- 【TensorFlow】TensorFlow的线性回归
- TensorFlow学习笔记(三):TensorFlow实现逻辑回归模型
- 设计模式——外观模式和备忘录模式
- org.apache.velocity 简介
- oracle 中的sql函数(一)
- C#回顾学习笔记二十一:面向对象的继承特征
- span设置内外边距问题
- Tensorflow学习(一)--使用TensorFlow实现线性回归
- jquery 获取radio的值
- Java小类型向大类型转换
- Skills of debugging model
- JVM调优总结(一)-- 一些概念
- HTC会不会成为下一个摩托罗拉呢?
- tomcat web应用通过log4j生成日志权限控制
- 外边距合并问题
- 线程池