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高并发异步服务器核心库forkcore使用方法
Nov 26 Python
Python可变参数函数用法实例
Jul 07 Python
Python 3.6 性能测试框架Locust安装及使用方法(详解)
Oct 11 Python
对python创建及引用动态变量名的示例讲解
Nov 10 Python
python selenium爬取斗鱼所有直播房间信息过程详解
Aug 09 Python
Python如何获取文件指定行的内容
May 27 Python
在pycharm中关掉ipython console/PyDev操作
Jun 09 Python
关于tensorflow softmax函数用法解析
Jun 30 Python
python3:excel操作之读取数据并返回字典 + 写入的案例
Sep 01 Python
python的setattr函数实例用法
Dec 16 Python
linux系统下pip升级报错的解决方法
Jan 31 Python
Python爬取科目四考试题库的方法实现
Mar 30 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
ThinkPHP 模板substr的截取字符串函数详解
2017/01/09 PHP
PHP生成腾讯云COS接口需要的请求签名
2018/05/20 PHP
php进行md5加密简单实例方法
2019/09/19 PHP
用JS提交参数创建form表单在FireFox中遇到的问题
2013/01/16 Javascript
在服务端(Page.Write)调用自定义的JS方法详解
2013/08/09 Javascript
javascript操作Cookie(设置、读取、删除)方法详解
2015/03/18 Javascript
JS DOM实现鼠标滑动图片效果
2020/09/17 Javascript
jQuery 实现双击编辑表格功能
2017/06/19 jQuery
CentOS环境中MySQL修改root密码方法
2018/01/07 Javascript
babel之配置文件.babelrc入门详解
2018/02/22 Javascript
不使用JavaScript实现菜单的打开和关闭效果demo
2018/05/01 Javascript
Vue中的情侣属性$dispatch和$broadcast详解
2019/03/07 Javascript
Openlayers实现测量功能
2020/09/25 Javascript
vue 判断页面是首次进入还是再次刷新的实例
2020/11/05 Javascript
Vue——解决报错 Computed property &quot;****&quot; was assigned to but it has no setter.
2020/12/19 Vue.js
[02:29]大剑、皮鞭、女装,这届DOTA2勇士令状里都有
2020/07/17 DOTA
python端口扫描系统实现方法
2014/11/19 Python
python面试题之列表声明实例分析
2019/07/08 Python
Python控制台输出时刷新当前行内容而不是输出新行的实现
2020/02/21 Python
利用Python计算KS的实例详解
2020/03/03 Python
Django values()和value_list()的使用
2020/03/31 Python
Python脚本实现监听服务器的思路代码详解
2020/05/28 Python
python利用opencv实现颜色检测
2021/02/23 Python
建筑工程自我鉴定
2013/10/18 职场文书
档案管理员岗位职责
2013/12/01 职场文书
实验教师岗位职责
2014/02/13 职场文书
财务管理职业生涯规划书
2014/02/26 职场文书
经典婚礼主持开场白
2014/03/13 职场文书
工商企业管理应届生求职信
2014/05/04 职场文书
群众路线剖析材料范文
2014/10/09 职场文书
赵氏孤儿观后感
2015/06/09 职场文书
导游词之黄果树瀑布
2019/09/20 职场文书
在 Golang 中实现 Cache::remember 方法详解
2021/03/30 Python
nginx内存池源码解析
2021/11/20 Servers
我的收音机情缘
2022/04/05 无线电
MySQL三种方式实现递归查询
2022/04/18 MySQL