神经网络
繁华落叶草
这个作者很懒,什么都没留下…
展开
-
Tensorflow笔记之图像预处理
import tensorflow as tfimport matplotlib.pyplot as pltimport numpy as npdef distort_color(image, color_ordering=0): if color_ordering == 0: image = tf.image.random_brightness(image, ma...原创 2020-04-16 16:14:04 · 191 阅读 · 0 评论 -
Tensorflow笔记之图像处理函数
下面代码演示了如何对jpeg格式图像进行编码/解码,代码如下:import matplotlib.pyplot as pltimport tensorflow as tf# 读取图像的原始数据image_raw_data = tf.gfile.FastGFile("D:/path/to/picture/picture.jpg", 'rb').read()with tf.Ses...原创 2020-04-16 10:35:29 · 143 阅读 · 0 评论 -
Tensorflow笔记之MNIST转化为Tensorflow的通用格式TFRecords
import tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_dataimport numpy as np# 生成整数型的属性def _int64_feature(value): return tf.train.Feature(int64_list=tf.train.Int64List...原创 2020-04-15 16:05:05 · 172 阅读 · 0 评论 -
Tensorflow笔记之实现迁移学习
# -*- coding:utf-8 -*-import glob # 文件名匹配包import os.path # 获取文件属性包import numpy as npimport tensorflow as tffrom tensorflow.python.platform import gfile # 提供一个操作文件的API# 原始输入数据的目录,这个目录下有5个子...原创 2020-04-14 14:36:35 · 314 阅读 · 1 评论 -
LeNet-5模型代码(在mnist_train.py上修改)
首先是mnist_train.py的修改如下:import osimport tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_dataimport numpy as np# 加载mnist_inference.py中定义的常量和前向传播的函数import mnist_inference...原创 2020-04-08 15:12:08 · 465 阅读 · 0 评论 -
Tensorflow笔记之卷积神经网络简介
卷积神经网络和全链接神经网络的区别就是神经网络中相邻两层的连接方式。使用全连接神经网络处理图像的最大问题是全连接层的参数太多,对弈MNIST数据集,每一张图的大小是28x28x1,假设第一层的隐藏节点数为500个,那么一个全连接层的神经网络将有28x28x500+500=392500个参数当图片更大时,参数会更多,参数增多会导致计算变慢,同时会导致过拟合。所以需要一个合理的结构来减少神经网络...原创 2020-04-06 14:30:47 · 314 阅读 · 0 评论 -
Tensorflow笔记之图像识别常用数据集简介
1 图像识别问题简介及经典数据集 视觉是人类认识世界非常重要的一种知觉。对于计算机来说,让计算机识别图片中的内容是很困难的。常用的经典数据集如下:MNIST手写体识别数据集是一个相对简单的数据集,在其他更加复杂的图像识别处理集上,卷积神经网络有更加突出的表现。CIFAR数据集就是一个影响力很大的图像分类数据集。CIFAR数据集分为CIFAR-10和CIFAR-100两个问题,他们都是图像...原创 2020-04-06 13:52:09 · 741 阅读 · 0 评论 -
Tensorflow笔记之持久化原理及数据格式
事实上原创 2020-04-01 21:54:24 · 215 阅读 · 0 评论 -
Tensorflow笔记之Tensorflow模型持久化
为了让训练结果可以复用,需要将训练得到的神经网络模型持久化。Tensorflow提供了一个非常简单的API来保存和还原一个神经网络,这个API就是tf.train.Saver类,下面代码给出了保存Tensorflow计算图的方法,如下所示...原创 2020-03-31 16:15:04 · 193 阅读 · 0 评论 -
Tensorflow笔记之变量管理
在前面已经讲了Tensorflow常用的五种优化方法,其中在结构设计上使用激活函数和多层隐藏层。在优化过程中使用指数衰减来设置学习率,加入正则化的损失函数以及滑动平均模型,有效的提高了神经网络模型的正确率。下面学习变量管理: 在上一篇博文中,将计算神经网络前向传播结果的过程抽象成了一个函数。通过这种方式在训练和测试过程中可以统一调用这个函数来获得模型的前向传播结果,函数帝国一如下...原创 2020-03-30 16:21:06 · 140 阅读 · 0 评论 -
Tensorflow笔记之神经网络训练及不同模型结果对比
(1)前面已经介绍了利用指数衰减的学习率设置、使用正则化来避免过拟合,以及使用滑动平均模型来使得最终模型更加健壮,下列代码给出了一个在MNIST数据集上实现这些完整Tensorflow程序。 ...原创 2020-03-25 21:50:14 · 1198 阅读 · 0 评论 -
Tensorflow笔记之MNIST数据处理
首先MNIST是一个非常有名的手写字体数字识别数据集,Tensorflow对这个数据集进行了封装,让其使用起来更加方便。MNIST数据集是NIST数据集的一个子集,它包含了60000张图片作为训练集,10000张图片作为测试集。每一张图片都代表了0-9中的一个数字。图片的大小都是28x28,且数字都会出现在图片正中间。 为了方便使用,Tensorflow提供了一个类来...原创 2020-03-22 20:06:00 · 298 阅读 · 0 评论 -
Tensorflow笔记之滑动平均模型
为了使模型在测试数据上更健壮的方法——————滑动平均模型。在采用随机梯度下降算法训练神经网络时,使用滑动平均模型在很多应用中都可以在一定程度上提高最终模型在测试训练数据上的表现。 在Tensorflow中提供tf.train.ExponentialMovingVaerage来实现滑动平均模型。在初始化ExponentialMovingAverage时,需要提供一个衰减率,...原创 2020-03-22 15:18:58 · 181 阅读 · 0 评论 -
Tensorflow笔记之过拟合问题
前面已经说到如何在训练数据上优化一个给定的损失函数,但是在真实的应用中想要的并不是让模型尽量拟合训练数据,而是通过训练出来的模型对未知的数据给出判断。所谓拟合,指的是当前一个模型过于复杂之后,它可以很好地“记忆”每一个训练数据中随机噪声的部分而忘了要去“学习”训练数据中通用的趋势。举一个例子,如果一个模型中的参数比训练数据总数还多,那么只要训练数据不冲突,这个模型就可以记住所有训练数据的结...原创 2020-03-21 23:26:06 · 261 阅读 · 1 评论 -
Tensorflow笔记之神经网络进一步优化
在前面已经介绍了神经网络优化的基本算法,通过梯度下降算法和反向传播算法。其中梯度下降算法学习率的设置尤为重要,因为它是控制参数更新的速度,决定了每次更新的幅度,如果幅度过大,那么可能导致参数在极优值得两侧来回移动。以为例,如果优化中使用的学习率为1,那么整个优化过程如下表所示:当学习率过大时,梯度下降算法的运行过程 轮数 当前轮参数值 梯度X学习率 更新后参数值...原创 2020-03-18 21:20:05 · 126 阅读 · 0 评论 -
Tensorflow笔记之神经网络优化算法
神经网络中的优化算法最常用反向传播算法和梯度下降算法来调整神经网络中参数的取值。梯度下降算法主要用于优化单个参数的取值,而反向传播算法给出了一个高效的方式在所有参数上使用梯度下降算法,从而使神经网络模型在训练数据上的损失函数尽可能小。反向传播算法是训练神经网络的核心算法,他可以根据定义好的损失函数优化神经网络中参数的取值,从而使神经网络模型在训练数据集上的损失函数达到一个较小值。 神...原创 2020-03-17 22:47:06 · 356 阅读 · 0 评论 -
Tensorflow笔记之自定义损失函数
Tensorflow不仅支持经典损失函数,还可以优化任意的自定义损失函数。下面以预测产品销量为例。在预测产品销量时,如果预测多了,商家损失的是生产商品的成本,如果预测少了,损失的是商品的利润。前面所讲到的均方误差损失函数不能很好的最大化销售利润。下面的公式给出了一个当预测多于真实值和预测少于真实值时有不同损失系数的损失函数:其中yi为一个batch中第i个数据的正确答案,yi‘为神经...原创 2020-03-16 22:07:06 · 300 阅读 · 0 评论 -
Tensorflow笔记之损失函数
首先我们要明白神经网络模型的效果以及优化的目标是通过损失函数来定义的。下面将介绍用于分类和回归的经典损失函数。并通过Tensorflow实现。(1)分类问题和回归问题是监督学习的两大类。现在介绍分类问题和回归问题中的经典损失函数。 通过神经网络解决多分类问题最常见的方法就是设置n个输出节点,其中n为类别的个数,对于每一个样例,神经网络可以得到一个n维数组作为结果输出。数组中的每个维度对...原创 2020-03-15 16:10:17 · 214 阅读 · 0 评论 -
Tensorflow笔记之多层网络解决异或问题
深度学习的一个重要性质———多层变换。在神经网络发展历程中,有一个重要的问题就是异或。最开始的单层神经网络并无法解决异或问题。当加入隐藏 之后,异或问题就可以很好地解决。因为深层神经网络有组合特征提取的功能,这个特征对于解决不易提取特征向量的问题有很大帮组。...原创 2020-03-14 19:56:24 · 410 阅读 · 0 评论 -
Tensorflow笔记之激活函数去线性化
如果将每一个神经元的输出通过一个非线性函数,那么整个神经网络的模型就变成了非线性的了。这个非线性函数就是激活函数。那么前向传播算法加上激活函数和偏置项后,如下定义:相比前面的公式,主要有两个改变。第一个是增加了偏置项(bias),偏置项是神经网络中常用的一种结构。第二个是每个节点不再是淡出的加权和,在加权和的基础上还做了一个非线性变换。常用的几种非线性激活函数图像如下:目前Ten...原创 2020-03-12 22:20:08 · 457 阅读 · 0 评论 -
Tensorflow笔记之训练神经网络模型
首先在前面的笔记中已经实现了通过Tensorflow变量来表示神经网络参数。现在学习使用监督学习的方式来更合理的参数设置参数取值。首先使用监督学习的方式设置神经网络参数需要有一个标注好的训练数据。以判断零件合格为例,标注好的训练数据集就是收集一批合格和一批不合格的零件。 监督学习最重要的思想就是,在已知答案的标注数据集上,模型给出的预测结果要尽量接近真实值。通过调整神经网络中的参数对...原创 2020-03-12 21:37:31 · 232 阅读 · 1 评论 -
Tensorflow笔记之深层神经网络
前面的学习中已经介绍了Tensorflow的基本概念。下面会学习深层神经网络。深层神经网络的定义为:一类通过多层非线性变换对高复杂性数据建模算法的合集。因为深层神经网络是实现“多层非线性变换”最常用的一种方法。深度学习具有两个非常重要的特性:多层和非线性。(1)线性模型的局限性在线性模型中,模型的输出为输入的加权和。假设一个模型的输出y和输入满足以下关系,那么这个模型就是一个线性模型。...原创 2020-03-11 21:06:25 · 138 阅读 · 0 评论 -
Tensorflow笔记之完整神经网络
下面代码为一个完整的神经网络解决二分类问题。import tensorflow as tf# numpy 是一个科学计算工具包,这里通过NumPy工具包生成模拟数据集from numpy.random import RandomState#定义训练数据batch的大小batch_size=8#定义神经网络的参数,这里还是沿用3.4.2小节中给出的神经网络结构w1=tf.Vari...原创 2020-03-10 22:05:01 · 203 阅读 · 0 评论 -
Tensorflow笔记之placeholder
通常如果每轮迭代中选取的数据都要通过常量来表示,那么Tensorflow的计算图将会太大。因为每生成一个常量,计算图就会增加一个节点。如果经过几百万甚至几亿轮迭代,计算图就会非常庞大,利用率会很低。为了避免这个问题,Tensorflow提供了placeholder机制用于提供输入数据。placeholder相当于定义了一个位置,这个位置中的数据在程序运行时再指定。这样在程序中就不需要生...原创 2020-03-09 22:19:38 · 302 阅读 · 0 评论 -
Tensorflow笔记之神经网络参数与Tensorflow变量
神经网络的参数是神经网络实现分类回归问题中的重要组成部分。 在Tensorflow中变量(tf.Variable)的作用就是保存和更新神经网路的参数。其使用之前也必须指定初始值。一般使用随机变量给Tensorflow进行赋值,下面是声明一个2X3矩阵变量的方法:weights=tf.Variable(tf.random_normal([2,3],stddev=2))上述代码...原创 2020-03-05 20:01:07 · 266 阅读 · 0 评论