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每天必学之bytes字节
Jan 28 Python
Python编程中装饰器的使用示例解析
Jun 20 Python
Tensorflow简单验证码识别应用
May 25 Python
Python反射用法实例简析
Dec 22 Python
微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
Jan 04 Python
python实现超市扫码仪计费
May 30 Python
python+pandas+时间、日期以及时间序列处理方法
Jul 10 Python
浅谈python的输入输出,注释,基本数据类型
Apr 02 Python
Python Web版语音合成实例详解
Jul 16 Python
对Python生成器、装饰器、递归的使用详解
Jul 19 Python
python2和python3哪个使用率高
Jun 23 Python
python 检测图片是否有马赛克
Dec 01 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中函数前加&amp;符号的作用分解
2014/07/08 PHP
php输出金字塔的2种实现方法
2014/12/16 PHP
Zend Framework入门应用实例详解
2016/12/11 PHP
PHP检测数据类型的几种方法(总结)
2017/03/04 PHP
PHP两个n位的二进制整数相加问题的解决
2018/08/26 PHP
用php实现分页效果的示例代码
2020/12/10 PHP
javascript onmouseout 解决办法
2010/07/17 Javascript
基于jQuery的简单九宫格实现代码
2012/08/09 Javascript
JQuery操作iframe父页面与子页面的元素与方法(实例讲解)
2013/11/20 Javascript
javascript不同类型数据之间的运算的转换方法
2014/02/13 Javascript
深入理解js数组的sort排序
2016/05/28 Javascript
DataTables+BootStrap组合使用Ajax来获取数据并且动态加载dom的方法(排序,过滤,分页等)
2016/11/09 Javascript
Bootstrap源码解读网格系统(3)
2016/12/22 Javascript
JavaScript之underscore_动力节点Java学院整理
2017/07/03 Javascript
JS 仿支付宝input文本输入框放大组件的实例
2017/11/14 Javascript
vue移动端实现下拉刷新
2018/04/22 Javascript
vue里input根据value改变背景色的实例
2018/09/29 Javascript
jsonp跨域获取百度联想词的方法分析
2019/05/13 Javascript
关于微信小程序map组件z-index的层级问题分析
2019/07/09 Javascript
vue中注册自定义的全局js方法
2019/11/15 Javascript
微信小程序入门之指南针
2020/10/22 Javascript
在Python中使用全局日志时需要注意的问题
2015/05/06 Python
Python 操作文件的基本方法总结
2017/08/10 Python
解决python大批量读写.doc文件的问题
2018/05/08 Python
详解Django+Uwsgi+Nginx 实现生产环境部署
2018/11/06 Python
用Pycharm实现鼠标滚轮控制字体大小的方法
2019/01/15 Python
python文件绝对路径写法介绍(windows)
2019/12/25 Python
python pymysql库的常用操作
2020/10/16 Python
python操作toml文件的示例代码
2020/11/27 Python
浅析HTML5页面元素及属性
2021/01/20 HTML / CSS
万户网络JAVA程序员岗位招聘笔试试卷
2013/01/08 面试题
护士长竞聘演讲稿
2014/04/30 职场文书
大学生档案自我鉴定(2篇)
2014/10/14 职场文书
工程部岗位职责范本
2015/04/11 职场文书
《绝招》教学反思
2016/02/20 职场文书
帮你提高开发效率的JavaScript20个技巧
2021/06/18 Javascript