windows10 tensorflow(二)原理实战之回归分析,深度学习框架(梯度下降法求解回归参数)

windows10 tensorflow(二)原理实战之回归分析,深度学习框架(梯度下降法求解回归参数) TF数据生成方式:参考TF数据生成12法 TF基本原理与概念理解: tensorflow(一)windows 10 64位安装tensorflow1.4与基本概念解读tf.global_variables_initializer

模型:

一个简单的线性回归y = W * x + b,采用numpy构建完整回归数据,并增加干扰噪声

import numpy as np
#建立一个一元线性回归方程y=0.1x1+0.3  ,同时一个正太分布偏差np.random.normal(0.0,0.03)用于见证TF的算法
num_points=1000
vectors_set=[]
for  i in  range(num_points):
    x1=np.random.normal(loc=0.0,scale=0.66)
    y1=x1*0.1+0.3+np.random.normal(0.0,0.03)
    vectors_set.append([x1,y1])
x_data=[v[0] for v in vectors_set]
y_data=[v[1] for v in vectors_set]

Graphic display出数据分布结果

import matplotlib.pyplot as plt
#https://www.cnblogs.com/zqiguoshang/p/5744563.html
##line_styles=['ro-','b^-','gs-','ro--','b^--','gs--']  #set line style
plt.plot(x_data,y_data,'ro',marker='^',c='blue',label='original_data')
plt.legend()
plt.show()

通过TensorFlow代码找到最佳的参数W与b,使的输入数据x_data,生成输出数据y_data,本例中将会一条直线y_data=W*x_data+b。读者知道W会接近0.1,b接近0.3,但是TensorFlow并不知道,它需要自己来计算得到该值。因此采用梯度下降法来迭代求解数据

import tensorflow as tf
import math
#一、创建graph数据
#随便构建一个一元回归方程的参数W与b
W=tf.Variable(tf.random_uniform([1], minval=-1.0, maxval=1.0))
b=tf.Variable(tf.zeros([1]))
y=W*x_data+b

#定义下面的最小化方差
#1.定义最小化误差平方根
loss=tf.reduce_mean(tf.square(y-y_data))
#2.learning_rate=0.5
optimizer=tf.train.GradientDescentOptimizer(learning_rate=0.5)
#3.最优化最小值
train=optimizer.minimize(loss)

#二、初始化变量
init=tf.global_variables_initializer()

#三、启动graph
sess=tf.Session()
sess.run(init)

for step in range(8):
    sess.run(train)
    print("step={},sess.run=(W)={},sess.run(b)={}".format(step,sess.run(W),sess.run(b)))

以下是迭代8次的结果。梯度就像一个指南针,指引我们朝着最小的方向前进。为了计算梯度,TensorFlow会对错误函数求导,在我们的例子中就是,算法需要对W和b计算部分导数,以在每次迭代中为前进指明方向。

下面是每次迭代的可视化效果图:

#Graphic display
    # print(sub_1+'41')
    #注意:各参数可以用逗号,分隔开。第一个参数代表子图的行数;第二个参数代表该行图像的列数; 第三个参数代表每行的第几个图像,从左致右,从上到下一次增加。
    plt.subplot(4,2,step+1)
    plt.plot(x_data,y_data,'ro')   
    plt.plot(x_data,sess.run(W)*x_data+
    sess.run(b),label=step)
    plt.legend()
plt.show()

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Petrichor的专栏

深度学习: Non-Maximum Supression (非极大值抑制)

由 论文可见,在 Faster R-CNN 中,NMS算法被放在RPN网络的末段,用于 协助 剔除低得分的anchor:

40320
来自专栏机器学习算法与Python学习

TensorFlow实战:CNN构建MNIST识别(Python完整源码)

在文章(TensorFlow实战:SoftMax手写体MNIST识别(Python完整源码))中,我们MNIST手写体识别数据集,使用TensorFlow构建了...

1.7K90
来自专栏文武兼修ing——机器学习与IC设计

基于sklearn的线性支持向量机分类器原理代码实现

原理 分类器 机器学习的分类器,均可以看成一个或一组超平面,将label不同的数据点在数据空间中分开。对于线性可分问题,属于相同label的数据点在数据空间中可...

43090
来自专栏AI研习社

如何找到最优学习率?

经过了大量炼丹的同学都知道,超参数是一个非常玄乎的东西,比如batch size,学习率等,这些东西的设定并没有什么规律和原因,论文中设定的超参数一般都是靠经验...

449100
来自专栏懒人开发

(6.1)James Stewart Calculus 5th Edition:Areas between Curves

9330
来自专栏PPV课数据科学社区

译:支持向量机(SVM)及其参数调整的简单教程(Python和R)

一、介绍 数据分类是机器学习中非常重要的任务。支持向量机(SVM)广泛应用于模式分类和非线性回归领域。 SVM算法的原始形式由Vladimir N.Vapnik...

81280
来自专栏素质云笔记

微调︱caffe中fine-tuning模型三重天(函数详解、框架简述)+微调技巧

本文主要参考caffe官方文档[《Fine-tuning a Pretrained Network for Style Recognition》](http:/...

88750
来自专栏人工智能

Tensorflow笔记 tensorflow做线性回归

本系列推送主要参考: Stanford University CS20SI: Tensorflow for Deep Learning Research. 01...

237100
来自专栏Petrichor的专栏

深度学习: translation invariant (平移不变性)

33630
来自专栏Petrichor的专栏

深度学习: 网络超参数设定

卷积时在 图像每一维([batch, in_height, in_width, in_channels])的步长,这是一个一维的向量,长度4。

23420

扫码关注云+社区

领取腾讯云代金券