
深度学习
文章平均质量分 70
mez_Blog
寸边而
展开
-
生成对抗网络
长久以来,人们能希望机器能够充满创造力,不仅能完成重复的机械劳动,还能完成一些创造性的工作,比如画画、写诗、创作歌词等。这些一直是人工智能长久以来的梦想,随着自动编码器和变分编码器的提出,这一梦想慢慢变成了现实,到了2014年,Ian Goodfellow提出了生成对抗网络这一概念,推进了整个无监督学习的发展进程。1.生成模型生成模型(generativemodel)这一概念属于概率统计和机器学习,是指一些列用于随机生成可观测数据的模型。简而言之,就是“生成”的样本和真实的样本尽可能的相似。生成模.原创 2023-03-07 20:59:44 · 434 阅读 · 0 评论 -
人体关键点检测
人体骨骼关键点检测主要检测人体的一些关键点,如关节、五官等,通过关键点描述人体骨骼信息。MS COCO数据集是多人人体关键点检测数据集,具有关键点个数为17,图像的样本数多于30万张,也是目前的相关研究中最常用的数据集。在torchvision库中,提供了已经在MS COCO数据集上与训练的keypointcnn_resnet50_fpn()网络模型,该网络可以用于人体的关键点检测。先导入与训练好的网络模型,程序如下所示:import numpy as npimport torchvisionim原创 2023-03-07 20:59:02 · 475 阅读 · 0 评论 -
Numpy基础(3.0)
合并数组合并数组也是最常见的操作之一,下表列举了常见的用于数组或向量合并的方法。函数 描述 np.append 内存占用大 np.concatenate 没有内存问题 np.stack 沿着新的轴加入一系列数组 np.hstack 堆栈数组垂直顺序(行) np.vstack 堆栈数组垂直顺序(列) np.dstack 堆栈数组按顺序深入(沿第3维) np.vsplit 将数组分解成垂直的多个子数组的列表 (原创 2022-01-27 11:09:41 · 1994 阅读 · 0 评论 -
Numpy基础(2.0)
获取数组中的部分元素除了通过指定索引标签来实现外,还可以通过使用一些函数来实现,如通过random.choice函数从指定的样本中随机抽取数据。import numpy as npfrom numpy import random as nra=np.arange(1,25,dtype=float)c1=nr.choice(a,size=(3,4))c2=nr.choice(a,size=(3,4),replace=False)c3=nr.choice(a,size=(3,4),p=a/np.原创 2022-01-20 11:19:16 · 1087 阅读 · 0 评论 -
Numpy基础(1.0)
在机器学习和深度学习中,图像、声音、文本等输入数据最终都要转换为数组或矩阵。如何有效地进行数组合矩阵的运算?这就需要充分利用Numpy。Numpy是数据科学的通用语言,而且与pytorch关系密切,它是科学计算、深度学习的基石。Pytorch中的Tensor与Numpy非常相似,他们之间可以非常方便的进行转换。为什么是Numpy?实际上Python本身含有列表(list)和数组(array),但对于大数据来说,这些结构是由很多不足的。由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针。例如为了原创 2022-01-19 11:24:54 · 913 阅读 · 0 评论 -
人工神经网络
人工神经网络(ANN)作为一个计算网络(一个具有节点且节点间具有内部链接的系统),深受人脑中复杂的生物神经网络的启发。ANN中创建的节点意在通过编程使其表现得和真实的神经元一样,因此它们被称为人工神经元。层数和每层的神经元或者节点数是人工神经网络的朱啊哟结构组成。刚开始时,权重值(代表内部连接)和偏置量不够好,无法完成决策(分类等)。就像婴儿的打脑还没有先前的经验。婴儿从经验中学习,因此能够成为一个好的决策者(分类器)。经验或者说是数据(带标记的)帮助大脑的神经网络调节(神经元的)权重值和偏置量。人工神原创 2021-12-28 11:02:17 · 492 阅读 · 0 评论 -
Pytorch预训练模型下载慢解决方式
最近在使用与训练网络模型ResNet50 Faster R-CNN的时候,发现系统自带的下载方式是非常慢的,而且等待好久一段时间后出现:TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败的报错信息。然后通常的解决方式就是给出下载路径进行迅雷下载,这也是常用的解决方式:然后复制链接进行迅雷新建任务下载即可,确实比直接从默认下载方式快了很多,然后下载成功后,将其复制到默认的下载路径中即可。但是却发现了一个..原创 2021-09-10 10:40:40 · 4137 阅读 · 0 评论 -
图像语义分割和目标检测(下)
在Pytorch提供的已经训练好的图像目标检测中,均是R-CNN系列的网络,并且针对目标检测和人体关键点检测分别提供了容易调用的方法。针对目标检测的网络,输入图像均要求使用相同的预处理方式,即先将每张图像的像素值预处理到0~1之间,且输入的图像尺寸不是很小即可直接调用。已经预训练的可供使用的网络模型如下所示:网络类 描述 detection.fasterrcnn_resnet50_fpn 具有ResNet-50-FPN结构的Fast R-CNN网络模型 detection.maskr原创 2021-09-10 09:44:23 · 599 阅读 · 0 评论 -
第一个GPU训练程序
import timeimport torchvisionimport torchfrom torch.utils.tensorboard import SummaryWriterfrom torch import nnfrom torch.utils.data import DataLoaderclass Test(nn.Module): def __init__(self): super(Test, self).__init__() self.mo.原创 2021-09-07 10:58:22 · 149 阅读 · 0 评论 -
Pytorch入门(中)
(3)张量和NumPy数据相互转换Pytorch提供了Numpy数组合Pytorch张量相互转换的函数,非常方便对张量进行相关操作,如将张量转化为Numpy数组,在通过Numpy数组进行相关计算后,可以再次转化为张量,一遍进行张量相关的计算。将Numpy数组转化为Pytorch张量,可以使用torch.as_tensor()函数和torch.from_numpy()函数,例如:从上面的代码中得到的张量是64位浮点型数据,这是因为使用numpy生成的数组默认就是64位浮点型数组。 这是因.原创 2021-09-06 11:07:29 · 270 阅读 · 0 评论 -
Pytorch入门(上)
首先来介绍张量:在数学中,一个单独的数可以称为标量,一列或者一行数组可以称为向量,一个二维数组称为矩阵,矩阵中的每一个元素都可以被行和列的索引位移确定,如果数组的维度超过2,那么我们可以称该数组为张量(Tensor)。但是在pytorch中,张量属于一种数据结构,他可以是一个标量、一个向量、一个矩阵,甚至是更高位的数组,所以pytorch中Tensor和Numpy中的数组(ndarray)非常相似,再使用时也经常将Pytorch中的张量和Numpy中的数组相互转化。在深度网络中,基于Pytorch的先关原创 2021-09-05 11:00:27 · 223 阅读 · 0 评论 -
卷积神经网络(CNN)(下)
深度卷积神经网络模型由于其层数多,需要训练的参数多,导致从零开始训练很深的卷积神经网络非常困难,同时训练很深的网络通畅需要大量的数据集,这对于设备算力不够的使用者非常不友好。幸运的是Pytorch已经提供了使用ImageNet数据集与与训练好的流行的深度学习网络,我们可以针对自己的需求,对与训练好的网络进行微调,从而快速完成自己的任务。下面将会基于与训练好的VGG16网络,对其网络结构进行微调,使用自己的分类数据集,训练一个图像分类器。使用的数据集来自kaggle数据集中的10类猴子数据库,数据地址为h原创 2021-09-04 11:22:47 · 338 阅读 · 0 评论 -
卷积神经网络(CNN)(中)
4.GoogleNetGoogleNet(也可称作Inception)是在2014年由Google DeepMind公式的研究员提出的一种全新的深度学习结构,并取得了ILSVRC2014比赛项目的第一名。GooleNet共有22层,并且没用全连接层,所以使用了更少的参数,在GooleNet前的AlexNet、VGG等结构,均通过增大网络的层数来获得更好的训练结果,但更深的层数同时会带来较多的负面效果,如过拟合、梯度消失、梯度爆炸等问题。GoogleNet则是保证算力的情况下增大网络的深度和宽度,尤其原创 2021-09-03 10:50:12 · 468 阅读 · 0 评论 -
卷积神经网络(CNN)(上)
卷积神经网络是一种以图像识别为中心,并且在多个领域得到广泛应用的深度学习方法,如目标检测、图像分割、文本分类等。卷积神经网络于1998年由Yann Lecun提出,在2012年的ImageNet挑战赛中,Alex Krizhevsky凭借卷积神经网络AlexNet网络获得远远领先于第二名的成绩,震惊世界。下面主要介绍空洞卷积、转置卷积与应用于NLP(自然语言处理)任务的二维卷积运算过程。空洞卷积可以认为是基于普通卷积操作的一种变形,主要用于图像分割。相对于普通卷积而言,空洞卷积通过在卷积核中添加空洞原创 2021-09-01 11:06:14 · 768 阅读 · 0 评论 -
图像语义分割和目标检测(中)
上一篇介绍的是使用与训练好的语义分割网络segmentation.fcn_resnet101(),对任意输入图像进行语义分割,该模型是以101层的ResNet网络为基础,全卷积语义分割模型。下面将基于VGG19网络,搭建、训练和测试自己的图像全卷积语义分割网络。由于资源有限,将基于2012年VOC数据集对网络进行训练,主要使用该数据集的训练集和测试集,训练集用于训练网络,验证集防止网络过拟合。每个数据集越有1000张图片,并且图像之间的尺寸不完全相同,数据集共有21类需要学习的目标类别。下面首先导入本小原创 2021-08-31 10:32:49 · 804 阅读 · 0 评论 -
图像语义分割和目标检测(上)
语义分割是对图像在像素级别上进行分类的方法,在一张图像中,属于同一类的像素点都要被预测为相同的类,因此语义分割是从像素级别来理解图像。但是需要正确区分语义分割和实例分割,虽然他们在名称上很相似,但是他们属于不同的计算机视觉任务。例如,一张照片中有多个人,针对语义分割任务,只需将所有人的像素都归为一类即可,但是针对实例分割任务,则需要将不同人的像素归为不同的类。简单来说,实例分割会比语义分割所做的工作更近一步。随着深度学习在计算机视觉领域的发展,提出了多种基于深度学习方法的图像语义分割网络,如FCN、U-原创 2021-08-29 10:49:27 · 3058 阅读 · 0 评论 -
图卷积神经网络
由于深度学习方法在图像和文本上的成功应用,人们对深度学习方法在图像数据上的扩展越来越感兴趣。受到卷积网络、循环网络和深度自动编码器的思想影响,研究者定义和设计了用于处理图数据的神经网络结构,由此产生了一个新的研究热点-图神经网络。图神经网络对图有很多应用,对于图上节点的应用,可以是对节点的半监督或监督的节点分类(回归);对于图上的边,可以是对图上的边有监督分类;对这呢各个图的应用,可以使用无监督的方法学习到图的表示,进行图的分类等。图像的卷积运算可以认为是基于欧式空间的运算,而在很多节点构成的图上进原创 2021-08-27 11:19:13 · 1255 阅读 · 0 评论 -
自编码模型(下)
下面可视化其中部分图像,以对比添加噪声前后的图像内容,程序如下: plt.figure(figsize=(6,6)) for ii in np.arange(36): plt.subplot(6,6,ii+1) plt.imshow(images[ii,...]) plt.axis("off")# plt.show() plt.figure(figsize=(6,6)) for ii in np.arange(36):原创 2021-08-27 09:31:53 · 340 阅读 · 0 评论 -
自编码模型(中)
自编码网络的一个重要功能就是对数据进行降维,如将数据降维到二维或者三维,之后可以很方便地通过数据可视化技术,观察数据在空间中的分布情况。下面使用测试数据集中的500个样本,获取网络对其自编码后的特征编码,并将这500张图像在编码特征空间的分布情况进行可视化。edmodel.eval() TEST_num=500 test_encoder,_=edmodel(test_data_x[0:TEST_num,:]) print("test_encoder.shape:",test_e原创 2021-08-25 11:04:19 · 453 阅读 · 0 评论 -
自编码模型(上)
自编码器是深度学习的研究热点之一,在很多领域都有应用。其应用主要有两个方面,第一个是对数据降维,或者降维后对数据进行可视化;第二是对数据进行去噪,尤其是图像数据去噪。最初的自编码器是一个三层网络,即输入层、中间隐藏层和输出层,其中输入层和输出层的神经元个数相同,且中间隐藏层的神经元个数会较少,从而达到降维的目的。深度自编码器是将自编码器堆积起来,可以包含多个隐藏层。由于其可以有更多的中间隐藏层,所以对数据的表示和编码能力更强,而且在实际应用中也更加常用。稀疏自编码器,是在原有自编码器的基础上,对原创 2021-08-24 09:55:49 · 1112 阅读 · 0 评论 -
RNN手写字体分类
循环神经网络RNN不仅可以用来处理序列数据,还可以用来处理图像数据,这是因为一张图像可以看做一组很长的像素点组成的序列。下面将使用RNN对MINIST数据集建立分类器,首先导入需要的库和相关模块。import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport timeimport copyimport torchfrom torch import nnimport torch.nn.functi原创 2021-08-21 10:09:35 · 567 阅读 · 0 评论 -
循环神经网络
针对有序数据,如文本、语音等,使用循环神经网络进行分析相关问题思想是,网络中不同时间的输入之间会存在顺序关系,每个输入和它之前或者之后的输入存在关联,希望通过循环神经网络在时序上找到样本之间的序列相关性。最常见、最基本的循环神经网络有RNN、LSTM(长短期记忆)和GRU等。其中GRU可看做LSTM的简化版本,在pytorch中提供了这三种循环神经网络结构,可直接调用其函数类。下面将分别介绍这三种常用循环网络的结构和特点。1.RNNRNN循环神经网络用torch.nn.RNN()来构建。针对t时原创 2021-08-19 16:54:31 · 1252 阅读 · 0 评论 -
PyTorch基础
首先我们会介绍一下pytorch里面的一些基础知识,有了这些基础知识之后我们才能做出更多复杂的变形。1.tensor(张量)pytorch里面处理的最基本的操作对象就是tensor,tensor是张量的英文,表示的是一个多维的矩阵,比如零维就是一个点,一维就是向量,二维就是一般的矩阵,多维就相当于一个多维的数组,这和numpy是对应的,而且pytorch的tensor可以和numpy的ndarray相互转换,唯一不同的是pytorch可以在GPU上运行,而numpy的ndarray只能在CPU上运行原创 2021-04-12 09:15:26 · 152 阅读 · 0 评论 -
神经网络原理与实现
线性问题与感知机神经网络的最大优势是模拟生物神经网络的并行分布式架构,这种“道法自然”的启迪在网络的并行式训练、知识的分布式存储方面,对神经网络的学习和泛化能力的提高起到了很好的推动作用。然而,目前有一个关键的问题人类依然没有解决,就是人类的脑细胞工作效率极低,数以亿计的神经元不断通过多巴胺传递着兴奋和抑制两种状态信息,这个工作频率最高值却仅为100Hz左右,正是这种高效率低能耗的神秘结构引领者神经网络的不断发展。可以说,人工神经网络不断改进与优化的进程也是人类对脑科学的不断认知的过程,因此,目前我原创 2021-04-08 15:16:35 · 460 阅读 · 4 评论 -
深度学习知识点总结2.0
M-P神经元相当于神经网络发展的第一个细胞。 感知机是第一个具有基本功能的神经网络工具,只具有一层功能神经元。 多层前馈神经网是现代神经网络原始模型,具有多层功能神经元,一般采用BP算法进行训练。 小批梯度下降训练算法是梯度下降算法中的“中庸之道” 分布式表征是神经网络发展历程中的一个重要思想 CNN中的权值共享就是一个特征映射(即一组神经元)共享一个卷积核和一个偏置,通俗来讲,卷积核就是一组网络权值,而且几个卷积核就可以得到几个特征映射平面。 ..原创 2021-04-04 09:55:21 · 203 阅读 · 0 评论 -
深度学习知识点总结1.0
(1)深度学习以某种方式互联的神经元为基础,构建多层次的深度网络来模拟人工智能。(2)深度神经网络主要包括三个层次的神经元:输入层、隐藏层和输出层。神经元之间的连接对应一个权重,该权重的大小决定了各个输入数据的重要程度,这也是网络训练的难点。(3)神经元中用激活函数进行神经元输出的标准化工作,用海量的数据集来训练深度神经网络,通过数据集上的标签与网络迭代输出结果相比较,得到可以用来衡量网络输出结果与真实结果差异程度的损失函数。(4)每次迭代数据集之后,利用梯度下降法训练调整神经元之间的权重,来减原创 2021-04-04 09:25:23 · 315 阅读 · 0 评论