tensorflow实现逻辑回归模型


Posted in Python onSeptember 08, 2018

逻辑回归模型

逻辑回归是应用非常广泛的一个分类机器学习算法,它将数据拟合到一个logit函数(或者叫做logistic函数)中,从而能够完成对事件发生的概率进行预测。

import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
from tensorflow.examples.tutorials.mnist import input_data
#下载好的mnist数据集存在F:/mnist/data/中
mnist = input_data.read_data_sets('F:/mnist/data/',one_hot = True)
print(mnist.train.num_examples)
print(mnist.test.num_examples)

trainimg = mnist.train.images
trainlabel = mnist.train.labels
testimg = mnist.test.images
testlabel = mnist.test.labels

print(type(trainimg))
print(trainimg.shape,)
print(trainlabel.shape,)
print(testimg.shape,)
print(testlabel.shape,)

nsample = 5
randidx = np.random.randint(trainimg.shape[0],size = nsample)

for i in randidx:
  curr_img = np.reshape(trainimg[i,:],(28,28))
  curr_label = np.argmax(trainlabel[i,:])
  plt.matshow(curr_img,cmap=plt.get_cmap('gray'))
  plt.title(""+str(i)+"th Training Data"+"label is"+str(curr_label))
  print(""+str(i)+"th Training Data"+"label is"+str(curr_label))
  plt.show()


x = tf.placeholder("float",[None,784])
y = tf.placeholder("float",[None,10])
W = tf.Variable(tf.zeros([784,10]))
b = tf.Variable(tf.zeros([10]))

#
actv = tf.nn.softmax(tf.matmul(x,W)+b)
#计算损失
cost = tf.reduce_mean(-tf.reduce_sum(y*tf.log(actv),reduction_indices=1))
#学习率
learning_rate = 0.01
#随机梯度下降
optm = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)

#求1位置索引值 对比预测值索引与label索引是否一样,一样返回True
pred = tf.equal(tf.argmax(actv,1),tf.argmax(y,1))
#tf.cast把True和false转换为float类型 0,1
#把所有预测结果加在一起求精度
accr = tf.reduce_mean(tf.cast(pred,"float"))
init = tf.global_variables_initializer()
"""
#测试代码 
sess = tf.InteractiveSession()
arr = np.array([[31,23,4,24,27,34],[18,3,25,4,5,6],[4,3,2,1,5,67]])
#返回数组的维数 2
print(tf.rank(arr).eval())
#返回数组的行列数 [3 6]
print(tf.shape(arr).eval())
#返回数组中每一列中最大元素的索引[0 0 1 0 0 2]
print(tf.argmax(arr,0).eval())
#返回数组中每一行中最大元素的索引[5 2 5]
print(tf.argmax(arr,1).eval()) 
J"""
#把所有样本迭代50次
training_epochs = 50
#每次迭代选择多少样本
batch_size = 100
display_step = 5

sess = tf.Session()
sess.run(init)

#循环迭代
for epoch in range(training_epochs):
  avg_cost = 0
  num_batch = int(mnist.train.num_examples/batch_size)
  for i in range(num_batch):
    batch_xs,batch_ys = mnist.train.next_batch(batch_size)
    sess.run(optm,feed_dict = {x:batch_xs,y:batch_ys})
    feeds = {x:batch_xs,y:batch_ys}
    avg_cost += sess.run(cost,feed_dict = feeds)/num_batch

  if epoch % display_step ==0:
    feeds_train = {x:batch_xs,y:batch_ys}
    feeds_test = {x:mnist.test.images,y:mnist.test.labels}
    train_acc = sess.run(accr,feed_dict = feeds_train)
    test_acc = sess.run(accr,feed_dict = feeds_test)
    #每五个epoch打印一次信息
    print("Epoch:%03d/%03d cost:%.9f train_acc:%.3f test_acc: %.3f" %(epoch,training_epochs,avg_cost,train_acc,test_acc))

print("Done")

程序训练结果如下:

Epoch:000/050 cost:1.177228655 train_acc:0.800 test_acc: 0.855
Epoch:005/050 cost:0.440933891 train_acc:0.890 test_acc: 0.894
Epoch:010/050 cost:0.383387268 train_acc:0.930 test_acc: 0.905
Epoch:015/050 cost:0.357281335 train_acc:0.930 test_acc: 0.909
Epoch:020/050 cost:0.341473956 train_acc:0.890 test_acc: 0.913
Epoch:025/050 cost:0.330586549 train_acc:0.920 test_acc: 0.915
Epoch:030/050 cost:0.322370980 train_acc:0.870 test_acc: 0.916
Epoch:035/050 cost:0.315942993 train_acc:0.940 test_acc: 0.916
Epoch:040/050 cost:0.310728854 train_acc:0.890 test_acc: 0.917
Epoch:045/050 cost:0.306357428 train_acc:0.870 test_acc: 0.918
Done

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python3读取MySQL-Front的MYSQL密码
May 03 Python
Python的IDEL增加清屏功能实例
Jun 19 Python
pandas多级分组实现排序的方法
Apr 20 Python
python通过ffmgep从视频中抽帧的方法
Dec 05 Python
Python远程视频监控程序的实例代码
May 05 Python
python实现文件的分割与合并
Aug 29 Python
关于初始种子自动选取的区域生长实例(python+opencv)
Jan 16 Python
Python使用GitPython操作Git版本库的方法
Feb 29 Python
通过实例了解python__slots__使用方法
Sep 14 Python
基于python爬取链家二手房信息代码示例
Oct 21 Python
Python如何实现感知器的逻辑电路
Dec 25 Python
Python图像处理之膨胀与腐蚀的操作
Feb 07 Python
Django实现表单验证
Sep 08 #Python
python实现排序算法解析
Sep 08 #Python
TensorFlow实现Logistic回归
Sep 07 #Python
tensorflow实现简单逻辑回归
Sep 07 #Python
Tensorflow使用支持向量机拟合线性回归
Sep 07 #Python
TensorFlow实现iris数据集线性回归
Sep 07 #Python
TensorFlow实现模型评估
Sep 07 #Python
You might like
php中获取主机名、协议及IP地址的方法
2014/11/18 PHP
php页面,mysql数据库转utf-8乱码,utf-8编码问题总结
2015/08/27 PHP
use jscript List Installed Software
2007/06/11 Javascript
jQuery一步一步实现跨浏览器的可编辑表格,支持IE、Firefox、Safari、Chrome、Opera
2009/08/28 Javascript
javascript 利用Image对象实现的埋点(某处的点击数)统计
2012/12/28 Javascript
由ReactJS的Hello world说开来
2015/07/02 Javascript
jquery带下拉菜单和焦点图代码分享
2015/08/24 Javascript
JavaScript为事件句柄绑定监听函数实例详解
2015/12/15 Javascript
ionic开发中点击input时键盘自动弹出
2016/12/23 Javascript
用js制作淘宝放大镜效果
2020/10/28 Javascript
ES6新数据结构Map功能与用法示例
2017/03/31 Javascript
node基于puppeteer模拟登录抓取页面的实现
2018/05/09 Javascript
vue之将echart封装为组件
2018/06/02 Javascript
vue解决使用webpack打包后keep-alive不生效的方法
2018/09/01 Javascript
vue实现div拖拽互换位置
2020/07/29 Javascript
bootstrap与pagehelper实现分页效果
2018/12/29 Javascript
vue+elementUI动态增加表单项并添加验证的代码详解
2020/12/17 Vue.js
用Python写的图片蜘蛛人代码
2012/08/27 Python
Python常用的内置序列结构(列表、元组、字典)学习笔记
2016/07/08 Python
python 定义给定初值或长度的list方法
2018/06/23 Python
python manage.py runserver流程解析
2019/11/08 Python
Django实现celery定时任务过程解析
2020/04/21 Python
如何搭建pytorch环境的方法步骤
2020/05/06 Python
美国婴儿用品及配件购买网站:Munchkin
2019/04/03 全球购物
博士生入学考试推荐信
2013/11/17 职场文书
小学门卫岗位职责
2013/12/17 职场文书
回门宴父母答谢词
2014/01/26 职场文书
普罗米修斯教学反思
2014/02/06 职场文书
工作疏忽、懈怠的检讨书
2014/09/11 职场文书
党员教师四风问题对照检查材料
2014/09/26 职场文书
2015年世界环境日活动总结
2015/02/11 职场文书
安全知识竞赛主持词
2015/06/30 职场文书
2016优秀护士求职自荐信
2016/01/28 职场文书
详解Python类和对象内容
2021/06/22 Python
详解NumPy中的线性关系与数据修剪压缩
2022/05/25 Python
win11自动弹出虚拟键盘怎么关闭? Win11关闭虚拟键盘的技巧
2023/01/09 数码科技