学卷积神经网络的理论的时候,我觉得自己看懂了,可是到了用代码来搭建一个卷积神经网络时,我发现自己有太多模糊的地方.这次还是基于MINIST数据集搭建一个卷积神经网络,首先给出一个基本的模型,然后再用Batch Norm.Dropout和早停对模型进行优化:在此过程中说明我在调试代码过程中遇到的一些问题和解决方法. 一.搭建基本的卷积神经网络 第一步:准备数据 在<Hands on Machine Learning with Scikit-Learn and TensorFlow>这本书上,用的…
数据集及预处理 从这个例子开始,相当比例的代码都来自于官方新版文档的示例.开始的几个还好,但随后的程序都将需要大量的算力支持.Google Colab是一个非常棒的云端实验室,提供含有TPU/GPU支持的Python执行环境(需要在Edit→Notebook Settings设置中打开).速度比不上配置优良的本地电脑,但至少超过平均的开发环境. 所以如果你的电脑运行速度不理想,建议你尝试去官方文档中,使用相应代码的对应链接进入Colab执行试一试. Colab还允许新建Python笔记,来尝试自…
在上一篇博客<TensorFlow之DNN(一):构建“裸机版”全连接神经网络>中,我整理了一个用TensorFlow实现的简单全连接神经网络模型,没有运用加速技巧(小批量梯度下降不算哦)和正则化方法,通过减小batch size,也算得到了一个还可以的结果. 那个网络只有两层,而且MINIST数据集的样本量并不算太大.如果神经网络的隐藏层非常多,每层神经元的数量巨大,样本数量也巨大时,可能出现三个问题: 一是梯度消失和梯度爆炸问题,导致反向传播算法难以进行下去: 二是在如此庞大的网络中进行训…
博客断更了一周,干啥去了?想做个聊天机器人出来,去看教程了,然后大受打击,哭着回来补TensorFlow和自然语言处理的基础了.本来如意算盘打得挺响,作为一个初学者,直接看项目(不是指MINIST手写数字识别这种),哪里不会补哪里,这样不仅能学习到TensorFlow和算法知识,还知道如何在具体项目中应用,学完后还能出来一个项目.是不是要为博主的想法双击666?图样! 现在明白了什么叫基础不牢地动山摇,明白了什么叫步子太大直接就放弃,明白了我是适合循序渐进的学习,暂时不适合对着项目直接干. 同时…
本文根据最近学习TensorFlow书籍网络文章的情况,特将一些学习心得做了总结,详情如下.如有不当之处,请各位大拿多多指点,在此谢过. 一.相关性概念 1.卷积神经网络(ConvolutionNeural Network,CNN) 19世纪60年代科学家最早提出感受野(ReceptiveField).当时通过对猫视觉皮层细胞研究,科学家发现每一个视觉神经元只会处理一小块区域的视觉图像,即感受野.20世纪80年代,日本科学家提出神经认知机(Neocognitron)的概念,被视为卷积神经网络最初…
前言   在学计算机视觉的这段时间里整理了不少的笔记,想着就把这些笔记再重新整理出来,然后写成Blog和大家一起分享.目前的计划如下(以下网络全部使用Pytorch搭建): 专题一:计算机视觉基础 介绍CNN网络(计算机视觉的基础) 浅谈VGG网络,介绍ResNet网络(网络特点是越来越深) 介绍GoogLeNet网络(网络特点是越来越宽) 介绍DenseNet网络(一个看似十分NB但是却实际上用得不多的网络) 整理期间还会分享一些自己正在参加的比赛的Baseline 专题二:GAN网络 搭建普…
cost function,一般得到的是一个 scalar-value,标量值: 执行 SGD 时,是最终的 cost function 获得的 scalar-value,关于模型的参数得到的: 1. 分类和预测 评估: 准确率: 速度:健壮性: 可规模性: 可解释性: 2. Data Augmentation 平移.旋转/翻转.缩放.加噪声 3. 溢出 矩阵求逆,W=PQ−1 W = P/(Q+1e-5*eye(d)); 4. batch norm.relu.dropout 等的相对顺序 Or…
mnist的卷积神经网络例子和上一篇博文中的神经网络例子大部分是相同的.但是CNN层数要多一些,网络模型需要自己来构建. 程序比较复杂,我就分成几个部分来叙述. 首先,下载并加载数据: import tensorflow as tf import tensorflow.examples.tutorials.mnist.input_data as input_data mnist = input_data.read_data_sets("MNIST_data/", one_hot=Tru…
3:用tensorflow搭个神经网络出来 为什么用tensorflow呢,应为谷歌是亲爹啊,虽然有些人说caffe更适合图像啊mxnet效率更高等等,但爸爸就是爸爸,Android都能那么火,一个道理嘛.其实这些个框架一通百通,就是语法不一样了些.从tensorflow开始吧. 关于tf的安装详见另一篇博文,此处tensorflow的学习基本来自Udacity中google的深度学习课程. 1:tensorflow的计算图 在tensorflow中编写代码可以分成两个部分,首先是要定义一个计算…
前馈神经网络的弊端 前一篇文章介绍过MNIST,是采用的前馈神经网络的结构,这种结构有一个很大的弊端,就是提供的样本必须面面俱到,否则就容易出现预测失败.如下图: 同样是在一个图片中找圆形,如果左边为训练样本,右边为测试样本,如果只训练了左边的情况,右边的一定会预测错误,然而在我们人眼看来,这两个圆形的特征其实是一样的,不过是移动了一个位置而已,但是因为前馈网络结构的原因,导致在做权重分配的时候,把更多的权重分配给了左上角,右下角分配的较少,所以在做最终预测,便会出现较大的误差.所以,我们需要在…