• [其他] 卷积神经网络
    卷积神经网络(Convolutional Neural Network,CNN)1984年,日本学者福岛基于感受区域概念提出了神经认知机。神经认知机可以看作是卷积神经网络的第一个实现网络,也是感受区域概念在人工神经网络领域的首次应用。神经认知机将一个视觉模式分解成许多feature,然后进入分层递阶式相连的feature maps进行处理,这样就可以将视觉系统模型化,使其能够在物体有位移或轻微变形的时候,也能完成识别。卷积神经网络LeNet-5示例卷积神经网络由卷积层(Convolutions Layer)、池化层(Pooling Layer)和全连接层构成。全连接层在最后,前面是若干卷积层和池化层,每个卷积层后面跟一个池化层,如此重复。图中展示了LeNet-5网络的结构,一共七层,前面四层是卷积层和池化层(池化层又叫子采样层,也即Subsample Layer),后面三层是全连接层,最后一层输出层是高斯连接层,也是全连接层,共有10个节点,分别代表数字0到9,且如果节点i的值为0,则网络识别的结果是数字i。采用的是欧式径向基函数(ERBF)的网络连接方式。假设x是上一层的输入,y是ERBF的输出,则ERBF输出的计算方式是:理解卷积神经网络的核心在于理解前面的卷积层和池化层。既然我们将卷积神经网络分为了卷积层、池化层和全连接层,则隐含了前面的卷积层和池化层并不是全连接的,那它们是怎么连接的呢?介绍连接方式之前需要先介绍卷积层与池化层的性质:卷积层:卷积层由若干张feature map(FM)构成。对输入数据应用卷积核(可以认为是对特定feature非常敏感的探测器),在输入数据上滚一遍我们的卷积核,就得到了一张FM,FM上记录了卷积核在原图不同区域的激活程度(与该卷积核的feature越契合,激活程度越高),也即去掉了读不懂的数据,留下了符合一定feature的数据。每个卷积核拥有一个feature,也就能产生一张对应feature的FM。池化层:池化层的价值在于缩减输入数据的规模,FM上k*k一共k^2个激活值合并成为池化层上的一个激活值,合并的方法有很多种,比如最大值合并、平均值合并及随机合并,需要视情况而定,比如如果要确定『有没有』的问题,就要采用最大值合并,把最高的激活值保留下来。然后最后一个池化层后面连接到一个或多个全连接层,全连接层的输出就是最后的输出。训练过程通过改进的反向传播实现,在反向传播的时候需要特别考虑到池化层合并激活值的方法,最大值合并、平均值合并等,均需要采用特定的处理方法,并以此来更新卷积核。我们能人工定义的是卷积核的宽和高,还有卷积核的个数。卷积核对什么feature敏感,是先随机初始化,再经过BP算法慢慢训练出来的,卷积核的权重就是卷积神经网络主要需要学习的参数。池化过程池化过程看起来要简单的多,就是一个取局部平均值\最大值的过程(根据具体池化方法决定)。人们可以计算图像一个区域上的某个特定特征的平均值 (或最大值)。这些概要统计特征不仅具有低得多的维度 (相比使用所有提取得到的特征),同时还会改善结果(不容易过拟合)。另外需要提的一点是,前面说10*10的卷积核需要训练的参数是100个,严格来讲是错误的,其实是101个,因为每个卷积核还有一个可训练偏置。接下来以LeNet-5为例,从头捋一遍卷积神经网络的过程,重新放一遍LeNet-5的图:卷积神经网络LeNet-5示例输入层是32*32像素的图片,比数据集中最大的的字符(最大体积是20*20像素的字符,位于28*28像素区域的中心)大很多。这样做的原因是能使潜在的特征比如边缘的端点、拐角能够出现在最高层次的卷积核的接收域的中心。然后第一层C1,6个卷积核,所以也就6张FM,卷积核是5*5的,至于为什么每张FM是28*28的,(32-5)/1 + 1 = 28。那C1一共有多少个需要训练的参数呢?(5*5+1)*6 = 156个可训练参数,每个卷积核26个可训练参数,6个卷积核,也就是156个可训练参数。那C1与原图一共有多少个连接呢?(28*28)*6*26 = 122304个连接,28*28的FM,一共有6张,所以乘6,这6张FM里的每一个点,都是采用了6种卷积核的其中之一卷积出来的,不管是这6种卷积核里的哪种,都有26个参数,也即26个连接,所以要乘以26。当然每张FM里面的点用的是同样的卷积核,连接数公式简记为(FM宽高*FM宽高)*可训练参数。然后第二层S2,以2*2的范围去池化,我们也称其为一个2*2的池化核。6张28*28的FM被池化成了14*14的图,这个算法很简单,可以参考上面池化层的动图去理解。这里的每个池化核有两个可训练参数,一个负责与池化核里4个输入相加的和相乘,另一个作为可训练偏置加在乘积上,最后得到池化结果。6张FM,也对应6个池化核,每个池化核2个参数,也即12个可训练参数。那S2层与C1层有多少连接呢?(14*14)*6*5 = 5880个连接,这里池化核与卷积核不同,对于卷积核而言,26个可训练参数,也即26个连接;而池化只有2个可训练参数,但是如果池化核也只有2个连接,那那4个输入是从哪来的呢,所以这里2*2的池化核对应5个连接。然后6张图,每张14*14,每个点5个连接,所以得到5880个连接。然后是C3层,C3层同样通过5*5的卷积核去卷积每张图14*14的S2,然后得到的每张FM就是10*10的,算法与C1时相同。它有16种不同的卷积核,所以C3层就对应了16张FM。这里有个比C1层复杂的多的问题,就是C1层只卷积1张图,而C3层要卷积6张图。那这16张FM是如何卷积前面S2层的6张图的呢?如下图:                                                                                                                                                                                                                                      C3层卷积S2层对应关系图CNN作用CNN主要用来识别位移、缩放及其他形式扭曲不变性的二维图形。由于CNN特征检测层通过训练数据进行学习,在使用CNN时,避免了显式的特征抽取,而隐式地从训练数据中进行学习;再者,由于同一FM上的神经元权值相同,所以网络可以并行学习,这也是卷积网络相对于神经元彼此相连网络的一大优势。卷积神经网络以其局部权值共享的特殊结构在语音识别和图像处理方面有着独特的优越性,其布局更接近于实际的生物神经网络,权值共享降低了网络的复杂性,避免了特征提取和分类过程中数据重建的复杂度。
  • [其他] 卷积神经网络表征可视化研究综述
    摘要: 近年来, 深度学习在图像分类、目标检测及场景识别等任务上取得了突破性进展, 这些任务多以卷积神经网络(Convolutional neural network, CNN)为基础搭建识别模型, 训练后的模型拥有优异的自动特征提取和预测性能, 能够为用户提供“输入-输出”形式的解决方案. 然而, 由于分布式的特征编码和越来越复杂的模型结构, 人们始终无法准确理解CNN模型内部知识表示, 以及促使其做出特定决策的潜在原因. 另一方面, CNN模型在一些高风险领域的应用, 也要求对其决策原因进行充分了解, 方能获取用户信任. 因此, CNN的可解释性问题逐渐受到关注. 研究人员针对性的提出了一系列用于理解和解释CNN的方法, 包括事后解释方法和构建自解释的模型等, 这些方法各有侧重和优势, 从多方面对CNN进行特征分析和决策解释. 表征可视化是其中一种重要的CNN可解释性方法, 能够对CNN所学特征及输入-输出之间的相关关系以视觉的方式呈现, 从而快速获取对CNN内部特征和决策的理解, 具有过程简单和效果直观的特点. 本文对近年来CNN表征可视化领域的相关文献进行了综合性回顾, 按照以下几个方面组织内容: 表征可视化研究的提起、相关概念及内容、可视化方法、可视化的效果评估及可视化的应用, 重点关注了表征可视化方法的分类及算法的具体过程. 最后, 对该领域仍存在的难点及未来研究趋势进行了展望, 并总结了全文.近年来, 以深度神经网络(Deep neural networks, DNN)为代表的机器学习方法逐渐兴起[1]. 由于训练数据的增加[2-3]及计算能力的大幅提升, DNN的网络结构及与之相适应的优化算法[4-6]变得更加复杂, DNN在各项任务上的性能表现也越来越好, 产生了多种适用于不同类型数据处理任务的经典深度网络结构, 如卷积神经网络(Convolutional neural network, CNN)和循环神经网络(Recurrent neural network, RNN). 对于图像数据处理与识别领域, CNN是一种十分常用的网络结构, 在图像分类、目标检测、语义分割等任务上取得了非常好的效果, 已经成为该领域应用最广泛的基础模型[7].如图1所示, 传统机器学习算法采用人工设计的特征集, 按照专家经验和领域知识将其组织到机器学习算法中. 由于设计人员本身了解这些被定义特征的具体含义, 因此, 传统机器学习方法一定程度上是可解释的, 人们大致明白算法对各种特征的依赖以及算法的决策依据. 例如, 线性模型可使用特征对应的权重代表特征重要程度. 相比于传统机器学习算法, 以CNN为代表的深度学习算法属于特征学习或表示学习, 可对输入数据进行自动特征提取及分布式表示, 解决了人工特征设计的难题. 这一优势使其能够学习到更加丰富完备的且含有大量深层语义信息的特征及特征组合, 因此在性能表现上超过多数传统机器学习算法.图 1  传统机器学习与深度学习的学习过程对比[8]然而, CNN这一优势的背后也存在着一定局限性. 一方面, 人们至今无法较好地理解CNN内部知识表示及其准确的语义含义. 即使是模型设计者也难以回答CNN到底学习到了哪些特征、特征的具体组织形式以及不同特征的重要性度量等问题, 导致CNN模型的诊断与优化成为经验性、甚至盲目性的反复试探, 这不仅影响了模型性能, 还可能遗留不可知的漏洞; 另一方面, 基于CNN模型的现实应用在日常中已经大量部署, 如人脸识别、行人检测和场景分割等, 但对于一些风险承受能力较低的特殊行业, 如医疗、金融、交通、军事等领域, 可解释性和透明性问题成为其拓展和深入的重大阻碍. 这些领域对CNN等深度学习模型有着强烈的现实需求, 但受限于模型安全性与可解释性问题, 目前仍无法大规模使用. 模型在实际中可能犯一些常识性错误, 且无法提供错误原因, 导致人们难以信任其决策.因此, 对CNN的理解和解释逐渐受到人们关注, 研究者们尝试从不同角度出发, 解释CNN的特征编码和决策机制. 表征可视化作为其中一种解释方法, 采用基于特征重要性的解释思路, 寻找输入变量、特征编码及输出结果之间的相关性, 并以视觉展示的方式直观呈现, 是一种较为直接的理解CNN的途径. 本文对该领域的现有研究进行了系统性整理和回顾, 对其中涉及的相关概念及内容、典型方法、效果评估、应用等方面作了归纳总结, 着重介绍了可视化方法的分类及算法的具体过程. 最后, 分析了该领域仍存在的难点并展望了未来研究趋势.本文后续内容安排如下: 第1节简述了CNN表征可视化的相关概念和研究内容; 第2节梳理了现有的表征可视化方法, 对其进行了分类整理; 第3节介绍了部分可视化效果评估方法; 第4节简要介绍了可视化方法在一些领域的应用; 第5节探讨了该领域仍存在的难点及未来的研究趋势; 第6节总结了全文.
  • [其他] 卷积神经网络之Alexnet
    一、Alexnet网络结构Alexnet模型由5个卷积层和3个池化Pooling 层 ,其中还有3个全连接层构成。AlexNet 跟 LeNet 结构类似,但使⽤了更多的卷积层和更⼤的参数空间来拟合⼤规模数据集 ImageNet。它是浅层神经⽹络和深度神经⽹络的分界线。特点:1、在每个卷机后面添加了Relu激活函数,解决了Sigmoid的梯度消失问题,使收敛更快。2、使用随机丢弃技术(dropout)选择性地忽略训练中的单个神经元,避免模型的过拟合(也使用数据增强防止过拟合)3、添加了归一化LRN(Local Response Normalization,局部响应归一化)层,使准确率更高。4、重叠最大池化(overlapping max pooling),即池化范围 z 与步长 s 存在关系 z>s 避免平均池化(average pooling)的平均效应10简单的理解:BN是数据层面,LRN是通道层面,LRN是作用于卷积的一种优化,一般用于激活函数ReLU函数之后的一层。
  • [其他] 卷积神经网络之VGG
    一、VGG网络结构为了解决初始化(权重初始化)等问题,VGG采用的是一种Pre-training的方式,先训练浅层的的简单网络 VGG11,再复用 VGG11 的权重来初始化 VGG13,如此反复训练并初始化 VGG19,能够使训练时收敛的速度更快。整个网络都使用卷积核尺寸为 3×3 和最大池化尺寸 2×2。比较常用的VGG-16的16指的是conv+fc的总层数是16,是不包括max pool的层数!训练设置:批量大小设为 256,动量为 0.9。训练通过权重衰减(L2 惩罚乘子设定为 5×10^−4)进行正则化,前两个全连接层采取 dropout 正则化(dropout 比率设定为 0.5)。学习率初始设定为 10−2,然后当验证集准确率停止改善时,学习率以 10 倍的比率进行减小。学习率总共降低 3 次,学习在 37 万次迭代后停止(74 个 epochs)。为了进一步增强训练集,裁剪图像经过了随机水平翻转和随机 RGB 颜色偏移特点:3x3卷积的优点:多个3×3的卷积层比一个大尺寸的filter有更少的参数,假设卷基层的输入和输出的特征图大小相同为C,那么三个3×3的卷积层参数个数3×(3×3×C×C)=27CC;一个7×7的卷积层参数为49CC;所以可以把三个3×3的filter看成是一个7×7filter的分解(中间层有非线性的分解)二、VGG16的keras实现def VGG_16(): model = Sequential() model.add(Conv2D(64,(3,3),strides=(1,1),input_shape=(224,224,3),padding='same',activation='relu',kernel_initializer='uniform')) model.add(Conv2D(64,(3,3),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform')) model.add(MaxPooling2D(pool_size=(2,2))) model.add(Conv2D(128,(3,2),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform')) model.add(Conv2D(128,(3,3),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform')) model.add(MaxPooling2D(pool_size=(2,2))) model.add(Conv2D(256,(3,3),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform')) model.add(Conv2D(256,(3,3),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform')) model.add(Conv2D(256,(3,3),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform')) model.add(MaxPooling2D(pool_size=(2,2))) model.add(Conv2D(512,(3,3),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform')) model.add(Conv2D(512,(3,3),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform')) model.add(Conv2D(512,(3,3),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform')) model.add(MaxPooling2D(pool_size=(2,2))) model.add(Conv2D(512,(3,3),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform')) model.add(Conv2D(512,(3,3),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform')) model.add(Conv2D(512,(3,3),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform')) model.add(MaxPooling2D(pool_size=(2,2))) model.add(Flatten()) model.add(Dense(4096,activation='relu')) model.add(Dropout(0.5)) model.add(Dense(4096,activation='relu')) model.add(Dropout(0.5)) model.add(Dense(1000,activation='softmax')) return model三、VGG的pytroch实现# 一个 vgg 的 block,传入三个参数,第一个是模型层数,第二个是输入的通道数,第三个是输出的通道数,第一 #层卷积接受的输入通道就是图片输入的通道数,然后输出最后的输出通道数,后面的卷积接受的通道数就是最后 #的输出通道数 def vgg_block(num_convs, in_channels, out_channels): net = [nn.Conv2d(in_channels, out_channels, kernel_size=3, padding=1), nn.ReLU(True)] # 定义第一层 for i in range(num_convs-1): # 定义后面的很多层 net.append(nn.Conv2d(out_channels, out_channels, kernel_size=3, padding=1)) net.append(nn.ReLU(True)) net.append(nn.MaxPool2d(2, 2)) # 定义池化层 return nn.Sequential(*net) #函数对 vgg block 进行堆叠 def vgg_stack(num_convs, channels): net = [] for n, c in zip(num_convs, channels): in_c = c[0] out_c = c[1] net.append(vgg_block(n, in_c, out_c)) return nn.Sequential(*net) #vgg模型 class vgg(nn.Module): def __init__(self): super(vgg, self).__init__() self.feature = vgg_net self.fc = nn.Sequential( nn.Linear(512, 100), nn.ReLU(True), nn.Linear(100, 10) ) def forward(self, x): x = self.feature(x) x = x.view(x.shape[0], -1) x = self.fc(x) return x
  • [其他] 资料学习 - 使用卷积神经网络检测打印错误
    论文《Print Error Detection using Convolutional Neural Networks》探讨了在检测打印错误的场景下应用卷积神经网络的方案,其阐述如下:本文讨论了自动检测打印错误系统的需要,以及卷积神经网络在这种应用中的有效性。我们认识到需要一个包含打印错误样本的数据集,并提出了一种人工生成错误样本的方法。我们讨论了生成这种数据的算法以及这种方法的局限性和优点。我们最终训练的网络在测试中给出了99.83%的显著准确性。我们进一步评估这样的效率是如何实现的,以及可以测试哪些修改来进一步提高结果。地址:https://arxiv.org/pdf/2104.05046
  • [其他] 入门必读 | 图卷积神经网络理论基础:从傅里叶变换到图卷积
    Graph Convolutional Networks图卷积网络涉及到两个重要的概念,Graph和Convolution。传统的卷积主要应用于Euclidean Structure的数据上(排列很整齐、Grid形式的),如图像、语句等,主要是因为欧式结构数据能够保证卷积的性质,即平移不变性,而Non-Euclidean无法保证平移不变性,通俗理解就是在拓扑图中每个顶点的相邻顶点数目都可能不同,那么当然无法用一个同样尺寸的卷积核来进行卷积运算。为了能够将卷积推广到Graph等Non-Euclidean数据上,GCN应运而生。那么GCN是如何将卷积推广到Graph上的呢?卷积和傅里叶变换有着密不可分的关系。在数学上,两个函数的卷积等于各自求傅里叶变换转成频域后乘积的逆傅里叶变换。即:Convolution —— Fourier傅里叶变换又可以通过谱图理论推广到Graph上进行变换。Fourier —— Spectral Graph因此自然而然,Convolution —— Fourier —— Spectral Graph,Convolution通过傅里叶变换和Graph发生了联系。从整个的研究进程来看,首先是研究GSP(Graph Signal Processing)的学者提出了Graph上的Fourier Transformation,进而定义了Graph的Convolution,最后与深度学习结合起来,发展出来GCN。下文主要先介绍数学中的傅里叶变换,再介绍G傅里叶变换可以从多种角度进行表述。raph上的傅里叶变换。最后介绍卷积如何应用在Graph上。从数学角度,傅立叶变换就是将「周期函数」转化为一组「正交基」下的「坐标表示」,这个「坐标表示」就是傅立叶变换的结果。换句话说,周期函数是这些正交基的「线性组合」(向量的叠加), 线性组合「系数构成的向量」就是傅立叶变换的结果。从信号处理领域角度,傅里叶变换将一个周期函数从「时域」(时间与振幅的关系)转化为「频域」(频率与振幅的关系)。做个类比,正交基选择的是正弦函数,每个正弦函数有个「频率」参数值,而每个正弦函数的「振幅」参数就是该基下对应的坐标值。所有正弦函数的「振幅构成的向量」就是傅立叶变换的结果。下面以信号处理领域为例,来进一步理解傅里叶变换。
  • [其他] 卷积神经网络|VGG(一)
    VGG块VGG块的组成规律是:连续使用数个填充为1、窗口形状为3×3的卷积层后接上一个步幅为2、窗口形状为2×2的最大池化层。卷积层保持输入的高和宽不变,而池化层对其减半。每经过一个VGG块,样本的高和宽减半,输出通道翻倍。设输出通道数是co,输入通道数是ci,样本的高和宽是h和w,卷积核的高和宽是kh和kw。可得出卷积核的形状是co*ci*kh*kw,互运算的次数是co*ci*(h-kh+1)*(w-kw+1)(步长是1,无填充)。由此可看出,互运算的次数和h*w*ci*co成正比。VGG的这种高和宽减半,通道翻倍的设计使得多数卷积层具有相同的模型参数尺寸和计算复杂度。VGG网络VGG网络由卷积层模块后连接全连接层模块构成。VGG网络先以卷积层构成的模块充分抽取空间特征,再以由全连接层构成的模块来输出分类结果。下面这个网络使用了8个卷积层和3个全连接层,被称为VGG-11。Sequential(  (vgg_block1): Sequential(    (0): Conv2d(1, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))    (1): ReLU()    (2): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)  )  (vgg_block2): Sequential(    (0): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))    (1): ReLU()    (2): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)  )  (vgg_block3): Sequential(    (0): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))    (1): ReLU()    (2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))    (3): ReLU()    (4): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)  )  (vgg_block4): Sequential(    (0): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))    (1): ReLU()    (2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))    (3): ReLU()    (4): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)  )  (vgg_block5): Sequential(    (0): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))    (1): ReLU()    (2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))    (3): ReLU()    (4): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)  )  (fc): Sequential(    (0): FlattenLayer()    (1): Linear(in_features=25088, out_features=4096, bias=True)    (2): ReLU()    (3): Dropout(p=0.5, inplace=False)    (4): Linear(in_features=4096, out_features=4096, bias=True)    (5): ReLU()    (6): Dropout(p=0.5, inplace=False)    (7): Linear(in_features=4096, out_features=10, bias=True)  ))设计原则二维卷积层中,与输出数组中元素x有关的输入区域叫做x的「感受野」(receptive field)。图1中,输入中阴影部分的四个元素是输出中阴影部分元素的感受野。我们把图1中2×2的输出记为Y,并考虑一个更深的卷积网络:将Y与另一个形状为2×2的卷积核做互相关运算,输出单个元素z。那么,z在Y上的感受野包括Y的全部四个元素,在输入上的感受野包括其中全部9个元素。可见,我们可以通过更深的卷积网络使特征图中单个元素的感受野变得更加广阔,从而捕捉输入上更大尺寸的特征。VGG网络整个输出的感受野是整个输入,但是随着网络深度的增加,单个元素的感受野越来越大。在设计网络时采用堆积的小卷积核优于采用大的卷积核,因为可以增加网络深度来保证学习更复杂的模式。链接:https://juejin.cn/post/6943957076854964261来源:掘金
  • [问题求助] Atlas200dk对字符识别模型推理得出结果全部是一个
    我使用mind studio将pb模型转化成om模型后加载到atlas200dk进行推理结果得出的结果都是一样的结果。经过我自己初步分析图像预处理没有问题,问题应该在图像预处理的结果与模型不匹配,目前我没有办法去验证并且改写该部分,希望有人能够给予我指导,万分感谢!我的pb原始模型输入有两个,一是一张[1,784]的灰度图二是keep_drop为1.0 工程链接https://pan.baidu.com/s/1Y6Jyi0hhnVtyQD4k9eBniA 提取码1234 模型链接https://pan.baidu.com/s/1S03UmSpsa1_siV9b8cXDjQ 提取码1234 模型链接
  • [问题求助] Atlas200dk对pb模型转om失败不成功
    我用mindstudio的模型转化工具转化我的pb模型(minst数据集识别),但是一直转化不成功。第一个图是我原始pb模型的输入。图二三是模型转化工具的参数。图三是报错日志。有没有大佬帮我看看问题在哪里 472815472816472817472818
  • [技术干货] 卷积神经网络调参
    input层用可以不用全连接层Dense,直接使用卷积层Conv2D在输出层softmax计算之前,一定要加一层全连接层Dense,如果分类是10个,就设置2^10=1024个单元,过多过少都会造成准确率下降。在输出层softmax计算之前,加两个全连接层Dense没什么意义,一层就够了,多加也不会有明显的提升卷积层Conv2D的kernel_size,设置为1没有意义,如果图片很小可以使用kernel_size=2,不是一定要用3卷积层的Conv2D的filters跟要分的类个数在同一个数据量级就可以,小一点还可以计算的快一点Dropout至少要去掉0.5,最高可以到0.85,丢弃的再多准确率就下降了(可能是没办法BP了),也跟图像信息量有关,0.5到0.85都可以试试。参数必须normal化卷积层Conv2D没必要用很多,跟要处理的信息量有关,过多过少都会影响准确率。激活函数sigmoid和relu,如果神经网络太深relu效果好,虽然都差不多。
  • [其他] 兴趣感知消息传递图卷积神经网络的推荐
    图卷积网络(GCNs)在推荐方面表现出巨大的潜力。这归功于他们通过利用来自高阶邻居的协作信号来学习良好的用户和项目嵌入的能力。与其他GCN模型一样,基于GCN的推荐模型也存在着臭名昭著的过平滑问题——当叠加更多层时,节点嵌入变得更加相似,最终无法区分,导致性能下降。最近提出的LightGCN和LR-GCN在一定程度上缓解了这一问题,但是我们认为他们忽略了推荐中出现过平滑问题的一个重要因素,即在图卷积操作中,用户的嵌入学习也可以涉及到与用户没有共同兴趣的高阶邻域用户。因此,多层图卷积会使不同兴趣的用户具有相似的嵌入性。在本文中,我们提出了一种新的兴趣感知消息传递GCN (IMP-GCN)推荐模型,该模型在子图中进行高阶图卷积。子图由具有相似兴趣的用户及其交互项组成。为了形成子图,我们设计了一个无监督的子图生成模块,该模块利用用户特征和图结构来有效识别具有共同兴趣的用户。为此,我们的模型可以避免将高阶邻域的负面信息传播到嵌入学习中。在三个大规模基准数据集上的实验结果表明,我们的模型可以通过叠加更多的层来获得性能的提高,显著优于目前最先进的基于GCN的推荐模型。https://www.zhuanzhi.ai/paper/a64ace721c52eb2b70059bea42490f40
  • [其他] 卷积神经网络论文推荐
    目前,作为深度学习的代表算法之一,卷积神经网络(Convolutional Neural Networks,CNN)在计算机视觉、分类等领域上,都取得了当前最好的效果。后来,基于深度神经网络和搜索树的智能机器人“AlphaGo”在围棋上击败了人类,这是CNN 给人们的一个大大的惊喜。一年后的 Master 则更是完虐了所有人类围棋高手,达到神一般的境界,人类棋手毫无胜机。可以说,卷积神经网络是深度学习算法应用最成功的领域之一。目前,CNN应用也十分广泛。例如Facebook用它进行自动的图像标签,google用它做照片检索,amazon用它做产品推荐,Pinterest用它做个性化家庭定制推送,Instagram用它搭建他们的搜索架构。那么,基于CNN最经典也是最流行的应用应当是图像处理领域。而研读卷积神经网络的经典论文,对于学习和研究卷积神经网络必不可缺。今天,给大家推荐一些资料,有论文、知识图谱。7份经典学术论文这些论文大部分都发表在计算机视觉顶级学术会议上。这7份论文资料,100p以上的内容体量。建议收藏学习。01 resnet02 CNN03 batchnorm04 alexnet05 visualzing06 resnet07 yolo4
  • [其他] 卷积神经网络在CR中的​资源分配方面的相关应用
       CR的主要特征就是能够通过对操作环境的感知而改变发射机参数,侦听频谱中是否有空间容纳非授权用户进行通信,而不干扰该频段执牌用户的正常通信。从广义上讲,“认知无线电”这个术语可以是指实现这一技术口标的各种解决方案.这些解决方案试图以尽可能不影响频谱主用户的方式,将次要用户的信号与主要用户的信号交织(Interweave) ,覆盖(underlay)、重叠(Overlay)在一起,CR设备可以是在以上3种工况下运行。在交织模式下,次用户通过频谱感知寻找空穴进行信号传输。而在谱覆盖模式中,允许非授权用户与执牌用户传输同时同频进行,就像超宽带(Ultra Wide Band,UWB)系统一样。次级无线电通过足够大的带宽传播信号,以确保对主要用户造成的干扰量在可容忍的范围内。因此,引人了干扰温度的概念来确定主接收机的可容忍干扰水平同。如果采用有效的频谱管理和资源分配技术,这种模式可以显著提高频谱利用率。由于CNN对大量完备标记的训练数据的依赖,使得其在资源分配中的应用形式还不够灵活。近年来,更多的实验倾向于将强化学习引人到CR的资源分配中,强化学习理论中的一个称为回报函数的基本概念也与资源分配的效用最大化理念相契合”。经典的强化学习的缺陷是用表格来存储每一个状态和在这个每个行为的Q值。而当状态空间和动作空间较大时(如多用户和大带宽的资源分配)。如果全用表格来存储它们,将有较大的内存和网格搜索压力.DRN是强化学习和深度学习技术的结合,而其中(Deep Q Network, DQN)是CNN和Q-Learning的结合,CNN的输人是原始多维矩阵数据,输出是每个决策所对应的价值评估(Q值)。通过神经网络分析后得到动作的Q值,省去了在表格中记录Q值。已经有研究将DQN应用于动态资源分配;缺陷是它需要通过反复迭代与环境进行大量的交互,从而又导致较大的功耗和传输延迟。针对DQN的随机经验回放,Wang等引人有优先级的经验回放,即让不同的数据拥有不同的优先级,以此加速收敛速度。
  • [其他] 卷积神经网络在CR中的频谱感知方面的相关应用
    频谱感知是CR理论的重要组成部分,是CR首先要解决的问题(Fundamental Problem in CR)。主用户在认知系统中具有绝对的优先地位,这就需要从用户的频谱感知高度可靠。但是,感知器接受信号的强度会因多径效应和阴影衰落等信道因素而降低。而且,噪声加其他从用户干扰的不确定性也会限制感知的鲁棒性。[]所以,可靠准确的频谱感知技术一直是CR研究领域的热点。CNN广泛应用于图像识别和语音识别,具有良好的分类性能,利用CNN来解决频谱感知可以看作是一个二元假设的检验问题。Zhang等在进行波形识别时,利用二维时频图对各种信号进行表征,然后进行信号识别。然而,图像化的原始信号不可避免地会丢失一些信息,从而影响分类结果。 基于能量和循环平稳特征,Tang等较早探讨了多层的神经网络的频谱感知算法,Han等在此基础上引入CNN模型,在-20dB范围内具有比循环平稳特征检测(Cyclostationary Feature Detection, CFD)更高的检测概率。Liu等在已知充足的PU信号帧结构信息下,提出了有对抗性训练数据库的CNN,旨在实现有严重噪声污染和信道衰落的频谱感知。不足的是,循环平稳值和帧结构信息是基于PU的先验知识,这在实践中并不总是可用的,因此,这些方法易受到建模不确定性的影响。此外,样本数量和检测性能正相关。然而,随着接收信号长度的增加,这可能导致感测时间和复杂性的进一步增加。必须找到感测时间和性能检测之间的平衡,以降低这种叠加的复杂性,这对于算力严格受限的设备尤其重要。 由于每个从用户所处的网络环境不同,信道条件也不同,在协作感知体系(CSS)中,从用户之间共享感知信息,融合中心对各节点感知信息进行联合判决,并对可用信道进行统一分配,在提高了感知精确度的同时也降低了对单个节点的感知能力要求。较常见的数据融合方式是集中式硬融合方式中的“或”准则、“与”准则和“K秩”准则。Do等提出的基于CNN的联合频谱感知技术f X91,融合中心以记录的历史判决数据训练CNN模型,以此进行判决,其性能优于上述的几种硬判决方式且其控制信道开销少于软判决;然而,其并没有对不同空间位置上的阴影衰落、路径损耗和多径衰落指数进行专门的研判,没有充分发挥合作感知的优势回。Lee等发展了Do等的工作,弥补了这一问题,拓宽了输入矩阵的维度,丰富了数据集的有效特征;验证了节点能量感知加CNN数据融合的深度感知模型在节点位置时变场景下的可行性。
  • [其他] 卷积神经网络在CR中的​信号调制识别方面的相关应用
    卷积神经网络在CR中信号调制识别方面的相关应用自动调制分类技术(Automatic Modulation Classification, AMC)是CR和其他非协作通信系统的核心难点技术之一,其本质上就是一个分类问题。调制识别算法主要有基于似然和基于特征的,前者理论性能是最优的,但较高的复杂性使其在真实电磁环境中很难有理想的鲁棒性。而传统的基于特征的次优分类方法严重依赖特征的选取。特征选择的复杂性和时间复杂度较高,因此脱离专家工程的特征自学习模型在实际应用中具有重要意义。近年来,以CNN为代表的深度学习算法被证明可以实现高的识别精度,它可有效降低专家特征的提取难度。而当与深度学习方法相结合时,基于特征的方法也将显著提升性能,获得更高的效率和鲁棒性。1、基于IQ (In-phase and Quadrature)直接从原始IQ样本中对调制进行分类的技术不仅可以加快调制分类的速度,而且可以释放接收器中的资源用于其他任务。OShea等直接将时域IQ样本输人到CNN,在不同环境中自动学习其合适的分类器参数。Symposium等分析了不同尺寸和深度的CNN架构的分类精度,还提出了一种混合学习方案,将CNN模型与LSTM相结合,以获得更好的分类性能。由于CNN并不是专为无线通信场景应用的技术,针对无线通信中的相位和频率偏移,Yashashwi等引人偏移校正模块(Signal Distortion Correction Module, CM),用调制识别前对信号的频率和相位进行移位,没有用到任何额外的先验知识。CM模块权值可微,可实现CM+CNN的端到端协同训练。考虑到接收的信号可能来自不同的信道,Gu等人将信道分为视距和非视距两种基本类型,采用两个阶段的CNN,即第一阶段对信道类型进行盲识别,第二阶段依据信道类型分别匹配一个针对训练的调制识别网络;仿真结果表明,在信道状态不唯一的场景下,一般的模型识别精度会大大降低。    输人端接在原始IQ样本上做出分类决策可以降低系统复杂性,并且无需专业设计的变换和特征提取。但在实践中,射频环境通常非常密集,因此在执行分类之前,接收机必须首先检测并隔离每个目标信号。这种检测和隔离过程引人的错误将尤其影响仅使用原始IQ样本的CNN的准确性,该过程引入了两种主要的误差形式,即中心频率偏移和采样率偏移。Hauser的试验结果表明,规模越大的神经网络越易受到此类误差的影响。 2、基于星座图      一些基于同相和正交分量样本训练的CNN模型,在识别16QAM(Quadrature Amplitude Modulation)波形和64QAM波形时识别率下降明显。[]通过将信号样本映射到复平面上的散射点,星座图已被广泛用作调制信号的二维表示。针对QAM波形,Wang等单独设置了一个CNN用于识别QAM类波形,这里训练集改为CZAM波形的星座图,即使在信噪比低的情况下也能对QAM波形进行有效的分类。星座图为表示信号的基本结构和不同调制方式之间的关系提供了一种较为直观的方法,CNN能够在不知道任何其他参数的情况下处理星座图,这里调制识别任务便转向了图像识别。为了在分类性能和计算成本之间取得平衡,Peng等选取星座图中心部较小的区域作为输入,在识别性能上仍然优于常见的基于累积量和基于SVM的方法。此类方法在处理较高阶数的幅度相位调制信号时有更好的性能,缺陷是因多径衰落而引起的码间串扰会影响星座图的恢复,所以对信道盲均衡的要求比较苛刻。3、基于循环谱循环平稳性是大多数信号固有的物理特征性,对噪声和干扰具有很强的鲁棒性。Li等提出了一种甚高频(Very High Frequency, VHF)信号调制分类方法,即将接收到的信号转换为循环谱,然后将去噪处理后的频谱图像输人到CNN模型中进行自学习,训练分类器识别调制格式.针对基于循环谱特征的识别算法性能会随着调制阶数的增多而明显下降的问题,Wu等以一个双路小规模CNN,通过合理的口标函数参数设置,将同一信号的循环谱和星座图特征相融合,该方法具有计算效率高、神经网络精简等特点,缺点就是需要检测信号的先验特征。4、基于时频谱时频变换在表征时变信号方面起着重要作用,Zhang等提出的基于CNN+MLP的自动波形识别模块,相较于一些基于循环平稳的信号识别方法,在噪声环境下可识别多达8种CR波形,该方法是先对感知信号进行CWD (Choi- Williams time-frequency distribution)变换,转化为时一频2D图谱并二值化,然后保留图谱形状而省略其强度,其中,噪声在图中往往表现为长条状直线,宽度在3个像素点之内。利用图像形态学算法等方法可有效提升其信噪比,图像预处理流程如下图所示。Gao等尝试格纳一维尔变换在不同核函数下时频图的特征融合,利用主成分分析法确定权值,得到了更全面的图像细节信息。Zhang等选用短时傅里叶变换对接收信号进行转换,并采用小波的分解重构在信号输人CNN前对信号降噪。小波变换亦可以提供信号的频率和与这些频率相关的时间信息,基于此的CNN调制分类器进一步提高了在不同信噪比、衰落信道和频移场景下的识别率。基于信号的瞬时特性,Nadeem采用异步时延抽头采样训练集,利用多层神经网络结构进行调制识别,此类模型适合处理间隔较长或时延较大的时间序列数据。以上这些以简单的专家特征用作神经网络的输入,可以实现较高的分类精度。
总条数:75 到第
上滑加载中