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 相关文章推荐
Windows上使用virtualenv搭建Python+Flask开发环境
Jun 07 Python
解决python matplotlib imshow无法显示的问题
May 24 Python
Win10下python 2.7.13 安装配置方法图文教程
Sep 18 Python
使用Python实现租车计费系统的两种方法
Sep 29 Python
django+mysql的使用示例
Nov 23 Python
Python二叉树的镜像转换实现方法示例
Mar 06 Python
python读取并写入mat文件的方法
Jul 12 Python
Python3.7黑帽编程之病毒篇(基础篇)
Feb 04 Python
Python requests.post方法中data与json参数区别详解
Apr 30 Python
python导入库的具体方法
Jun 18 Python
python线程里哪种模块比较适合
Aug 02 Python
Python中Numpy和Matplotlib的基本使用指南
Nov 02 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
用mysql触发器自动更新memcache的实现代码
2009/10/11 PHP
php实现网站插件机制的方法
2009/11/10 PHP
PHP+ajax 无刷新删除数据
2010/02/20 PHP
探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解
2013/06/20 PHP
浅谈PHP安全防护之Web攻击
2017/01/03 PHP
javascript 文档的编码问题解决
2009/03/01 Javascript
JS动态获取当前时间,并写到特定的区域
2013/05/03 Javascript
文字溢出实现溢出的部分再放入一个新生成的div中具体代码
2013/05/17 Javascript
Jquery 类网页微信二维码图块滚动效果具体实现
2013/10/14 Javascript
iframe子父页面调用js函数示例
2013/11/07 Javascript
Html5的placeholder属性(IE兼容)实现代码
2014/08/30 Javascript
百度地图给map添加右键菜单(判断是否为marker)
2016/03/04 Javascript
原生JS实现的放大镜效果实例代码
2016/10/15 Javascript
js学习总结之dom2级事件基础知识详解
2017/07/27 Javascript
浅谈react受控组件与非受控组件(小结)
2018/02/09 Javascript
JavaScript生成指定范围随机数和随机序列的方法
2018/05/05 Javascript
记录一篇关于redux-saga的基本使用过程
2018/08/18 Javascript
koa socket即时通讯的示例代码
2018/09/07 Javascript
angular4笔记系列之内置指令小结
2018/11/09 Javascript
详解一个基于套接字实现长连接的express
2019/03/28 Javascript
vue中$refs, $emit, $on, $once, $off的使用详解
2019/05/26 Javascript
vue视频播放暂停代码
2019/11/08 Javascript
vue多个元素的样式选择器问题
2019/11/29 Javascript
vue实现广告栏上下滚动效果
2020/11/26 Vue.js
详解React路由传参方法汇总记录
2020/11/29 Javascript
利用Python实现网络测试的脚本分享
2017/05/26 Python
Python I/O与进程的详细讲解
2019/03/08 Python
python 安装教程之Pycharm安装及配置字体主题,换行,自动更新
2020/03/13 Python
使用pth文件添加Python环境变量方式
2020/05/26 Python
使用keras实现Precise, Recall, F1-socre方式
2020/06/15 Python
如何使用localstorage代替cookie实现跨域共享数据问题
2018/04/18 HTML / CSS
赔偿协议书范本
2014/04/15 职场文书
采购员岗位职责范本
2015/04/07 职场文书
2015年小学财务工作总结
2015/07/20 职场文书
五年级语文教学反思
2016/03/03 职场文书
Hive常用日期格式转换语法
2022/06/25 数据库