Tensorflow笔记 tensorflow做线性回归

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

01

Tensorflow做线性回归

前面实现过最小二乘法的线性回归算法,梯度下降求解过程,详见文章:

那么,借助tensorflow如何实现最小二乘法的线性回归呢?基本的思路,首先生成拟合的数据集,然后构建线性回归的Graph,最后在Session中迭代train器,得到拟合的参数w和b,画出拟合曲线。

1.1 生成拟合的数据集,数据集只含有一个特征,注意误差项需要满足高斯分布,其分布的代码如下,首先导入3个库,

import numpy as np

import tensorflow as tf

import matplotlib.pyplot as plt

#数据点100个

num_points = 100

vectors_set = []

for i in range(num_points):

vectors_set.append([x1,y1])

#特征x

x_data = [v[0] for v in vectors_set]

#标签值y

y_data = [v[1] for v in vectors_set]

plt.scatter(x_data,y_data,c='b')

plt.show()

产生的数据分布如下所示:

1.2构建线性回归的Graph

w = tf.Variable(tf.random_uniform([1],-1.,1.),name='myw')

b = tf.Variable(tf.zeros([1]),name='myb')

#经过计算得出预估值

y = w * x_data + b

#以预估值y和实际值y_data之间的均方差作为损失

loss = tf.reduce_mean(tf.square(y-y_data,name='mysquare'), name='myloss')

#采用梯度下降法来优化参数

optimizer = tf.train.GradientDescentOptimizer(0.5)

train= optimizer.minimize(loss,name='mytrain')

1.3 在Session中运行构建好的Graph

#global_variables_initializer初始化Variable等变量

sess = tf.Session()

init = tf.global_variables_initializer()

sess.run(init)

print("w=", sess.run(w),"b=",sess.run(b),sess.run(loss))

#迭代20次train

for step in range(20):

sess.run(train)

print("w=", sess.run(w),"b=",sess.run(b),sess.run(loss))

#写入磁盘,提供tensorboard在浏览器中展示用

writer = tf.summary.FileWriter("./mytmp",sess.graph)

打印下w和b,损失值的变化情况,可以看到损失值从0.24降到0.0008.

1.4绘制拟合曲线

plt.scatter(x_data,y_data,c='b')

plt.plot(x_data,sess.run(w)*x_data+sess.run(b))

plt.show()

02

Tensorboard展示Graph

关于如何在tensorboard中展示构建好的Graph,请参考文章,不再赘述,直接分析tensorflow绘制的graph.

得到的Graph界面如下所示:

Main Graph视图放大版,数据从底部是如何经过Operators,流动到顶部的,大家可以顺一下。

以上就是在tensorflow中做基本的线性回归的基本步骤,利用这个最基本的任务,先体会下tensorflow做回归的过程。

本文来自企鹅号 - 全球大搜罗媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏决胜机器学习

机器学习(四) ——梯度下降算法解释以及求解θ

机器学习(四)——梯度下降算法解释以及求解θ (原创内容,转载请注明来源,谢谢) (本文接 机器学习(二) 的内容) 一、解释梯度算法 ? ? 梯度算法公式...

3996
来自专栏Duncan's Blog

超参的搜索方法整理

网格搜索通过查找搜索范围内的所有的点,来确定最优值。它返回目标函数的最大值或损失函数的最小值。给出较大的搜索范围,以及较小的步长,网格搜索是一定可以找到全局最大...

3332
来自专栏marsggbo

使用numpy解决图像维度变换问题

在机器学习中经常会碰到各种图像数据集,有的是按照num*height*width*channel来存储的,而有的则是num*channel*height*wid...

5111
来自专栏郭耀华‘s Blog

卷积神经网络CNN的意义

一、选用卷积的原因 局部感知 简单来说,卷积核的大小一般小于输入图像的大小(如果等于则是全连接),因此卷积提取出的特征会更多地关注局部 —— 这很符合日常...

3438
来自专栏AI研习社

利用 SKLearn 重建线性模型

线性模型通常是训练模型的一个比较好的起点。 但是由于许多数据集的自变量和因变量之间并不是线性关系,所以经常需要创建多项式模型,导致这些模型很容易过拟合。 正则化...

1133
来自专栏深度学习之tensorflow实战篇

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

windows10 tensorflow(二)原理实战之回归分析,深度学习框架(梯度下降法求解回归参数) TF数据生成方式:参考TF数据生成12法 TF...

3516
来自专栏Ldpe2G的个人博客

PCANet --- 用于图像分类的深度学习基准

7572
来自专栏大数据智能实战

pix2pix tensorflow试验(GAN之图像转图像的操作)

GAN是一种典型的概率生成模型,其核心思想是:找出给定观测数据内部的统计规律,并且能够基于所得到的概率分布模型,产生全新的,与观测数据类似的数据。 概率生成模...

5385
来自专栏yl 成长笔记

图形搜索中用到的机器学习基础介绍

针对目标图像(具有统一特征的图像),进行基于深度学习技术的模型训练,通过调优模型结构与参数,得到对于指定图像具有提取特征信息的模型 M。将库中所有图像通过 M ...

863
来自专栏计算机视觉life

OpenCV学习入门(三):kmeans原理及代码

Kmeans是一种非监督的聚类方法,是最常用的聚类技术之一。kmeans尝试找到数据的自然类别,通过用户设定的类别个数K,它可以快速的找到“好的”类别中心,“好...

2535

扫码关注云+社区

领取腾讯云代金券