![](https://img-blog.csdnimg.cn/20190918140213434.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
神经网络
简单介绍
琥珀色的琉璃夜
这个作者很懒,什么都没留下…
展开
-
从代码细说FPN的二三事
# 先从 resnet 抽取四个不同阶段的特征图 C2-C5。_, C2, C3, C4, C5 =resnet_graph(input_image, config.BACKBONE,stage5=True, train_bn=config.TRAIN_BN)# Top-down Layers 构建自上而下的网络结构# 从 C5开始处理,先卷积来转换特征图尺寸P5 = KL.Conv2D(256, (1, 1), name='fpn_c5p5')(C5)# 上采样之后的P5和卷积之后的 C4像原创 2020-10-17 00:25:18 · 557 阅读 · 0 评论 -
CNN中的目标多尺度处理方法
视觉任务中处理目标多尺度主要分为两大类:图像金字塔:经典的基于简单矩形特征(Haar)+级联Adaboost与Hog特征+SVM的DPM目标识别框架,均使用图像金字塔的方式处理多尺度目标,早期的CNN目标识别框架同样采用该方式,在image pyramid中,我们直接对图像进行不同尺度的缩放,然后将这些图像直接输入到detector中去进行检测。虽然这样的方法十分简单,但其效果仍然是最佳。特别地,随着图像金字塔尺度归一化(SNIP)的出现,解决了小目标和大目标在小尺度和大尺度下难以识别的问题。特征金字原创 2020-10-03 01:02:41 · 2749 阅读 · 0 评论 -
神经网络注意力机制
概述当神经网络来处理大量的输入信息时,也可以借助人脑的注意力机制,只选择一些关键的信息输入进行处理,用来提高神经网络的效率。在目前的神经网络模型中,可以将max pooling和gating机制近似地看作是自下而上的基于显著性的注意力机制。此外,自上而下的聚焦式注意力也是一种有效的信息选择方法。例如:给定一篇很长的文章,然后就此文章的内容进行提问,提出的问题只和文章中某个段落中的一两个句子相关,其余都无关的。为了减小神经网络的计算代价,只需要把相关的片段挑选出来让后续的神经网络来处理,而不需要把所有文..原创 2020-09-19 00:47:14 · 7299 阅读 · 0 评论 -
关于神经网络优化的那些事
在参考这篇博客的基础上,进行了一些改动和补充训练技巧:要做梯度归一化,即算出来的梯度除以minibatch size(批大小)clip c(梯度裁剪): 限制最大梯度,其实是value = sqrt(w12 + w22….),如果value超过了阈值,就算一个衰减系数或者让value的值等于阈值: 5,10,15dropout对小数据防止过拟合有很好的效果,值一般设为 0.5,小数据上 dropout+sgd 在我的大部分实验中,效果提升都非常明显(实测sgd比adam好).因此可能的话,建议一定原创 2020-07-18 00:25:13 · 210 阅读 · 0 评论 -
pytorch实现神经网络中间层的可视化
实现思路:处理单张图片作为网络输入。根据给定的layer层,获取该层的输出结果features。考虑到features的形状为:[batch_size, filter_nums, H, W] 提取其中的第一个过滤器得到的结果feature。以一张图片作为输入的情况下,我们得到的feature即为[H,W]大小的tensor。将tensor转为numpy,然后归一化到[0,1],最后乘255,使得范围为[0,255]得到灰度图像并保存。实现过程:模型我用了在ImageNet预先训练好的v转载 2020-06-20 01:36:06 · 2030 阅读 · 0 评论 -
pytorch基础操作
PyTorch的优点易于使用的API:它就像Python一样简单。Python的支持:如上所述,PyTorch可以顺利地与Python数据科学栈集成。它非常类似于numpy,甚至注意不到它们的差别。动态计算图:取代了具有特定功能的预定义图形,PyTorch为我们提供了一个框架,以便可以在运行时构建计算图,甚至在运行时更改它们。在不知道创建神经网络需要多少内存的情况下这非常有价值。张量(Tensors)构建一个随机初始化的矩阵x = torch.rand(5, 3)print(x)输出:t原创 2020-06-13 00:33:46 · 372 阅读 · 0 评论 -
DenseNet
基本参照这篇博客写的,改动了一些地方先列下DenseNet的几个优点,感受下它的强大:1、减轻了vanishing-gradient(梯度消失)2、加强了feature的传递3、更有效地利用了feature4、一定程度上较少了参数数量在深度学习网络中,随着网络深度的加深,梯度消失问题会愈加明显,目前很多论文都针对这个问题提出了解决方案,比如ResNet,Highway Networks,Stochastic depth,FractalNets等,尽管这些算法的网络结构有差别,但是核心都在于:cr原创 2020-06-06 00:30:40 · 264 阅读 · 0 评论 -
ZFNet
参考了不少这篇博客一、简介由于AlexNet的提出,大型卷积网络开始变得流行起来,但是人们对于网络究竟为什么能表现的这么好,以及怎么样能变得更好尚不清楚,因此为了针对上述两个问题,提出了一个新颖的可视化技术来一窥中间特征层的功能以及分类的操作。二、网络结构可视化技术揭露了激发模型中每层单独的特征图,也允许观察在训练阶段特征的演变过程且诊断出模型的潜在问题。 可视化技术用到了多层解卷积网络,即由特征激活返回到输入像素空间。 同时进行了分类器输出的敏感性分析,即通过阻止部分输入图像来揭示那部分对于分原创 2020-06-05 23:30:29 · 198 阅读 · 0 评论 -
小样本学习
背景深度学习背景下,每个类至少需要上千张训练样本才能使CNN在已知类别上性能饱和。此外,神经网络 泛化能力 薄弱,当 new class 来临时, 模型很难通过少量的标记样本就学会识别 new concepts (概念)。然而这一切对于人类来说却不成问题,我们人类是具有快速从少量(单)样本中快速学习能力的。即使对于一个五六岁的孩子来说,他从没有见过 “熊猫”,父亲给他看了一次熊猫的图片后,孩子到了动物园也会认识到那个黑眼圈,胖胖的动物叫“熊猫”啊。有的朋友可能会想,为什么我们人类总是能快速的学习到未知原创 2020-05-31 01:31:40 · 2519 阅读 · 0 评论 -
t-SNE原理及代码
SNE基本原理SNE是通过仿射变换将数据点映射到概率分布上,主要包括两个步骤: 1) SNE构建一个高维对象之间的概率分布,使得相似的对象有更高的概率被选择,而不相似的对象有较低的概率被选择。 2) SNE在低维空间里在构建这些点的概率分布,使得这两个概率分布之间尽可能的相似。 t-SNE模型是无监督的降维,只能单独的对数据做操作,它只有fit_transform,而没有fit操作。SNE原理推导SNE是先将欧几里得距离转换为条件概率来表达点与点之间的相似度。具体来说,给定一个N个高维的数据原创 2020-05-15 17:42:44 · 5393 阅读 · 1 评论 -
GoogleNet_V1实战
import tensorflow as tfimport tensorflow.keras as kerasimport matplotlib.pyplot as pltimport numpy as npfrom tensorflow.keras import datasets, layers, optimizers, models, regularizersimport osos.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'def normalize(x_原创 2020-05-10 20:45:35 · 466 阅读 · 1 评论 -
VGG实战
卷积层参数:卷积层 conv3conv3conv3 表示卷积核尺寸为 3×33\times33×3,conv3−64conv3-64conv3−64 表示卷积后通道数为 646464,所有卷积步长 stride=1stride=1stride=1,填充方式 padding=samepadding=samepadding=same(即输出大小和输入大小一致),这样卷积操作不会改变图像大小,仅改变通道数。池化层参数:池化层 maxpoolingmaxpoolingmaxpooling 的参数均为 2×2.原创 2020-05-10 00:42:33 · 609 阅读 · 0 评论 -
AlexNet实战
网络结构:原创 2020-05-09 21:27:12 · 407 阅读 · 0 评论 -
提取神经网络中间层特征进行可视化
这个博客讲的就挺不错但是torch要从官网找到对应的pip语句下再,不然可能会报错原创 2020-05-09 15:08:19 · 1542 阅读 · 0 评论 -
ResNet实战
import osimport tensorflow as tfimport numpy as npfrom tensorflow import kerasimport matplotlib.pyplot as pltos.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'#零均值归一化def normalize(x_train, x_test): x_train = x_train/255. x_test = x_test/255. mean原创 2020-05-09 00:34:30 · 490 阅读 · 0 评论 -
LeNet-5实战
import tensorflow as tffrom tensorflow import kerasimport numpy as npimport matplotlib.pyplot as pltimport osos.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'batch = 32 #要处理的样本数model = tf.keras.Sequen...原创 2020-05-02 01:06:31 · 416 阅读 · 1 评论 -
简单感知器
import tensorflow as tfimport numpy as npimport matplotlib.pyplot as pltimport osos.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'np.random.seed(0)num = 100#y = 0x_1 = np.random.normal(6, 1, size=(nu...原创 2020-05-01 22:28:58 · 149 阅读 · 0 评论 -
简单softmax回归
import tensorflow as tfimport numpy as npimport matplotlib.pyplot as pltimport osos.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'np.random.seed(0)num = 100x_1 = np.random.normal(-3, 1, size=(num))x_2...原创 2020-05-01 21:52:16 · 116 阅读 · 0 评论 -
简单逻辑回归
import numpy as npimport matplotlib.pyplot as pltimport osos.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'np.random.seed(0)num = 100#y = 1x_1 = np.random.normal(6, 1, size=(num))x_2 = np.random.norma...原创 2020-04-24 19:53:02 · 292 阅读 · 0 评论 -
简单线性回归
import numpy as npimport matplotlib.pyplot as pltimport osos.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'np.random.seed(0)x = np.random.normal(size=(100, 1), scale=1)y = 4 * x[:, 0] + 2all_data = np....原创 2020-04-23 22:11:06 · 121 阅读 · 0 评论 -
简单随机梯度下降算法
import numpy as npimport matplotlib as pltimport osos.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'x = np.arange(50) #0~50np.random.seed(1) #每次生成的随机数相同randomarray = (np.random.random(50)*2-1) * 5y = 2...原创 2020-04-22 23:55:26 · 184 阅读 · 0 评论 -
简单反向传播训练实例
import tensorflow as tffrom tensorflow import kerasimport pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport osos.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'w1 = tf.Variable(tf.rand...原创 2020-04-22 00:14:59 · 356 阅读 · 0 评论 -
numpy
NumPy - Ndarray 对象,Ndarray对象是numpy里面最重要的一个 N维数组对象。numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)参数描述object任何暴露数组接口方法的对象都会返回一个数组或任何(嵌套)序列。dtype数...原创 2020-04-18 09:30:11 · 102 阅读 · 0 评论 -
神经网络基础代码
tf.kears实现线性回归import tensorflow as tfimport pandas as pdimport matplotlib.pyplot as pltimport osos.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'#防报些安装tensorflow的无用错误data = pd.read_csv(r'C:\Users\Lenov...原创 2020-04-14 22:11:51 · 589 阅读 · 0 评论 -
BP神经网络
BP(back propagation)神经网络是1986年由Rumelhart和McClelland为首的科学家提出的概念,是一种按照误差逆向传播算法训练的多层前馈神经网络,是应用最广泛的神经网络。这里看到一个博客的例子,稍微改了一下拿过来了 (原博客https://blog.csdn.net/lyxleft/article/details/82840787):举一个4层的例子,如下图,有2...原创 2020-04-11 00:47:22 · 816 阅读 · 0 评论 -
1*1的卷积核作用
1x1的卷积核,由于大小只有1x1,所以并不需要考虑像素跟周边像素的关系,主要用于调节通道数,对不同的通道上的像素点进行线性组合,然后进行非线性化操作,在Resnet中常用于升维和降维。比如:选择2个1x1大小的卷积核,那么特征图的深度将会从3变成2,如果使用4个1x1的卷积核,特征图的深度将会由3变成4。...原创 2020-04-03 23:53:06 · 352 阅读 · 0 评论 -
卷积神经网络的组成
一个卷积神经网络主要由以下5种结构组成: 1.输入层。输入层是整个神经网络的输入,在处理图像的卷积神经网络中,它一般代表了一张图片的像素矩阵。三维矩阵就可以代表一张图片。三维矩阵的长和宽代表了图像的大小,而三维矩阵的深度代表了图像的色彩通道 (channel)。比如黑白图片的深度为1,而在RGB色彩模式下;图像的深度为3。从输入层开始,卷积神经网络通过不同的神经网络结构将上一层的三维矩阵转化为...原创 2020-04-03 23:16:25 · 9421 阅读 · 0 评论 -
DPN(Dual Path Network)算法
DPN到底有哪些优点呢?可以看以下两点:1、关于模型复杂度,作者的原文是这么说的:The DPN-92 costs about 15% fewer parameters than ResNeXt-101 (32 4d), while the DPN-98 costs about 26% fewer parameters than ResNeXt-101 (64 4d).2、关于计算复杂度,作者...原创 2020-04-02 20:07:12 · 1081 阅读 · 0 评论