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 相关文章推荐
py2exe 编译ico图标的代码
Mar 08 Python
python中__call__内置函数用法实例
Jun 04 Python
Python的math模块中的常用数学函数整理
Feb 04 Python
Python的装饰器用法学习笔记
Jun 24 Python
python实现简单的单变量线性回归方法
Nov 08 Python
详解Python with/as使用说明
Dec 13 Python
python 同时运行多个程序的实例
Jan 07 Python
Django的models模型的具体使用
Jul 15 Python
python 回溯法模板详解
Feb 26 Python
Python创建简单的神经网络实例讲解
Jan 04 Python
Python趣味挑战之实现简易版音乐播放器
May 28 Python
django 认证类配置实现
Nov 11 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
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
2011/07/18 PHP
深入浅析Yii admin的权限控制
2016/08/31 PHP
php 微信公众平台开发模式实现多客服的实例代码
2016/11/07 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
2020/05/14 PHP
javascript iframe中打开文件,并检测iframe存在否
2008/12/28 Javascript
jquery 双色表格实现代码
2009/12/08 Javascript
jquery form表单提交插件asp.net后台中文解码
2010/06/12 Javascript
JS的replace方法介绍
2012/10/20 Javascript
JS模板实现方法
2013/04/03 Javascript
Bootstrap基本样式学习笔记之表格(2)
2016/12/07 Javascript
详解JS中的快速排序与冒泡
2017/01/10 Javascript
vue中SPA单页面应用程序详解
2017/11/07 Javascript
Vue.js实现的表格增加删除demo示例
2018/05/22 Javascript
详解IOS微信上Vue单页面应用JSSDK签名失败解决方案
2018/11/14 Javascript
Electron autoUpdater实现Windows安装包自动更新的方法
2018/12/24 Javascript
JS实现多功能计算器
2020/10/28 Javascript
微信小程序实现电影App导航和轮播
2020/11/30 Javascript
[04:02]2014DOTA2国际邀请赛 BBC每日综述中国战队将再度登顶
2014/07/21 DOTA
[46:00]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第一局
2016/03/03 DOTA
python登录pop3邮件服务器接收邮件的方法
2015/04/30 Python
python 与GO中操作slice,list的方式实例代码
2017/03/20 Python
Python的爬虫框架scrapy用21行代码写一个爬虫
2017/04/24 Python
Python+OpenCv制作证件图片生成器的操作方法
2019/08/21 Python
使用Keras训练好的.h5模型来测试一个实例
2020/07/06 Python
教你如何用python操作摄像头以及对视频流的处理
2020/10/12 Python
6种非常炫酷的CSS3按钮边框动画特效
2016/03/16 HTML / CSS
Fossil美国官网:化石手表、手袋、首饰及配饰
2019/02/17 全球购物
英国行业制服供应商:Alexandra
2019/09/14 全球购物
捷克购买家具网站:JENA nábytek
2020/03/19 全球购物
素质拓展感言
2014/01/29 职场文书
计算机系统管理员求职信
2014/06/20 职场文书
房屋所有权证明
2014/10/20 职场文书
2016年端午节校园广播稿
2015/12/18 职场文书
《攀登者》:“海拔8000米以上,你不能指望任何人”
2019/11/25 职场文书
HTML+css盒子模型案例(圆,半圆等)“border-radius” 简单易上手
2021/05/10 HTML / CSS
Python 内置函数速查表一览
2021/06/02 Python