tensorflow-一元线性模型

原创 2018年04月16日 15:20:09

    数据见deep learning,这是一个一元输入、一元输出的线性模型,下面是具体实现过程:

import tensorflow as tf
import numpy as np
#通过numpy.loadtxt()函数解析当前目录数据x.y
x_data=np.loadtxt('./ex2x.dat')
y_data=np.loadtxt('./ex2y.dat')
#设置线性函数参数W、b
#W初始化为均匀随机数
W=tf.Variable(tf.random_uniform([1],-1.0,1.0))
#b初始化为0
b=tf.Variable(tf.zeros([1]))
#参数下输出为y_
y_=W*x_data+b
#设置损失函数 
loss=tf.reduce_mean(tf.square(y_data-y_))/2
#定义梯度下降优化器 设置学习率
optimizer=tf.train.GradientDescentOptimizer(0.07)
#定义优化方法
train=optimizer.minimize(loss)

#会话执行图
sess=tf.Session()
#初始化变量
init=tf.global_variables_initializer()
sess.run(init)

#执行梯度下降优化
for i in range(1500):
    sess.run(train)
    if i%100==0:
        print sess.run(W),sess.run(b)

   


执行结果如下:

[0.38659847] [0.07704204]
[0.13098377] [0.41046652]
[0.09381685] [0.5863949]
[0.07821415] [0.67140335]
[0.07077159] [0.71229064]
[0.06719442] [0.73195165]
[0.06547432] [0.7414059]
[0.06464729] [0.7459518]
[0.06424948] [0.7481382]
[0.06405827] [0.7491891]
[0.06396635] [0.74969447]
[0.06392214] [0.74993736]
[0.06390087] [0.75005424]
[0.06389064] [0.7501105]
[0.0638857] [0.7501377]

当然实际过程并没有这么顺利,当我令loss=tf.reduce_mean(tf.square(y_data-y_)),学习率设为0.07时,会出现如下结果:

[0.48159832] [0.08058839]
[nan] [nan]
[nan] [nan]
[nan] [nan]
[nan] [nan]
[nan] [nan]
[nan] [nan]
[nan] [nan]
[nan] [nan]
[nan] [nan]
[nan] [nan]
[nan] [nan]
[nan] [nan]
[nan] [nan]
[nan] [nan]

但是调小学习率为0.01时却又可以收敛,由此可以看出产生nan的原因是由于learning rate 过大,那么为什么将loss除2以后就又收敛了呢,这说明learning rate 其实是与loss相对应的;之前让我百思不得其解的是,为什么学习率为0.07,而loss不除以2的时候会出现nan,但是当把loss除以2的时候就收敛了,后来发现学习率其实是乘以loss的梯度的,当loss除2的时候,相当于同等条件下学习率除2.至于产生nan的详细解释,我觉得是学习率过大,导致梯度爆炸,超出数值范围,于是显示为 nan,对于这个问题我也欢迎大家一起讨论,因为的确还存在一些疑问。

版权声明: https://blog.csdn.net/qq_33668920/article/details/79956010

机器学习与智能优化 之 线性模型

要点 针对回归(一个输入输出对集合的线性估计),传统线性模型用最小化线性模型预测值与训练样本间的平方误差和来作为实验数据的最可能的线性拟合。最小化可以“一蹴而就”,利用线性代数来生成矩阵的逆;或者迭...
  • WL2002200
  • WL2002200
  • 2015-01-28 07:51:32
  • 798

TensorFlow实现一元线性模型

本文为学习 http://studyai.com/blog/article/detail/12d4fa58a09341bd9b1cc9df82762eb5 的笔记 源代码可直接参考上面链接,本文不再粘...
  • zhqh100
  • zhqh100
  • 2017-09-24 12:42:17
  • 98

tensorflow学习笔记(一) --- 一元线性模型

最近学习tensorflow入门用的资料,觉得讲的很透彻。 在这里给大家分享一下!!! 下面是tensorflow的代码 ''' 使用...
  • qq_36116978
  • qq_36116978
  • 2017-09-12 00:32:47
  • 219

tensorflow-多元线性模型

     数据见deep learning,该模型为多元输入的线性模型,即z=mx+ny+b的空间平面#--coding:UTF-8-- import tensorflow as tf import ...
  • qq_33668920
  • qq_33668920
  • 2018-04-16 19:26:49
  • 10

R语言解读一元线性回归模型

前言在我们的日常生活中,存在大量的具有相关性的事件,比如大气压和海拔高度,海拔越高大气压强越小;人的身高和体重,普遍来看越高的人体重也越重。还有一些可能存在相关性的事件,比如知识水平越高的人,收入水平...
  • scgaliguodong123_
  • scgaliguodong123_
  • 2016-10-25 08:34:57
  • 741

非线性模型参数估计

1常见模型 1.1指数模型估计 %%非线性回归,指数模型 x=[0.5,1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5,10.5,11.5,12.5,13.5,14.5,15....
  • u013232740
  • u013232740
  • 2015-05-11 22:19:05
  • 296

R语言一元线性回归

X
  • hellosmu
  • hellosmu
  • 2017-01-08 12:02:25
  • 412

lingo8,线性优化软件

  • 2010年05月14日 09:37
  • 7.47MB
  • 下载

Python实现机器学习一(实现一元线性回归)

回归是统计学中最有力的工具之一。机器学习监督学习算法分为分类算法和回归算法两种,其实就是根据类别标签分布类型为离散型、连续性而定义的。顾名思义,分类算法用于离散型分布预测,如前面讲过的KNN、决策树、...
  • LULEI1217
  • LULEI1217
  • 2015-10-24 16:29:45
  • 14245

机器学习 - 线性模型

一.线性回归—LR 线性回归是一种监督学习下的线性模型,线性回归试图从给定数据集中学习一个线性模型来较好的预测输出(可视为:新来一个不属于D的数据,我们只知道他的x,要求预测y,D如下表示)。 首先我...
  • ZK_J1994
  • ZK_J1994
  • 2016-12-12 11:13:29
  • 2343
收藏助手
不良信息举报
您举报文章:tensorflow-一元线性模型
举报原因:
原因补充:

(最多只允许输入30个字)