人工智能
文章平均质量分 77
chengqiuming
这个作者很懒,什么都没留下…
展开
-
TensorFlow中梯度下降函数
一 介绍下面介绍在TensorFlow中进行随机梯度下降优化的函数。在TensorFlow中通过一个叫Optimizer的优化器类进行训练优化。二 梯度下降优化器三 说明在训练过程中先实例化一个优化函数如tf.train.GradientDescentOptimizer,并基于一定的学习率进行梯度优化训练。optimizer = tf.train.GradientDescentOptimizer(...原创 2018-05-04 19:02:52 · 2617 阅读 · 0 评论 -
利用全连接网络将图片分类
一 实例描述构建一个简单的多层神经网络,以拟合MNIST样本特征完成分类任务。二 代码import tensorflow as tf# 导入 MINST 数据集from tensorflow.examples.tutorials.mnist import input_datamnist = input_data.read_data_sets("/data/", one_hot=True)#...原创 2018-05-05 18:26:23 · 2519 阅读 · 0 评论 -
卷积函数使用实战
一 实例描述通过手动生成一个5*5的矩阵来模拟图片,定义一个2*2的卷积核,来测试tf.nn.conv2d函数里的不同参数,验证其结果在这个例子中,分为如下几个步骤1 定义输入变量2 定义卷积核变量3 定义卷积操作4 运行卷积操作二 代码import tensorflow as tf '''定义输入变量定义3个输入变量用来模拟输入图片,分别是5*5大小的1通道矩阵、5*5大小的2通道矩阵、...原创 2018-05-12 09:48:20 · 1715 阅读 · 1 评论 -
使用卷积提取图片轮廓
一 实例描述将彩色的图片生成带边缘化信息的图片。本例中先载入一个图片,然后使用一个“3通道输入,1通道输出的3*3卷积核”(即sobel算子),最后使用卷积函数输出生成的结果。二 代码'''载入图片并显示首先将图片放到代码的同级目录下,通过imread载入,然后将其显示并打印出来'''import matplotlib.pyplot as plt # plt 用于显示图片import m...原创 2018-05-12 10:16:54 · 4349 阅读 · 0 评论 -
池化函数应用
一 池化函数说明1 语法格式tf.nn.max_pool(input,ksize,strides,padding,name=None)tf.nn.avg_pool(input,ksize,strides,padding,name=None)2 参数说明input:需要池化的输入,一般池化层接在卷积层后面,所以输入通常是feature map,依然是[batch,height,width,chann...原创 2018-05-12 11:17:11 · 996 阅读 · 0 评论 -
利用异或数据集演示欠拟合问题
一 简介本实例演示欠拟合问题。二 实例描述构建异或数据集模拟样本,再构建一个简单的多层神经网络来拟合其样本特征,观察出现欠拟合的现象。三 代码import tensorflow as tfimport numpy as npimport matplotlib.pyplot as pltfrom sklearn.utils import shufflefrom matplotlib.colo...原创 2018-05-05 19:45:51 · 536 阅读 · 0 评论 -
利用异或数据集演示过拟合问题
一 实例描述构建异或数据集模拟样本,再构建一个简单多层神经网络来拟合其样本特征,通过增大网络复杂性的方式来观察过拟合现象。二 代码import tensorflow as tfimport numpy as npimport matplotlib.pyplot as pltfrom sklearn.utils import shufflefrom matplotlib.colors imp...原创 2018-05-05 20:13:20 · 1472 阅读 · 0 评论 -
CiFAR介绍
CIFAR是由Alex Krizhevsky、Vinod Nair和Geoffrey Hinton收集而来,起初的数据集共分10类,分别为飞机、汽车、鸟、猫、鹿、狗、青蛙、马、船、卡车,所以CIFAR数据集常以CIFAR-10命名。CIFAR共包含60000张32*32的彩色图像(包含50000张训练图片,10000张测试图片),其中没有任何类型重叠的情况。因为是彩色图像,所以这个数据集是三通道的...原创 2018-05-12 14:51:47 · 12443 阅读 · 1 评论 -
下载CIFAR数据
与MNIST类似,TensorFlow中同样有一个下载和导入CIFAR数据集的代码文件,不同的是,自从TensorFlow1.0之后,将里面的Models模块分离了出来。下载和导入CIFAR数据集的代码在models里面,所以要去TensorFlow的Github网站将其下载下来。github下载地址:https://github.com/tensorflow/models代码下载后,将其解压,将...原创 2018-05-12 15:30:21 · 3027 阅读 · 0 评论 -
导入并显示CIFAR数据集
一 实例描述通过import cifar10_input来导入CIFAR数据集。二 代码import cifar10_inputimport tensorflow as tfimport pylab#取数据batch_size = 12data_dir = '/tmp/cifar10_data/cifar-10-batches-bin''''cifar10_input.inputs...原创 2018-05-12 15:49:51 · 3399 阅读 · 5 评论 -
使用带隐藏层的神经网络拟合异或操作
一 介绍多层神经网络非常好理解,就是在输入和输出中间多加些神经元,每一层可以加多个,也可加很多层。下面通过一个例子将异或数据进行分类。二 实例描述通过构建异或规律的数据集作为模拟样本,构建一个简单的多层神经网络来拟合其样本特征完成分类任务。1 异或规则当两个数相同时,输出为0,不相同时输出为1,这就是异或规则。表示为两类数据:(0,0)和(1,1)为一类(0,1)和(1,0)为一类2 网络模型介绍...原创 2018-05-05 16:10:55 · 2760 阅读 · 0 评论 -
padding规则介绍
padding属性的意义是定义元素边框和元素内容之间的空间。在tf.nn.conv2d函数中,当变量padding为VALID和SAME,函数具体是怎么计算的呢?其实是有公式的。为了方便演示,先定义几个变量:输入的尺寸高和宽定义成:in_height,in_width卷积核的高和宽定义成filter_height、filter_width输入的尺寸中高和宽定义成output_height、out_...原创 2018-05-11 21:44:24 · 4062 阅读 · 0 评论 -
卷积函数tf.nn.conv2d详解
一 语法格式tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, data_format=None, name=None)二 参数解释input:指需要做卷积的输入图像,它要求是一个Tensor,具有[batch,in_height,in_width,in_channels]这样的形状(shape),具体含义是“训...原创 2018-05-11 19:56:16 · 1828 阅读 · 0 评论 -
退化学习率——在训练速度和精度之间找到平衡
每一个优化器的第一个参数learning_rate代表学习率。设置学习率的大小,是在精度和速度之间找到一个平衡点。如果学习率比较大,则训练速度会提升,但结果的精度不够。如果学习率比较小,精度虽然提升了,但训练会耗费太多的时间。下面介绍设置学习率的方法——退化学习率。退化学习率又叫学习率衰减,它的本意是希望在训练过程中对于学习率大和小的优点能够为我们所用,也就是当训练刚开始时,使用大的学习率加快速度...原创 2018-05-04 19:29:33 · 2655 阅读 · 0 评论 -
退化学习率的用法举例
一 实例描述本例中使用迭代循环计数器变量global_step来标记循环次数,初始学习率为0.1,令其以10次衰退0.9的速度进行退化。二 代码import tensorflow as tfglobal_step = tf.Variable(0, trainable=False)initial_learning_rate = 0.1 #初始学习率learning_rate = tf.trai...原创 2018-05-04 19:41:58 · 929 阅读 · 0 评论 -
初始化学习参数
一 介绍在定义学习参数时,可以通过get_variable和Variable两个方式,对于一个网络模型,参数不同的初始化情况,对网络影响会很大,所以TensorFlow提供了很多具有不同特性的初始化函数。在使用get_variable时,先要了解一下它的定义,它的定义如下:def get_variable(name, shape=None, dtype=tf.float32, initialize...原创 2018-05-04 20:45:57 · 256 阅读 · 0 评论 -
单个神经元的扩展——Maxout网络
一 介绍Maxout网络可以理解为单个神经元的扩展,主要是扩展单个神经元里面的激活函数。Maxout是将激活函数变成一个网络选择器,原理就是将多个神经元并列地放在一起,从它们的输出结果中找到最大的那个,代表对特征相应最敏感,然后取这个神经元的结果参与后面的运算。下图是单个神经元和Maxout网络的对比它的公式可以理解成:z1=w1*x+b1z2=w2*x+b2z3=w3*x+b3z4=w4*x+b...原创 2018-05-04 21:48:51 · 1281 阅读 · 3 评论 -
TensorFlow多通道卷积技术的演示
一 介绍这里说的多通道卷积,可以理解为一种新型的CNN网络模型,在原有卷积核模型的基础上的扩展。原有的卷积层是使用单个尺寸的卷积核对输入数据卷积操作,生成若干个feature map。而多通道卷积的变化就是,在单个卷积层中加入若干个不同尺寸的过滤器,这样会使生成的feature map特性更加多样。二 代码import cifar10_inputimport tensorflow as tfi...原创 2018-05-17 21:40:47 · 3149 阅读 · 1 评论 -
用线性单分逻辑回归分析肿瘤是良性的还是恶性的
一 实例描述假设某肿瘤医院想用神经网络对已有的病例数据进行分类,数据的样本特征包括病人的年龄和肿瘤的大小,对应的标签是该病例是良性肿瘤还是恶性肿瘤。二 代码import tensorflow as tfimport matplotlib.pyplot as pltimport numpy as npfrom sklearn.utils import shuffle#生成样本集 '''...原创 2018-05-05 08:45:55 · 1491 阅读 · 0 评论 -
用线性逻辑回归处理多分类问题
一 实例描述构建网络模型完成将3类样本分开的任务。在实现过程中先生成3类样本模拟数据,构造神经网络,通过softmax分类的方法计算神经网络的输出值,并将其分开。二 代码import tensorflow as tfimport numpy as npimport matplotlib.pyplot as pltfrom sklearn.utils import shufflefrom m...原创 2018-05-05 11:58:01 · 2963 阅读 · 0 评论 -
卷积操作
一 步长步长是卷积操作的核心。通过步长的变换,可以得到想要的不同类型的卷积操作。先以窄卷积为例,看看它的操作及相关术语。上图中5*5大小的矩阵代表图片,每个图片右侧的3*3矩阵代表卷积核,最右侧的3*3矩阵为计算完的结果feature map。卷积操作仍然是将卷积核(filter)对应图片(image)中的矩阵数据一一相乘,再相加。上图中,第一行feature map中的第一个元素,是由image...原创 2018-05-11 19:19:26 · 3448 阅读 · 0 评论 -
池化层
池化的主要目的是降维,即在保持原有特征的基础上最大限度地将数组的维数变小。池化的操作外表跟卷积很像,只是算法不同:卷积是将对应像素上的点相乘,然后再相加。池化中只关心滤波器的尺寸,不考虑内部的值。算法是:滤波器映射区域内的像素点取平均值或最大值。池化步骤也有步长,这一点与卷积是一样的。1 均值池化就是在图片上对应出滤波器大小的区域,对里面的所有不为0的像素点取均值。这种方法得到的特征数据会对背景信...原创 2018-05-11 19:35:59 · 4366 阅读 · 0 评论 -
显示CIFAR数据集的原始图片
如果希望看到正常的原始数据,有两种方式:1 修改cifar10_input.py文件,让它不去标准化。2 手动读取数据并显示一 通过修改cifar10_input.py1 直接修改cifar10_input.py的240行到245行之间代码 #下面这一行是添加的 float_image=resized_image # Subtract off the mean and divide ...原创 2018-05-12 16:11:07 · 2754 阅读 · 2 评论 -
cifar10_input的distorted_inputs功能介绍
cifar10_input.py文件里还有个功能强大的函数——distorted_inputs,可以在代码中找到其实现。它是针对train数据的,对train数据进行了变形处理,起了一个数据增广的作用。在数据集比较小、数据量远远不够的情况下,可以对图片进行翻转、随机剪切等操作以增加数据,制作出更多的样本,提高对图片的利用率。该函数的核心代码如下: # Randomly crop a [height...原创 2018-05-12 16:23:57 · 2119 阅读 · 1 评论 -
损失函数
一 损失函数介绍损失函数用于描述模型预测值与真实值的差距大小。一般有有两种常见的算法——均值平方差(MSE)和交叉熵。下面来分别介绍每个算法的具体内容。1 均值平方差均值平方差(Mean Squared Error,MSE),也称“均方误差”,在神经网络中主要是表达预测值和真实值之间的差异,在数理统计中,均方误差是指参数估计值与参数真值之差平方的预期值。公式如下:主要是对每一个真实值与预期值相减的...原创 2018-04-28 20:08:37 · 5389 阅读 · 1 评论 -
softmax算法与损失函数的综合应用
一 代码'''这个实例以两个值进行了以下3次试验(1)两次softmax试验:将输出值logits分别进行1次和2次softmax。(2)观察交叉熵:将步骤(1)中的两个值分别进行.softmax_cross_entropy_with_logits,观察他们的区别。(3)自建公式试验:将两次softmax的值放到自建组合的公式里得到正确的值。'''###################...原创 2018-04-29 08:52:13 · 1413 阅读 · 0 评论 -
通过正则化改善过拟合情况
一 实例描述构建异或数据集模拟样本,使用多层神经网络将其分类,并使用正则化技术来改善过拟合情况。二 代码import tensorflow as tfimport numpy as npimport matplotlib.pyplot as pltfrom sklearn.utils import shufflefrom matplotlib.colors import colorConv...原创 2018-05-07 21:43:48 · 662 阅读 · 0 评论 -
通过增加数据集改善过拟合
一 实例描述通过增加数据集的方式来改善过拟合情况,这里每次循环生成1000个数据。二 代码import tensorflow as tfimport numpy as npimport matplotlib.pyplot as pltfrom sklearn.utils import shufflefrom matplotlib.colors import colorConverter, ...原创 2018-05-07 22:02:47 · 4121 阅读 · 0 评论 -
演示gradients基本用法
一 实例描述通过定义两个矩阵相乘来演示使用gradients求梯度。在反向传播过程中,神经网络需要对每一个loss对应的学习参数求偏导。算出的这个值叫梯度,用来乘以学习率然后更新学习参数使用的。它是通过tf.gradients函数来实现的。tf.gradients函数里的第一个参数为求导公式,第二个参数为指定公式中哪个变量来求偏导。二 代码import tensorflow as tfw1 = ...原创 2018-05-14 21:37:34 · 1891 阅读 · 0 评论 -
使用gradients对多个式子求多变量偏导
一 实例描述两个OP,4个参数,演示使用gradients同时为两个式子4个参数求梯度。二 代码import tensorflow as tftf.reset_default_graph()w1 = tf.get_variable('w1', shape=[2])w2 = tf.get_variable('w2', shape=[2])w3 = tf.get_variable('w3', ...原创 2018-05-14 21:51:15 · 2283 阅读 · 0 评论 -
演示梯度停止实现
一 实例描述在反向传播过程中某种特殊情况需要停止梯度的运算时,在TensorFlow中提供了一个tf.stop_gradient函数,被它定义过的节点将没有梯度运算功能。二 代码import tensorflow as tftf.reset_default_graph()w1 = tf.get_variable('w1', shape=[2])w2 = tf.get_variable('w2...原创 2018-05-15 21:28:59 · 1069 阅读 · 0 评论 -
TensorFlow使用函数封装库重写CIFAR卷积网络
一 实例描述使用tf.contrib.layers进行重构,重写CIFAR卷积网络。二 代码import cifar10_inputimport tensorflow as tfimport numpy as npbatch_size = 128data_dir = '/tmp/cifar10_data/cifar-10-batches-bin'print("begin")images...原创 2018-05-16 19:52:54 · 467 阅读 · 0 评论 -
TensorFlow优化卷积核技术演示
一 简介在实际的卷积训练中,为了加速,常常把卷积核裁开。比如一个3*3的过滤器,可以裁成3*1和1*3两个过滤器,分别对原有的输入做卷积操作,这样可以大大提高运算速度。原理:在浮点运算中乘法消耗的资源比较多,我们目的就是尽量减小乘法运算。比如对一个5*2的原始图片进行一次3*3的同卷积,相当于生成的5*2像素中每一个都要经历3*3次乘法,那么一共有90次。同样是这个图片,如果先进行一次3*1的同卷...原创 2018-05-16 20:09:54 · 1559 阅读 · 0 评论 -
演示反池化的操作
TensorFlow中目前还没有反池化操作的函数。对于最大池化层,也不支持输出最大激活值得位置,但是同样有个池化的反向传播函数tf.nn.max_pool_with_argmax()。该函数可以找出位置,需要开发者利用这个函数做一些改动,自己封装一个最大池化操作,然后再根据mask写出反池化函数。def max_pool_with_argmax(net,stride):'''重定义一个最大池化...原创 2018-05-13 16:46:50 · 2087 阅读 · 0 评论 -
反池化原理
反池化是池化的逆操作,是无法通过池化的结果还原出全部的原始数据。因为池化的过程就只保留了主要信息,舍去部分信息。如果想从池化后的这些主要信息恢复出全部信息,则存在信息缺失,这时只能通过补位来实现最大程度的信息完整。池化有两种:最大池化和平均池化,其反池化也需要与其对应。一 平均池化和反平均池化首先还原成原来的大小,然后将池化结果中的每个值都填入其对应原始数据区域中相应位置即可。平均池化和反平均池化...原创 2018-05-13 16:29:48 · 7019 阅读 · 0 评论 -
TensorFlow演示反卷积的操作
一 反卷积函数介绍1 语法格式def conv2d_transpose(value,filter,output_shape,strides,padding="SAME",data_format="NHWC",name=None):2 参数说明value:代表通过卷积操作之后的张量,一般为NHWC类型。filter:代表卷积核。output_shape:代表输出的张量形状也是个四维张量。stride...原创 2018-05-13 16:24:29 · 1108 阅读 · 1 评论 -
在TensorFlow中使用queue
TensorFlow提供了一个队列机制,通过多线程将读取数据与计算数据分开。因为在处理海量数据集的训练时,无法把数据集一次全部载入到内存中,需要一边从硬盘中读取数据,一边进行训练计算。对于建立队列读取文件部分代码,已经在cifar10_input.py里实现了。这里讲解内部机制以及如何使用。一 队列的启动和挂起机制import cifar10_inputimport tensorflow as...原创 2018-05-12 17:24:12 · 3179 阅读 · 0 评论 -
softmax算法——处理分类问题
一 介绍softmax基本可以算是分类任务的标配。本篇介绍softmax是什么,以及softmax图解和举例。二 什么是softmax现实生活中需要对某一问题进行多种分类,例如对图片进行分类的例子,这时就需要使用softmax算法。softmax,就是如果判断输入属于某一个类的概率大于属于其他类的概率,那么这个类对应的值就逼近于1,其他类的值就逼近于0.该算法主要应用就是多分类,而且是互斥的,即只...原创 2018-04-27 21:13:37 · 7700 阅读 · 1 评论 -
为CIFAR图片分类模型添加BN
一 实例描述演示BN函数的使用方法。二 代码import cifar10_inputimport tensorflow as tfimport numpy as npfrom tensorflow.contrib.layers.python.layers import batch_normbatch_size = 128data_dir = '/tmp/cifar10_data/cifa...原创 2018-05-18 19:59:41 · 864 阅读 · 2 评论 -
Neutron网络实现模型——VxLAN详解
VXLAN的实现模型与VLAN的实现模型非常相像,如下图从表面来看,VXLAN与VLAN的实现模型相比,仅仅一个差别:VLAN中对应的br-ethx,而VXLAN中对应的是br-tun(br-tun是一个混合单词的缩写:Bridge-Tunnel。此时的Tunnel是VXLAN Tunnel。)其实,br-ethx是一个OVS,br-tun也是一个OVS。所有说,两者的差别不是实现组件的差别,而是...原创 2018-05-18 21:35:32 · 3516 阅读 · 0 评论