热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

炼丹技巧(一)——MNIST数据上的炼丹(TensorFlow)之Shuffle_batch的探索

0.写作目的好记性不如烂笔头。记录在学习过程中遇到的问题,以及对问题的思考和解决方法,为后来人提供一些经验。1.网络的重要性虽然MNIST数据集相对比较简单,已经不能作为网络的评价

0. 写作目的

好记性不如烂笔头。记录在学习过程中遇到的问题,以及对问题的思考和解决方法,为后来人提供一些经验。

1. 网络的重要性

虽然MNIST数据集相对比较简单,已经不能作为网络的评价标准,因为许多网络在MNIST数据上的精度都超过了99%,但是网络也不是随意选择的。刚开始随即设计了一个网络,用于测试MNIST数据集,收敛较慢,因此修改了网络的结构。

原始网络

炼丹技巧(一)——MNIST数据上的炼丹(TensorFlow)之Shuffle_batch的探索

原始网络部分训练过程(由于训练时间有些长,就只训练了部分)

炼丹技巧(一)——MNIST数据上的炼丹(TensorFlow)之Shuffle_batch的探索

修改后的网络

炼丹技巧(一)——MNIST数据上的炼丹(TensorFlow)之Shuffle_batch的探索

修改后的网络的训练过程显示:

炼丹技巧(一)——MNIST数据上的炼丹(TensorFlow)之Shuffle_batch的探索

2.  Shuffle Batch 的探索

2.1 问题的来源

目前深度学习的框架,对于训练都有自己的一套完整流程。此处在验证如何读取较大数据时产生的一个问题,具体的读入数据方式可以参考我的博客——基于tensorflow的MNIST探索(基于图像版本的实现与探索)——如何读取较大数据集进行训练(一)。

2.2 问题的描述

在自己写的LoadDatas类中,存在一个public函数next_batch(self, batch_size=16)。在训练时,对于next_batch需要进行打乱,那么问题来了,如何进行打乱。博主认为有三种打乱的方式:

i) 对于每次的next_batch,将所有数据集打乱,然后取前batch_size个数据,然后抽取的样本放入总样本中,对应概率中的放回抽样

ii) 对于每次的next_batch,将所有数据集打乱,然后取前batch_size个数据,然后将抽取的样本不放入总样本中,对应概率中的不放回抽样

iii) 对于每次的next_batch,在每一个epoch时将顺序打乱,然后开始从头向后去batch_size个数据,即只打乱一次

2.3 针对问题进行的实验

网络架构选择修改后的网络(tf.train.MomentumOptimizer(learning_rate=0.001, momentum=0.9), batch_size=32)。

i)情况下的训练结果

炼丹技巧(一)——MNIST数据上的炼丹(TensorFlow)之Shuffle_batch的探索

ii) 情况下的训练结果

炼丹技巧(一)——MNIST数据上的炼丹(TensorFlow)之Shuffle_batch的探索

iii) 情况下的训练结果(由于时间关系,只训练了3个epoch)

炼丹技巧(一)——MNIST数据上的炼丹(TensorFlow)之Shuffle_batch的探索

2.4 实验的结果以及结论

从2.3中的训练结果图来看,采用i)情况,即有放回的batch_size结果比较好,而且iii)情况效果最差,原因可能是由于shuffle次数过少,导致数据的分布可能呈现一定的规律。当然也有可能实验不够充分,存在一定的随机性。

 

There may be some mistakes in this blog. So, any suggestions and comments are welcome!

 


推荐阅读
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 本文介绍了在Python张量流中使用make_merged_spec()方法合并设备规格对象的方法和语法,以及参数和返回值的说明,并提供了一个示例代码。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 本博文基于《Amalgamationofproteinsequence,structureandtextualinformationforimprovingprote ... [详细]
  • 【论文】ICLR 2020 九篇满分论文!!!
    点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自:深度学习技术前沿 ... [详细]
  • OCR:用字符识别方法将形状翻译成计算机文字的过程Matlab:商业数学软件;CUDA:CUDA™是一种由NVIDIA推 ... [详细]
  • 本人学习笔记,知识点均摘自于网络,用于学习和交流(如未注明出处,请提醒,将及时更正,谢谢)OS:我学习是为了上 ... [详细]
  • 代码如下:#coding:utf-8importstring,os,sysimportnumpyasnpimportmatplotlib.py ... [详细]
  • 干货 | 携程AI推理性能的自动化优化实践
    作者简介携程度假AI研发团队致力于为携程旅游事业部提供丰富的AI技术产品,其中性能优化组为AI模型提供全方位的优化方案,提升推理性能降低成本࿰ ... [详细]
  • 建立分类感知器二元模型对样本数据进行分类
    本文介绍了建立分类感知器二元模型对样本数据进行分类的方法。通过建立线性模型,使用最小二乘、Logistic回归等方法进行建模,考虑到可能性的大小等因素。通过极大似然估计求得分类器的参数,使用牛顿-拉菲森迭代方法求解方程组。同时介绍了梯度上升算法和牛顿迭代的收敛速度比较。最后给出了公式法和logistic regression的实现示例。 ... [详细]
  • Window10+anaconda+python3.5.4+ tensorflow1.5+ keras(GPU版本)安装教程 ... [详细]
  • 老牌医药收割AI红利:先投个15亿美元抢中国人才
    萧箫发自凹非寺量子位报道|公众号QbitAI没想到,一场大会把我的“刻板印象”攻破了。2021世界人工智能大会现场,能看见不少熟悉的身影, ... [详细]
author-avatar
王意之
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有