TensorFlow笔记4——优化手写数字识别模型之代价函数和拟合
前言 上篇笔记我们利用MNIST数据集训练了一个手写数字识别的模型,但是准确率非常的低,维持在91%左右,我们可以尝试着将准确率提高到96%以上,在实验之前我们需要先了解一些基本的概念,本篇文章可能会有些枯燥,因为大多都是理论知识。 本文重点 激活函数 代价函数 拟合 什么是激活函数?激活函数是干嘛的? 想了解什么是激活函数,就要先了解神经网络的基本模型,下图所示为一单一人工神经网络的基本模型图: ...
前言 上篇笔记我们利用MNIST数据集训练了一个手写数字识别的模型,但是准确率非常的低,维持在91%左右,我们可以尝试着将准确率提高到96%以上,在实验之前我们需要先了解一些基本的概念,本篇文章可能会有些枯燥,因为大多都是理论知识。 本文重点 激活函数 代价函数 拟合 什么是激活函数?激活函数是干嘛的? 想了解什么是激活函数,就要先了解神经网络的基本模型,下图所示为一单一人工神经网络的基本模型图: ...
什么是优化器(Optimizer) 神经网络越复杂 , 数据量越大 , 我们需要在训练神经网络的过程上花费的时间也就越多. 原因很简单, 就是因为计算量太大了. 可是往往有时候为了解决复杂的问题, 复杂的结构和大数据又是不能避免的, 所以我们需要寻找一些方法, 让神经网络聪明起来, 快起来。那些可以加速神经网络训练的方法就叫做优化器(Optimizer) 推荐阅读:加速神经网络训练 (Speed Up Training) 常见的优化器 这个部分的理论知识实在太多了,我简单的整理了一点点,详见机器学习:各种优化器Optimizer的总结与比较 下面是TensorFlow中提供的相关优化器的API ...
前言 Tensorflow 是一个编程系统,使用图(graph)来表示计算任务,图(graph)中的节点称之为 op (operation),一个 op 获得 0 个或多个 Tensor,执行计算,产生 0 个或多个 Tensor。Tensor 看作是一个 n 维的数组或列表。图必须在会话(Session)里被启动。 基本概念 使用图(Graph)来表示计算任务 在被称为会话(Session)的上下文(context)中执行图 使用tensor表示数据 通过变量(Variable)维护状态 使用feed和fetch可以为任意的操作赋值或者从中获取数据 下图显示了Session、Graph、Tensor、Variable之间的关系 ...
传统神经网络存在的问题 说卷积神经网络前,我们要先说一下传统神经网络存在的一些问题,上图是一个典型的传统神经网络的示例图。设想一个场景,假设我们要训练的的样本图片是100x100(像素)的,那么整张图片总共就是有10000个像素,那么在定义一个 传统神经网络的时候,输入层(input layer)就需要有1w个神经元,那么如果我们的中间的隐藏层(hidden layer)也需要有1w个神经元,那么总共需要的参数(权值)就高达1亿个(1w*1w),试想一下,这还只是一张100x100的图片就需要这么多的参数,如果图片更大之后呢,可想而知整个神经网络的计算量有多恐怖。当然,一旦权重多了之后,则必须要有足够量的样本进行训练,否则就会出现过拟合的现象。因此我们可以知道,传统神经网络有以下两个问题: 权值太多,计算量太大 权值太多,如果没有大量样本支撑则会出现过拟合现象 ...