TensorFlow 实现一元线性回归模型
来源:互联网 发布:康佳网络电视售后电话 编辑:程序博客网 时间:2024/04/29 18:31
**
TensorFlow 实现一元线性回归模型
一元线性回归即是将N个随机样本点拟合到一条直线上:
样本点:
样本点可表示为:
我需要拟合出的直线方程可以表示为:
可以通过最小二乘法来求得拟合直线的值,拟合过程就是使得MSEloss的最小值。拟合过程就转化成求以下函数的极值问题。
W就可表示为:
上式需要用所有样本来训练,训练过程也可采用另一种方式,使用随机梯度下降法求得极值,则不用一次入所有样本用于训练,步骤如下:
step0: 给定W ,b初始值,
step1: 随机选取一个样本
step2: 将样本和
step3: 求得
step4: 求得
循环迭代1-4步,使得MSEloss的值小于某个值退出循环。
TensorFlow程序设计:
inference: 先确定线性拟合直线表达式
loss: 制定损失判定标准
train: 将损失函数代入梯度下降节点,n次迭代,获得W,b的权值
evaluate:将权值作用于测试点,计算损失。损失越小,模型越精确。
代码
import osimport tensorflow as tfimport numpy as npimport matplotlib.pyplot as plt#os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'train_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])plt.plot(train_X,train_Y,'ro',label='train points')plt.legend()plt.show()with tf.Graph().as_default(): #input with tf.name_scope('Input'): X = tf.placeholder(tf.float32 , name="X") Y_true = tf.placeholder(tf.float32 , name="Y_true" ) with tf.name_scope('Inference'): #模型参数变量 W = tf.Variable(tf.zeros([1]),name="Weight") b = tf.Variable(tf.zeros([1]),name="Bias") #inference :Y= WX + b Y_pre = tf.add(tf.multiply(X,W),b) with tf.name_scope('Loss'): #loss : Trainloss = tf.reduce_mean(tf.pow(Y_true - Y_pre,2))/2 with tf.name_scope('Train'): #train: optimizer = tf.train.GradientDescentOptimizer(learning_rate = 0.01) TrainOp = optimizer.minimize(Trainloss) with tf.name_scope('Evaluate'): #evaluate: Evaloss = tf.reduce_mean(tf.pow(Y_true - Y_pre,2))/2 InitOp = tf.global_variables_initializer() writer = tf.summary.FileWriter(logdir='logs_1',graph=tf.get_default_graph()) writer.close() print("start session run graph, train start") with tf.Session() as sess: sess.run(InitOp) for step in range(1000): #for tx,ty in zip(train_X,train_Y): # trainOp,trainloss,t_w,t_b = sess.run([TrainOp,Trainloss,W,b],feed_dict={X:tx,Y_true:ty}) trainOp,trainloss,t_w,t_b = sess.run([TrainOp,Trainloss,W,b],feed_dict={X:train_X,Y_true:train_Y}) if((step + 1)%5 == 0): print("step:", (step+1),"train loss:","{:.9f}".format(trainloss),"W=",t_w,"b=",t_b) print("train end") W,b = sess.run([W,b]) print("para mode: W=",W," b=",b) plt.plot(train_X,train_Y,'ro',label='train points') plt.plot(train_X, W * train_X + b,label="Fitted Line") plt.legend() plt.show()
阅读全文
0 0
- TensorFlow 实现一元线性回归模型
- TensorFlow实现一元线性模型
- tensorflow 一元线性回归
- 一元线性回归模型最小二乘法
- 一元线性回归模型与最小二乘法及其C++实现
- 一元线性回归模型与最小二乘法及其C++实现
- 一元线性回归模型与最小二乘法及其C++实现
- 一元线性回归模型与最小二乘法及其C++实现
- 一元线性回归模型与最小二乘法及其C++实现
- 一元线性回归模型与最小二乘法及其C++实现
- 一元线性回归模型与最小二乘法及其C++实现
- TensorFlow学习笔记(二):TensorFlow实现线性回归模型
- Java实现一元线性回归
- tensorflow 实现线性回归
- Tensorflow实现线性回归
- Tensorflow实现线性回归
- TensorFlow实现线性回归
- 学习TensorFlow,线性回归模型
- 关于将build 后发布到hololens时,“error MSB3073..已退出,代码为1“
- leetcode 007 Reverse Integer
- 关于持续集成,质量管理,工具等
- 封装函数轮播图多页面使用
- response入门
- TensorFlow 实现一元线性回归模型
- CodeForces
- UI游戏框架(三)
- JAVA 内部类创建及使用
- linux c 运算符 表达式
- Vue2.0 爬坑问题集锦
- 数字货币使用区块链开发技术由浅入深指南
- 爬虫技术
- Linux下matlab打开出现error starting desktop启动桌面时错误