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将图片文件转换成base64编码的方法
Mar 14 Python
Python常用的内置序列结构(列表、元组、字典)学习笔记
Jul 08 Python
Python实现全角半角字符互转的方法
Nov 28 Python
python数字图像处理之高级滤波代码详解
Nov 23 Python
Python3实现的画图及加载图片动画效果示例
Jan 19 Python
python爬虫之xpath的基本使用详解
Apr 18 Python
python3+PyQt5实现自定义窗口部件Counters
Apr 20 Python
Django项目中包含多个应用时对url的配置方法
May 30 Python
wxpython绘制音频效果
Nov 18 Python
python 中值滤波,椒盐去噪,图片增强实例
Dec 18 Python
python程序输出无内容的解决方式
Apr 09 Python
Python模拟键盘输入自动登录TGP
Nov 27 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时间戳与日期之间转换的实例介绍
2013/04/19 PHP
PHP中对于浮点型的数据需要用不同的方法解决
2014/03/11 PHP
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)
2014/11/08 PHP
Laravel 5框架学习之Eloquent (laravel 的ORM)
2015/04/08 PHP
PHP+AJAX实现投票功能的方法
2015/09/28 PHP
PHP编写RESTful接口的方法
2016/02/21 PHP
PHP laravel中的多对多关系实例详解
2017/06/07 PHP
php实现的AES加密类定义与用法示例
2018/01/29 PHP
PHP+Ajax简单get验证操作示例
2019/03/02 PHP
浅谈关于JavaScript的语言特性分析
2013/04/11 Javascript
浅析Node在构建超媒体API中的作用
2014/07/30 Javascript
Vue.js实战之使用Vuex + axios发送请求详解
2017/04/04 Javascript
javascript实现文字无缝滚动效果
2017/08/26 Javascript
js动态添加表格逐行添加、删除、遍历取值的实例代码
2018/01/25 Javascript
jquery实现动态创建form并提交的方法示例
2019/05/27 jQuery
layui 监听select选择 获取当前select的ID名称方法
2019/09/24 Javascript
[07:06]2018DOTA2国际邀请赛寻真——卫冕冠军Team Liquid
2018/08/10 DOTA
Python实现二分法算法实例
2015/02/02 Python
Python 数据结构之旋转链表
2017/02/25 Python
详解分布式任务队列Celery使用说明
2018/11/29 Python
python频繁写入文件时提速的方法
2019/06/26 Python
基于Python中的yield表达式介绍
2019/11/19 Python
Pycharm2020.1安装中文语言插件的详细教程(不需要汉化)
2020/08/07 Python
基于CSS3实现图片模糊过滤效果
2015/11/19 HTML / CSS
css3 flex实现div内容水平垂直居中的几种方法
2020/03/27 HTML / CSS
雅诗兰黛香港官网:Estee Lauder香港
2017/09/26 全球购物
英国领先的票务代理商之一:The Ticket Factory
2019/02/09 全球购物
澳大利亚最受欢迎的美发用品目的地:AMR
2019/08/28 全球购物
编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的
2015/07/23 面试题
护理专业应届毕业生推荐信
2013/11/15 职场文书
开办大学饮食联盟创业计划书
2014/01/29 职场文书
机械工程师岗位职责
2014/06/16 职场文书
党员承诺书范文2015
2015/04/27 职场文书
新员工入职感想
2015/08/07 职场文书
浅谈JS的二进制家族
2021/05/09 Javascript
pytorch实现加载保存查看checkpoint文件
2022/07/15 Python