tensorflow学习笔记之使用tensorflow进行MNIST分类(3)

Tensorflow(六)使用LSTM对MNIST数据集进行分类 对于RNN和LSTM不了解的朋友,可以去看看这两篇入门介绍,写的非常棒,在此特别感谢两位作者!! RNN入门:https://zhuanlan.zhihu.com/p/28054589 LSTM入门:http://colah.github.io/posts/2015-08-Understanding-LSTMs 本文参照了:https://jasdeep06.github.io/posts/... 阅读详情

在加载MNIST数据集时候用到了Input_data.py。这段代码其实非常重要,现在和大家一起分享一下我的学习理解

#coding=utf-8

#input_data.py的详解
#学习读取数据文件的方法,以便读取自己需要的数据库文件(二进制文件)
"""Functions for downloading and reading MNIST data."""
from __future__ import print_function
from __future__ import absolute_import
from __future__ import division
import gzip
import os
import urllib
import numpy
from six.moves import urllib
from six.moves import xrange  # pylint: disable=redefined-builtin
import tensorflow as tf
# 数据源
SOURCE_URL = 'http://yann.lecun.com/exdb/mnist/'
def maybe_download(filename, work_directory):
  """Download the data from Yann's website, unless it's already here."""
  #判断目录文件是否存在,不存在则创建该目录
  if not os.path.exists(work_directory):
    os.mkdir(work_directory)
  #需要读取的文件路径
  filepath = os.path.join(work_directory, filename)
  if not os.path.exists(filepath):
    filepath, _ = urllib.urlretrieve(SOURCE_URL + filename, filepath)
    statinfo = os.stat(filepath)
    print('Succesfully downloaded', filename, statinfo.st_size, 'bytes.')
  return filepath

def _read32(bytestream):
  dt = numpy.dtype(numpy.uint32).newbyteorder('>')
  return numpy.frombuffer(bytestream.read(4), dtype=dt)

def extract_images(filename):
  """Extract the images into a 4D uint8 numpy array [index, y, x, depth]."""
  print('Extracting', filename)
  with gzip.open(filename) as bytestream:
    magic = _read32(bytestream)
    if magic != 2051:
      raise ValueError(
          'Invalid magic number %d in MNIST image file: %s' %
          (magic, filename))
    num_images = _read32(bytestream)
    rows = _read32(bytestream)
    cols = _read32(bytestream)
    buf = bytestream.read(rows * cols * num_images)
    data = numpy.frombuffer(buf, dtype=numpy.uint8)
    data = data.reshape(num_images, rows, cols, 1)
    return data
#将稠密标签向量变成稀疏的标签矩阵
#eg:若原向量的第i行为3,则对应稀疏矩阵的第i行下标为3的值为1,其余为0
def dense_to_one_hot(labels_dense, num_classes=10):
  """Convert class labels from scalars to one-hot vectors."""
  num_labels = labels_dense.shape[0]
  index_offset = numpy.arange(num_labels) * num_classes
  labels_one_hot = numpy.zeros((num_labels, num_classes))
  #labels_dense.ravel()将整个数组展成一个一维数组
  #labels_dense.flat[i]即将labels_dense看成一个一维数组,取其第i个变量
  labels_one_hot.flat[index_offset + labels_dense.ravel()] = 1#报错?
  return labels_one_hot

def extract_labels(filename, one_hot=False):
  """Extract the labels into a 1D uint8 numpy array [index]."""
  print('Extracting', filename)
  with gzip.open(filename) as bytestream:
    magic = _read32(bytestream)
    if magic != 2049:
      raise ValueError(
          'Invalid magic number %d in MNIST label file: %s' %
          (magic, filename))
    num_items = _read32(bytestream)
    buf = bytestream.read(num_items)
    labels = numpy.frombuffer(buf, dtype=numpy.uint8)
    if one_hot:
      return dense_to_one_hot(labels)
    return labels
class DataSet(object):
  def __init__(self, images, labels, fake_data=False):
    if fake_data:
      self._num_examples = 10000
    else:
      assert images.shape[0] == labels.shape[0], (
          "images.shape: %s labels.shape: %s" % (images.shape,
                                                 labels.shape))
      self._num_examples = images.shape[0]
      # Convert shape from [num examples, rows, columns, depth]
      # to [num examples, rows*columns] (assuming depth == 1)

      assert images.shape[3] == 1
      images = images.reshape(images.shape[0],
                              images.shape[1] * images.shape[2])
      # Convert from [0, 255] -> [0.0, 1.0].
      images = images.astype(numpy.float32) #转化数据类型为float32
      images = numpy.multiply(images, 1.0 / 255.0)  #按照元素乘法,将灰度值除以255
    self._images = images
    self._labels = labels
    self._epochs_completed = 0
    self._index_in_epoch = 0
  @property
  def images(self):
    return self._images
  @property
  def labels(self):
    return self._labels
  @property
  def num_examples(self):
    return self._num_examples
  @property
  def epochs_completed(self):
    return self._epochs_completed
  def next_batch(self, batch_size, fake_data=False):
    """Return the next `batch_size` examples from this data set."""
    if fake_data:
      fake_image = [1.0 for _ in xrange(784)]
      fake_label = 0
      return [fake_image for _ in xrange(batch_size)], [fake_label for _ in xrange(batch_size)]
    start = self._index_in_epoch
    self._index_in_epoch += batch_size
    #若当前训练读取的index>总体的images数时,则读取开始的batch_size大小的数据
    if self._index_in_epoch > self._num_examples:
      # Finished epoch
      self._epochs_completed += 1
      # Shuffle the data
      perm = numpy.arange(self._num_examples)
      numpy.random.shuffle(perm)
      self._images = self._images[perm]
      self._labels = self._labels[perm]
      # Start next epoch
      start = 0
      self._index_in_epoch = batch_size
      assert batch_size <= self._num_examples
    end = self._index_in_epoch
    return self._images[start:end], self._labels[start:end]
def read_data_sets(train_dir, fake_data=False, one_hot=False):
  class DataSets(object):
    pass
  data_sets = DataSets()
  if fake_data:
    data_sets.train = DataSet([], [], fake_data=True)
    data_sets.validation = DataSet([], [], fake_data=True)
    data_sets.test = DataSet([], [], fake_data=True)
    return data_sets
  TRAIN_IMAGES = 'train-images-idx3-ubyte.gz'
  TRAIN_LABELS = 'train-labels-idx1-ubyte.gz'
  TEST_IMAGES = 't10k-images-idx3-ubyte.gz'
  TEST_LABELS = 't10k-labels-idx1-ubyte.gz'
  VALIDATION_SIZE = 5000
  local_file = maybe_download(TRAIN_IMAGES, train_dir)
  train_images = extract_images(local_file)
  local_file = maybe_download(TRAIN_LABELS, train_dir)
  train_labels = extract_labels(local_file, one_hot=one_hot)
  local_file = maybe_download(TEST_IMAGES, train_dir)
  test_images = extract_images(local_file)
  local_file = maybe_download(TEST_LABELS, train_dir)
  test_labels = extract_labels(local_file, one_hot=one_hot)
  validation_images = train_images[:VALIDATION_SIZE]
  validation_labels = train_labels[:VALIDATION_SIZE]
  train_images = train_images[VALIDATION_SIZE:]
  train_labels = train_labels[VALIDATION_SIZE:]
  data_sets.train = DataSet(train_images, train_labels)
  data_sets.validation = DataSet(validation_images, validation_labels)
  data_sets.test = DataSet(test_images, test_labels)
  return data_sets


使用 TensorFlow 实现并训练 VGGNet 进行 MNIST 分类 VGGNet 是一种经典的卷积神经网络(CNN)架构,由多个卷积层和全连接层组成。它的主要特点是使用了相同的卷积核大小(3x3)和相同的池化层大小(2x2),通过堆叠更多的卷积层来提取复杂的图像特征。本文将使用。 阅读详情

相关推荐

TensorFlow的MNIST手写数字分类问题

一、简介MNIST TensorFlow编程学习的入门一般都是基于MNIST手写数字数据集和Cifar(包括cifar-10和cifar-100)数据集,因为它们都比较小,一般的设备即可进行训练和测试。而相比之下虽然基于ImageNet分类数据集的实验更具有意义,更加权威,但由于ImageNet数据集实在太大,不便于入门的童靴直接上手操作。所以接下来,我将只讲一下如何用TensorF...

Yuancccc的博客 1786

Tensorflow+Keras入门——利用mnist手写数字识别快速入门Keras

本文简介 基于Keras+Tensorflow,利用Lenet-5模型的mnist手写数字识别的完整程序和代码分析。适合想要入门Keras的新手。 博主由于很久没碰Tensorflow,很多代码都报了类似WARNING:tensorflow:From /someplace/xx.py:xxx: xxx is deprecated and will be removed in a future ve...

umbrellalalalala的博客 4399

别再乱刷了!《另一个伊甸》异节、改典、典录获取途径完全梳理,这些隐藏奖励你拿全了吗?

本文全面解析《另一个伊甸》中异节、改典、典录的获取途径,包括断章、外传、精灵试炼等高概率掉落副本,以及隐藏任务、限时活动和特殊挑战。提供高效收集策略和优先级建议,帮助玩家快速获取这些稀缺资源,实现角色真证和上限突破。

weixin_42699679的博客 579

零基础用TensorFlow玩转Kaggle的“手写识别”

 这是一个TensorFlow的系列文章,本文是第二篇,在这个系列中,你讲了解到机器学习的一些基本概念、TensorFlow的使用,并能实际完成手写数字识别、图像分类、风格迁移等实战项目。 文章将尽量用平实的语言描述、少用公式、多用代码截图,总之这将是一份很赞的入门指南。 今天将用TensorFlow实现一个手写数字识别功能,来展示TensorFlow如何用神经网络实现对图片的识别。goo...

Geek 642

华为ITR流程实战指南:从设计到落地的全流程解析(附完整方案下载)

本文深度解析华为ITR流程从设计到落地的全流程实战指南。ITR不仅是高效处理客户问题的“救火”系统,更是驱动产品改进、预防问题的企业“免疫系统”。文章详细拆解了流程设计的四步走策略、三层技术支持体系的组织保障、以闭环改进为核心的考核激励,并探讨了如何借鉴其精髓,优化自身问题管理,实现从被动响应到主动服务的跨越。

y2z3a4b5c的博客 377

【深度学习新浪潮】智能体在图像处理领域的技术突破与实践指南

智能体正在重构图像处理的技术版图:从多智能体分工的"专业化协作",到多模态统一的"极简架构",再到工具增强的"实战能力",技术突破不断降低开发门槛并拓展应用边界。对于开发者而言,2025年的核心机遇在于结合具体场景选择成熟框架(如医疗用IteR-MRL、工业用NVIDIA NIM),通过微调与工具集成快速落地解决方案。随着硬件成本下降与开源生态完善,图像处理智能体将从当前的"高端场景赋能"走向"千行百业普及",真正成为数字世界的"视觉感知与操作核心"。

专注:太空算力、AI infra、异构调度、大模型成本工程 438

深度学习笔记:基于Keras库的MNIST手写数字识别

本文介绍基于Keras库创建一个最简单的神经网络模型进行MNIST手写数字识别的试验。麻雀虽小五脏俱全,模型虽然简单但是这个试验基本上覆盖了一个深度学习任务的完整流程中各主要的基本步骤。这是深度学习的一个“Hello, World”式的试验。以此为基础就可以通过添枝加叶探索深度学习世界啦。

chenxy_bwave的专栏 4230

【AUTOSAR-COM】-5.2-“Deadline Monitoring超时监控”-2-基于IPdu实现

目录 1 在CFG中配置Deadline Monitoring超时监控 1.1 参数说明 1.2 生成代码差异 2 通过一段测试代码看Deadline Monitoring超时监控 3 使用CAN盒观察Deadline Monitoring实际测试效果 3.1 Case 1:ECU开始工作时,没有收到Frame 3.2 Case 2:ECU工作中,接收的Frame丢失、 4 小结 5 结尾 关键字: DM=Deadline Monitoring超时监控 ComFirstTime...

「汽车电子助手」的博客 1788

Tensorflow学习笔记(8)——input_data.py解析

这里学习一下前面用到的读取mnist数据库文件的代码。其实并没有用到Tensorlfow的东西,但是读取数据库文件是使用Tensorflow编程实现功能的基础,因此归到Tensorflow的学习笔记中。 这里需要注意的主要有以下几点:

lhanchao的博客 3万+

【RKNN】RKNN-Toolkit2 Python API函数详解

RKNN-Toolkit2 的 API 设计以开发者效率为核心,覆盖模型转换、量化、部署全流程。通过灵活的参数配置(如多核调度、混合量化)和调试工具(性能分析、精度对比),可快速适配复杂边缘场景。

浩瀚之水的专栏 786

基于MATLAB的奇异谱分析(SSA)算法详解

本文详细介绍了基于MATLAB的奇异谱分析(SSA)算法。文章首先阐述了SSA的基本概念、历史发展及其与传统信号分析方法的对比优势,指出SSA作为一种非参数、非线性时间序列分析方法,特别适合处理非平稳信号。随后详细解析了SSA算法的核心原理与数学模型,包括轨迹矩阵构建、奇异值分解、分组与重构四个关键步骤。文章还提供了完整的MATLAB实现框架和代码解析,涵盖参数检查、轨迹矩阵构建、SVD分解、分组策略和重构过程。最后,通过信号分解、去噪和预测三个应用案例展示了SSA的实际效果。

qq_42212808的博客 168

tensorflow中手写数据集inputdata代码解释

# -*- coding: utf-8 -*- """ Created on Fri Dec 15 10:07:41 2017 @author: acer """ from _future_ import print_function import gzip import os import urllib #urllib这个是python内置的HTTP请求库 import numpy

hszzjs的博客 1456

TC3XX - MCAL知识点(三十八):AURIX™ TC3xx 的EDSADC实现旋变解码功能(理论知识+手册阅读)

本文系统梳理了英飞凌AURIX系列芯片EDSADC模块的技术手册内容。首先概述了该模块的架构特点,包括模拟/数字输入通道和总线地址信息。重点解析了手册中的关键知识点:1)模拟量输入的差分/单端模式;2)数字量连接的触发、数据源和时钟源选择;3)功能配置中的寄存器操作注意事项;4)输入通道的三种数据来源模式;5)滤波器链的组成和工作原理;6)旋变应用中的载波信号生成和延迟补偿机制。最后对SRM、SAUL、SBLL等专业术语进行了详细解释。全文为理解EDSADC模块的硬件特性和配置方法提供了系统的技术参考。

梦想技术家 589

python3 7.用tensorflow进行MNIST数据集简单分类 学习笔记

文章目录前言一、MNIST数据集1.1 MNIST数据集简介1.2 MNIST数据集在tensorflow中的用法二、使用简单的神经网络进行MNIST数据集简单分类 前言 &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;计算机视觉系列之学习笔记主要是本人进行学习人工智能(计算机视觉方向)的代码整理。本系列所有代码是用python3编写,在平台Anaconda中运行实现,在使用代码时,默认你已...

112 2659

Java全栈开发:充电桩管理系统项目实战

技术收获深入理解分布式系统架构掌握高并发场景解决方案提升系统设计能力经验教训前期需求分析的重要性技术选型需要考虑长期维护测试覆盖率的重要性未来展望引入AI预测故障支持更多支付方式优化用户体验通过此项目的开发,不仅实现了充电桩的智能化管理,也积累了宝贵的全栈开发经验。项目中的很多技术方案和架构设计都具有普遍适用性,可以在其他类似项目中借鉴使用。@Componentstatic {// 初始化状态转换规则。

exlink2012的专栏 1249

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

python3 9.tensorflow使用DropOut进行MNIST数据集简单分类 学习笔记

文章目录前言一、使用DropOut抵抗过拟合 前言 &nbsp; &nbsp;&nbsp;&nbsp;计算机视觉系列之学习笔记主要是本人进行学习人工智能(计算机视觉方向)的代码整理。本系列所有代码是用python3编写,在平台Anaconda中运行实现,在使用代码时,默认你已经安装相关的python库,这方面不做多余的说明。本系列所涉及的所有代码和资料可在我的github上下载到,gitbub地址...

112 1415

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

python3 10.tensorflow使用正则化进行MNIST数据集简单分类 学习笔记

文章目录前言一、使用正则化抵抗过拟合介绍二、使用正则化进行MNIST数据集分类 前言 &nbsp; &nbsp;&nbsp;&nbsp;计算机视觉系列之学习笔记主要是本人进行学习人工智能(计算机视觉方向)的代码整理。本系列所有代码是用python3编写,在平台Anaconda中运行实现,在使用代码时,默认你已经安装相关的python库,这方面不做多余的说明。本系列所涉及的所有代码和资料可在我的gi...

112 1447

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

炼数成金Tensorflow学习笔记之3.2_MNIST分类简单版本

炼数成金Tensorflow学习笔记之3.2_MNIST分类简单版本代码及分析 代码及分析 import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data # 载入数据集 mnist = input_data.read_data_sets('.\MNIST_data', one_hot=True...

hanhuoqwer 201

python3 11.tensorflow使用不同优化器进行MNIST数据集简单分类 学习笔记

文章目录前言一、使用不同优化器进行训练 前言 &nbsp; &nbsp;&nbsp;&nbsp;计算机视觉系列之学习笔记主要是本人进行学习人工智能(计算机视觉方向)的代码整理。本系列所有代码是用python3编写,在平台Anaconda中运行实现,在使用代码时,默认你已经安装相关的python库,这方面不做多余的说明。本系列所涉及的所有代码和资料可在我的github上下载到,gitbub地址:ht...

112 1203

python3 8.tensorflow使用交叉熵代价函数进行MNIST数据集简单分类 学习笔记

文章目录前言一、交叉熵代价函数简介二、交叉熵代价函数使用 前言 &nbsp; &nbsp;&nbsp;&nbsp;计算机视觉系列之学习笔记主要是本人进行学习人工智能(计算机视觉方向)的代码整理。本系列所有代码是用python3编写,在平台Anaconda中运行实现,在使用代码时,默认你已经安装相关的python库,这方面不做多余的说明。本系列所涉及的所有代码和资料可在我的github上下载到,gi...

112 852

python3 15.tensorflow使用卷积神经网络(CNN)对MNIST数据集进行分类 学习笔记

文章目录前言一、卷积神经网络CNN优势二、模拟LeNet-5网络结构对MNIST数据集分类 前言 &nbsp; &nbsp;&nbsp;&nbsp;计算机视觉系列之学习笔记主要是本人进行学习人工智能(计算机视觉方向)的代码整理。本系列所有代码是用python3编写,在平台Anaconda中运行实现,在使用代码时,默认你已经安装相关的python库,这方面不做多余的说明。本系列所涉及的所有代码和资料...

112 1838

python3 16.tensorflow使用长短期记忆模型(LSTM)对MNIST数据集进行分类 学习笔记

文章目录前言一、LSTM模型结构二、使用LSTM识别MNIST手写数字 前言 &nbsp; &nbsp;&nbsp;&nbsp;计算机视觉系列之学习笔记主要是本人进行学习人工智能(计算机视觉方向)的代码整理。本系列所有代码是用python3编写,在平台Anaconda中运行实现,在使用代码时,默认你已经安装相关的python库,这方面不做多余的说明。本系列所涉及的所有代码和资料可在我的github...

112 2491

[DL学习笔记]从人工神经网络到卷积神经网络_3_使用tensorflow搭建CNN来分类not_MNIST数据(有一些问题)...

3:用tensorflow搭个神经网络出来 为什么用tensorflow呢,应为谷歌是亲爹啊,虽然有些人说caffe更适合图像啊mxnet效率更高等等,但爸爸就是爸爸,Android都能那么火,一个道理嘛。其实这些个框架一通百通,就是语法不一样了些。从tensorflow开始吧。 关于tf的安装详见另一篇博文,此处tensorflow的学习基本来自Ud...

267

使用TensorFlow实现MNIST数据集分类

1 MNIST数据集 MINST数据集是由Yann LeCun教授提供的手写数字数据库文件,其官方下载地址http://yann.lecun.com/exdb/mnist/ 下载好MNIST数据集后,将其放在Spyder工作目录下(若使用Jupyter编程,则放在Jupyter工作目录下),如图: G:\Anaconda\Spyder为笔者Spyder工作目录,MNIST_data为新建文件...

little_fat_sheep 6623

1.利用TensorFlow进行Fashion MNIST数据集的基本分类问题

玩了那么多天,终于有时间来写博客了.之前看过很多TensorFlow官网的教程,全忘了.现在复习,就从头开始吧,加油!

coder 2万+

Tensorflow中Classification分类学习

这次我们会介绍如何使用Tensorflow解决Classification(分类)问题。在之前的文章中介绍的都是Regression(回归)问题。分类和回归的区别在于输出变量的类型上。通俗理解定量输出是回归,或者说是连续变量预测;定性输出是分类,或者说是离散变量预测。如预测房价这是一个回归任务;把东西分成几类,比如猫狗猪牛,就是一个分类任务。一、MNIST数据。首先准备数据(MNIST库)from...

Microstrong 2482
上一篇: lua和torch安装教程
下一篇: Win7配置theano+cuda8+cudnn实现gpu加速及遇到问题的解决方法
MidasKing
博客等级 码龄11年 1万+粉丝 30原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值