tensorflow实现简单逻辑回归


Posted in Python onSeptember 07, 2018

逻辑回归是机器学习中很简答的一个栗子,这篇文章就是要介绍如何使用tensorflow实现一个简单的逻辑回归算法。

逻辑回归可以看作只有一层网络的前向神经网络,并且参数连接的权重只是一个值,而非矩阵。公式为:y_predict=logistic(X*W+b),其中X为输入,W为输入与隐含层之间的权重,b为隐含层神经元的偏置,而logistic为激活函数,一般为sigmoid或者tanh, y_predict为最终预测结果。

逻辑回归是一种分类器模型,需要木便函数不断的优化参数,这里目标函数为y_predict与真实标签Y之间的L2距离,使用随机梯度下降算法来更新权重和偏置。 废话不多说,贴代码:

# -*- coding:utf-8 -*-
#功能: 使用tensorflow实现一个简单的逻辑回归
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
 
#创建占位符
X=tf.placeholder(tf.float32)
Y=tf.placeholder(tf.float32)
 
#创建变量
#tf.random_normal([1])返回一个符合正太分布的随机数
w=tf.Variable(tf.random_normal([1],name='weight'))
b=tf.Variable(tf.random_normal([1],name='bias'))
 
y_predict=tf.sigmoid(tf.add(tf.mul(X,w),b))
num_samples=400
cost=tf.reduce_sum(tf.pow(y_predict-Y,2.0))/num_samples
 
#学习率
lr=0.01
optimizer=tf.train.AdamOptimizer().minimize(cost)
 
#创建session 并初始化所有变量
num_epoch=500
cost_accum=[]
cost_prev=0
#np.linspace()创建agiel等差数组,元素个素为num_samples
xs=np.linspace(-5,5,num_samples)
ys=np.sin(xs)+np.random.normal(0,0.01,num_samples)
 
with tf.Session() as sess:
  #初始化所有变量
  sess.run(tf.initialize_all_variables())
  #开始训练
  for epoch in range(num_epoch):
    for x,y in zip(xs,ys):
      sess.run(optimizer,feed_dict={X:x,Y:y})
    train_cost=sess.run(cost,feed_dict={X:x,Y:y})
    cost_accum.append(train_cost)
    print "train_cost is:",str(train_cost)
 
    #当误差小于10-6时 终止训练
    if np.abs(cost_prev-train_cost)<1e-6:
      break
    #保存最终的误差
    cost_prev=train_cost
#画图 画出每一轮训练所有样本之后的误差
plt.plot(range(len(cost_accum)),cost_accum,'r')
plt.title('Logic Regression Cost Curve')
plt.xlabel('epoch')
plt.ylabel('cost')
plt.show()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python创建线程示例
May 06 Python
收藏整理的一些Python常用方法和技巧
May 18 Python
Python实现批量读取图片并存入mongodb数据库的方法示例
Apr 02 Python
Selenium(Python web测试工具)基本用法详解
Aug 10 Python
Python 实现取矩阵的部分列,保存为一个新的矩阵方法
Nov 14 Python
python 统计文件中的字符串数目示例
Dec 24 Python
关于Pytorch的MNIST数据集的预处理详解
Jan 10 Python
Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释
Jan 25 Python
opencv python图像梯度实例详解
Feb 04 Python
python和php学习哪个更有发展
Jun 17 Python
celery在python爬虫中定时操作实例讲解
Nov 27 Python
matplotlib之属性组合包(cycler)的使用
Feb 24 Python
Tensorflow使用支持向量机拟合线性回归
Sep 07 #Python
TensorFlow实现iris数据集线性回归
Sep 07 #Python
TensorFlow实现模型评估
Sep 07 #Python
使用tensorflow实现线性svm
Sep 07 #Python
Python多进程池 multiprocessing Pool用法示例
Sep 07 #Python
详解python while 函数及while和for的区别
Sep 07 #Python
使用TensorFlow实现SVM
Sep 06 #Python
You might like
php IP转换整形(ip2long)的详解
2013/06/06 PHP
PHP 输出URL的快捷方式示例代码
2013/09/22 PHP
生成随机字符串和验证码的类的PHP实例
2013/12/24 PHP
PHP设计模式之适配器模式(Adapter)原理与用法详解
2019/12/12 PHP
有关PHP 中 config.m4 的探索
2020/08/26 PHP
HTML中事件触发列表与解说
2007/07/09 Javascript
javascript 有用的脚本函数
2009/05/07 Javascript
jquery 圆形旋转图片滚动切换效果
2011/01/19 Javascript
深入理解JavaScript是如何实现继承的
2013/12/12 Javascript
javascript基于HTML5 canvas制作画箭头组件
2014/06/25 Javascript
JS解析XML文件和XML字符串详解
2015/04/17 Javascript
javascript图片预加载实例分析
2015/07/16 Javascript
jquery实现可自动收缩的TAB网页选项卡代码
2015/09/06 Javascript
jQuery基础知识点总结(必看)
2016/05/31 Javascript
详解jQuery的Cookie插件
2016/11/23 Javascript
Bootstrap源码解读排版(1)
2016/12/23 Javascript
ES6新特性之类(Class)和继承(Extends)相关概念与用法分析
2017/05/24 Javascript
JavaScript中使用Spread运算符的八种方法总结
2020/06/18 Javascript
用Python编写一个简单的FUSE文件系统的教程
2015/04/02 Python
如何实现删除numpy.array中的行或列
2018/05/08 Python
基于python的selenium两种文件上传操作实现详解
2019/09/19 Python
python 实现将list转成字符串,中间用空格隔开
2019/12/25 Python
Python Scrapy多页数据爬取实现过程解析
2020/06/12 Python
编程用JAVA解析XML的方式
2013/07/07 面试题
心得体会开头
2014/01/01 职场文书
校三好学生主要事迹
2014/01/11 职场文书
幼儿园运动会口号
2014/06/07 职场文书
法定代表人授权委托书范本
2014/10/07 职场文书
小学生优秀评语
2014/12/29 职场文书
2015年社区工作总结
2015/04/08 职场文书
实习介绍信范文
2015/05/05 职场文书
房屋维修申请报告
2015/05/18 职场文书
公司管理制度范本
2015/08/03 职场文书
MySQL索引篇之千万级数据实战测试
2021/04/05 MySQL
MySQL查看表和清空表的常用命令总结
2021/05/26 MySQL
宫崎骏十大动画电影,宫崎骏好看的动画电影排名
2022/03/22 日漫