1.交叉熵

逻辑斯蒂回归这个模型采用的是交叉熵,通俗点理解交叉熵

推荐一篇文章讲的很清楚:

https://www.zhihu.com/question/41252833

因此,交叉熵越低,这个策略就越好,最低的交叉熵也就是使用了真实分布所计算出来的信息熵,因为此时  ,交叉熵 = 信息熵。这也是为什么在机器学习中的分类算法中,我们总是最小化交叉熵,因为交叉熵越低,就证明由算法所产生的策略最接近最优策略,也间接证明我们算法所算出的非真实分布越接近真实分布

2.代码解释

 import warnings
warnings.filterwarnings('ignore')
import numpy as np
import tensorflow as tf
# 样本集
from tensorflow.examples.tutorials.mnist import input_data # 加载数据,目标值变成概率的形式,ont-hot
mnist = input_data.read_data_sets('./',one_hot=True)
# 训练数据 (55000, 784)
mnist.train.images.shape
# 测试数据 (10000, 784)
mnist.test.images.shape
# 目标值 ont-hot形式
mnist.train.labels[:10] # 构建方程
X = tf.placeholder(dtype=tf.float64,shape = (None,784),name = 'data')
y = tf.placeholder(dtype=tf.float64,shape = (None,10),name = 'target')
W = tf.Variable(initial_value=tf.zeros(shape =(784,10),dtype = tf.float64))
b = tf.Variable(initial_value=tf.zeros(shape = (10),dtype = tf.float64))
y_pred = tf.matmul(X,W) + b # 构建损失函数
# y 和 y_pred对比
# y表示是概率 [0., 0., 0., 0., 0., 0., 0., 1., 0., 0.]
# y_pred,矩阵运算求解的目标值
# 要将y_pred转化成概率,softmax
y_ = tf.nn.softmax(y_pred)
# 此时y和y_表示概率
# y和y_越接近,说明预测函数越准确
# 此时分类问题,交叉熵,表示损失函数
# 熵:表示的系统混乱程度
# 损失函数,越小越好
# 平均交叉熵------->可以比较大小的数
loss = tf.reduce_mean(tf.reduce_sum(tf.multiply(y,tf.log(1/y_)),axis = -1)) # 最优化
opt = tf.train.GradientDescentOptimizer(0.01).minimize(loss) # 训练
# 训练次数
epoches = 100
# 保存
saver = tf.train.Saver()
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for i in range(epoches):
c = 0
for j in range(100):
# 一次取550个,分100次取完数据 next_batch方法
X_train,y_train = mnist.train.next_batch(550)
opt_,cost = sess.run([opt,loss],feed_dict = {X:X_train,y:y_train})
c += cost/100
# 计算准确率
X_test,y_test = mnist.test.next_batch(2000)
y_predict = sess.run(y_,feed_dict={X:X_test})
y_test = np.argmax(y_test,axis = -1)
y_predict = np.argmax(y_predict,axis = 1)
accuracy = (y_test == y_predict).mean()
print('执行次数:%d。损失函数是:%0.4f。准确率是:%0.4f'%(i+1,c,accuracy))
if accuracy > 0.91:
saver.save(sess,'./model/estimator',global_step=i)
print('---------------------------模型保存成功----------------------------')

保存了模型,在上一次的基础上继续进行学习,这样的话可以直接从上次的准确率开始

 # 其实代码是一样的,只是加了个saver.restore还原
with tf.Session() as sess:
# 还原到sess会话中
saver.restore(sess,'./model/estimator-99') for i in range(100,200):
c = 0
for j in range(100):
X_train,y_train = mnist.train.next_batch(550)
opt_,cost = sess.run([opt,loss],feed_dict = {X:X_train,y:y_train})
c += cost/100 # 计算准确率
X_test,y_test = mnist.test.next_batch(2000) y_predict = sess.run(y_,feed_dict={X:X_test}) y_test = np.argmax(y_test,axis = -1)
y_predict = np.argmax(y_predict,axis = 1) accuracy = (y_test == y_predict).mean()
print('执行次数:%d。损失函数是:%0.4f。准确率是:%0.4f'%(i+1,c,accuracy)) if accuracy > 0.91:
saver.save(sess,'./model/estimator',global_step=i)
print('---------------------------模型保存成功----------------------------')

Tensorflow-逻辑斯蒂回归的更多相关文章

  1. [置顶] 局部加权回归、最小二乘的概率解释、逻辑斯蒂回归、感知器算法——斯坦福ML公开课笔记3

    转载请注明:http://blog.csdn.net/xinzhangyanxiang/article/details/9113681 最近在看Ng的机器学习公开课,Ng的讲法循循善诱,感觉提高了不少 ...

  2. 【分类器】感知机+线性回归+逻辑斯蒂回归+softmax回归

    一.感知机     详细参考:https://blog.csdn.net/wodeai1235/article/details/54755735 1.模型和图像: 2.数学定义推导和优化: 3.流程 ...

  3. 【转】机器学习笔记之(3)——Logistic回归(逻辑斯蒂回归)

    原文链接:https://blog.csdn.net/gwplovekimi/article/details/80288964 本博文为逻辑斯特回归的学习笔记.由于仅仅是学习笔记,水平有限,还望广大读 ...

  4. 机器学习之LinearRegression与Logistic Regression逻辑斯蒂回归(三)

    一 评价尺度 sklearn包含四种评价尺度 1 均方差(mean-squared-error) 2 平均绝对值误差(mean_absolute_error) 3 可释方差得分(explained_v ...

  5. spark机器学习从0到1逻辑斯蒂回归之(四)

      逻辑斯蒂回归 一.概念 逻辑斯蒂回归(logistic regression)是统计学习中的经典分类方法,属于对数线性模型.logistic回归的因变量可以是二分类的,也可以是多分类的.logis ...

  6. python机器学习实现逻辑斯蒂回归

    逻辑斯蒂回归 关注公众号"轻松学编程"了解更多. [关键词]Logistics函数,最大似然估计,梯度下降法 1.Logistics回归的原理 利用Logistics回归进行分类的 ...

  7. 【项目实战】pytorch实现逻辑斯蒂回归

    视频指导:https://www.bilibili.com/video/BV1Y7411d7Ys?p=6 一些数据集 在pytorch框架下,里面面有配套的数据集,pytorch里面有一个torchv ...

  8. 【TensorFlow入门完全指南】模型篇·逻辑斯蒂回归模型

    import库,加载mnist数据集. 设置学习率,迭代次数,batch并行计算数量,以及log显示. 这里设置了占位符,输入是batch * 784的矩阵,由于是并行计算,所以None实际上代表并行 ...

  9. 逻辑斯蒂回归(Logistic Regression)

    逻辑回归名字比较古怪,看上去是回归,却是一个简单的二分类模型. 逻辑回归的模型是如下形式: 其中x是features,θ是feature的权重,σ是sigmoid函数.将θ0视为θ0*x0(x0取值为 ...

  10. 逻辑斯蒂回归VS决策树VS随机森林

    LR 与SVM 不同 1.logistic regression适合需要得到一个分类概率的场景,SVM则没有分类概率 2.LR其实同样可以使用kernel,但是LR没有support vector在计 ...

随机推荐

  1. 洛谷P3124被困在haybales

    题目 按理来说是可以二分的,但是发现其实直接暴力然后注意细节就可以了. 先找到牛所在的起点,然后分别向右找和向左找. 第一次查找从\(r\)点冲到\(l\)点时,突破不了\(l\),从\(l\)点冲到 ...

  2. MySQL 常用字段类型与对应的Java类型

    varchar 不定长字符串 字符串或是没有合适类型时,可以选择它作为字段类型 对应Java中的String int bigint 数值 一般以int作为数字的默认选择,数值很大时使用bigint 对 ...

  3. Pytest权威教程03-原有TestSuite的执行方法

    目录 原有TestSuite的执行方法 使用pytest运行已存在的测试套件(test suite) 返回: Pytest权威教程 原有TestSuite的执行方法 Pytest可以与大多数现有的测试 ...

  4. fluent求平均温度、最高低温度和平均传热系数【转载】

    摘自<ANSYS FLUENT技术基础与工程应用:流动传热与环境污染控制领域> 一.平均温度的计算: 双击导航栏中Result下方的Report进入Report任务页面,双击其中的Volu ...

  5. vue+vue-resource设置请求头(带上token)

    前言 有这样的一个需求,后台服务器要求把token放在请求头里面 嗯一般是通过data里面通过参数带过去的 第一种方法 全局改变: Vue.http.headers.common['token'] = ...

  6. Python操作excel工具

    python操作excel的工具类有很多,下面举几个常见的工具类: 一. 1.xlrd 只能读取excel操作,支持xls和xlsx两种格式的 2.xlwt 只能写入excel操作,只支持 xls格式 ...

  7. oralce 超过1亿条数据的数据库表清理实践

    2018-08-18 16:58 无腿鸟 阅读(331) 评论(0) 编辑 收藏 问题:当一个表的数据量超过一亿条,要删除其中的5000w条,如何处理. 如果直接使用delete语句,会涉及到到大量的 ...

  8. Wamp 本地访问特别慢,原因在这

      Wamp 本地访问特别慢.打开空的页面都要400ms,彻底疯了     什么localhost改为127.0.0.1 什么 清理日志缓存,都不好使, 重点在Xdebug,安装了Xdebug之后变慢 ...

  9. Idea2019.2破解

    1.在 hosts 文件里加入如下的配置:C:\WINDOWS\system32\drivers\etc\hosts 0.0.0.0 https://account.jetbrains.com:443 ...

  10. [转]Git 代码撤销、回滚到任意版本(当误提代码到本地或master分支时)

    两种情况(场景) 情况一      代码还只在本地,未push到运程仓库,想把代码还原到上一次commit的代码,此时操作为代码撤销 解决方案: 1 git reset [--hard|soft|mi ...