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. 一个有趣的js隐式转换的问题

    一个有趣的js隐式转换的问题 在chrome的控制台中打印一下表达式 [] + {} //结果为 [object object] 然后调整顺序打印 {} + [] //结果为 0 然后将两个表达式组合 ...

  3. 数据结构实验之排序一:一趟快排( SDUT 3398)

    #include <stdio.h> #include <string.h> int a[110000]; void qusort(int l, int r, int a[]) ...

  4. if后的判断条件

    转自https://blog.csdn.net/lxn18392641463/article/details/78321080 先说明原因.这里不只是有代码规范的问题,还有汇编语言的问题,要知道为什么 ...

  5. 说说AutoMapper那些事

    项目中用到了DTO与Model之间的转换,因为model项目比较多,所以需要使用工具或者代码来实现快速的转换.AutoMapper就是一个很好的基于约定的object-object mapper.映射 ...

  6. SpringData like关键字不起作用

    使用springdata简单查询时,like关键字不起作用 Hibernate: select article0_.oId as oId1_2_, article0_.articleAbstract ...

  7. threejs行星运动小demo总结

    1.动画构思 就是中间有个红太阳,外面有几个行星球体环绕着太阳在各自轨道上做圆周运动.下面是效果图 2.基本要素 使用threejs的基本构件包括:渲染器(renderer),相机(camera),场 ...

  8. 【Python 代码】CS231n中Softmax线性分类器、非线性分类器对比举例(含python绘图显示结果)

    1 #CS231n中线性.非线性分类器举例(Softmax) #注意其中反向传播的计算 # -*- coding: utf-8 -*- import numpy as np import matplo ...

  9. ciscn2019华北赛区半决赛day1web5CyberPunk

    刚比赛完的一段时间期末考试云集,没有时间复现题目.趁着假期,争取多复现几道题. 复现平台 buuoj.cn 解题过程 首先进入题目页面 看起来没有什么特别的,就是一个可以提交信息的页面.查看响应报文也 ...

  10. T-MAX--冲刺合集

    目录 设想和目标 计划 资源 变更管理 设计/实现 测试/发布 团队的角色,管理,合作 总结 照片 各组员对于最终项目成果的贡献度 这个作业属于哪个课程 2019秋福大软件工程实践Z班 (福州大学) ...