深度学习
文章平均质量分 95
使用pytorch复现主流神经网络
青云遮夜雨
这个作者很懒,什么都没留下…
展开
-
Vision Transformer(ViT)论文解读与代码实践(Pytorch)
RGB为彩色图片,L为灰度图片= 'RGB':这里解释一下collate_fn这个静态方法:collate_fn方法的作用是定义数据加载时的批处理操作。在PyTorch中,数据加载器(DataLoader)将数据集按照指定的批次大小(batch size)加载到模型中进行训练或推断。当数据集中的样本具有不同的大小或形状时,需要对每个批次进行适当的处理,以便能够对其进行批处理计算。原创 2023-09-21 12:34:02 · 4649 阅读 · 2 评论 -
自然语言处理应用(三):微调BERT
微调(Fine-tuning)BERT是指在预训练的BERT模型基础上,使用特定领域或任务相关的数据对其进行进一步训练以适应具体任务的需求。BERT(Bidirectional Encoder Representations from Transformers)是一种基于Transformer架构的深度双向预训练语言模型,通过在大规模无监督数据上进行预训练,学习到了丰富的语言表示。:根据任务或领域的需求,准备标注的训练数据集。数据集应包含输入文本以及相应的标签或目标。:从预训练的BERT模型中加载参数。原创 2023-09-13 17:40:20 · 5237 阅读 · 0 评论 -
自然语言处理应用(二):自然语言推断
下面我们来定义一个用于加载SNLI数据集的类。类构造函数中的变量num_steps指定文本序列的长度,使得每个小批量序列将具有相同的形状。换句话说,在较长序列中的前num_steps个标记之后的标记被截断,而特殊标记“”将被附加到较短的序列后,直到它们的长度变为num_steps。通过实现__getitem__功能,我们可以任意访问带有索引idx的前提、假设和标签。原创 2023-09-11 19:51:53 · 1395 阅读 · 0 评论 -
自然语言处理应用(一):情感分析
我们在下面的类中实现textCNN模型。除了用卷积层代替循环神经网络层外,我们还使用了两个嵌入层:一个是可训练权重,另一个是固定权重。**kwargs):# 这个嵌入层不需要训练# 最大时间汇聚层没有参数,因此可以共享此实例# 创建多个一维卷积层# 沿着向量维度将两个嵌入层连结起来,# 每个嵌入层的输出形状都是(批量大小,词元数量,词元向量维度)连结起来# 根据一维卷积层的输入格式,重新排列张量,以便通道作为第2维。原创 2023-09-10 19:54:59 · 1353 阅读 · 0 评论 -
自然语言处理(八):预训练BERT
在下文中,我们首先为BERT的两个预训练任务实现辅助函数。这些辅助函数将在稍后将原始文本语料库转换为理想格式的数据集时调用,以预训练BERT。原创 2023-09-05 21:35:11 · 1305 阅读 · 1 评论 -
自然语言处理(七):来自Transformers的双向编码器表示(BERT)
BERT(Bidirectional Encoder Representations from Transformers)是一种预训练的自然语言处理模型,由Google于2018年提出。它是基于Transformer模型架构的深度双向(双向指同时考虑上下文信息)表示学习模型。BERT的目标是通过在大规模文本语料上进行自监督学习来学习通用的语言表示。原创 2023-09-05 13:39:29 · 2431 阅读 · 0 评论 -
自然语言处理(六):词的相似性和类比任务
在前面的章节中,我们在一个小的数据集上训练了一个word2vec模型,并使用它为一个输入词寻找语义相似的词。实际上,在大型语料库上预先训练的词向量可以应用于下游的自然语言处理任务,为了直观地演示大型语料库中预训练词向量的语义,让我们将预训练词向量应用到词的相似性和类比任务中。原创 2023-08-30 21:45:39 · 1178 阅读 · 0 评论 -
自然语言处理(五):子词嵌入(fastText模型)
在英语中,“helps”“helped”和“helping”等单词都是同一个词“help”的变形形式。“dog”和“dogs”之间的关系与“cat”和“cats”之间的关系相同,“boy”和“boyfriend”之间的关系与“girl”和“girlfriend”之间的关系相同。在法语和西班牙语等其他语言中,许多动词有40多种变形形式,而在芬兰语中,名词最多可能有15种变形。在语言学中,形态学研究单词形成和词汇关系。但是,word2vec和GloVe都没有对词的内部结构进行探讨。原创 2023-08-30 20:24:30 · 700 阅读 · 0 评论 -
自然语言处理(四):全局向量的词嵌入(GloVe)
全局向量的词嵌入(Global Vectors for Word Representation),通常简称为GloVe,是一种用于将词语映射到连续向量空间的词嵌入方法。它旨在捕捉词语之间的语义关系和语法关系,以便在自然语言处理任务中能够更好地表示词语的语义信息。GloVe的设计基于两个观察结果:共现矩阵(co-occurrence matrix)和词向量的线性关系。共现矩阵记录了词语之间在上下文中的共现频率,即它们在一定窗口大小内同时出现的次数。原创 2023-08-29 16:15:13 · 2406 阅读 · 0 评论 -
自然语言处理(三):基于跳元模型的word2vec实现
在前向传播中,跳元语法模型的输入包括形状为(批量大小,1)的中心词索引center和形状为(批量大小,max_len)的上下文与噪声词索引contexts_and_negatives,这两个变量首先通过嵌入层从词元索引转换成向量,然后它们的批量矩阵相乘,返回形状为(批量大小,1,max_len)的输出。输出中的每个元素是中心词向量和上下文或噪声词向量的点积。pred = torch.bmm(v, u.permute(0, 2, 1))#批量矩阵乘法。原创 2023-08-28 23:51:27 · 1532 阅读 · 0 评论 -
自然语言处理(二):近似训练
近似训练(Approximate Training)是指在机器学习中使用近似的方法来训练模型,以降低计算复杂度或提高训练效率。这种方法通常用于处理大规模数据集或复杂模型,其中精确的训练算法可能过于耗时或计算资源不足。近似训练的主要思想是通过在训练过程中引入一些近似技巧或近似算法,以在准确性和效率之间取得平衡。以下是一些常见的近似训练方法:随机采样:在训练过程中,通过从数据集中随机采样一部分样本来训练模型,而不是使用完整的数据集。这种方法可以提高训练速度,但可能会引入一定的估计误差。原创 2023-08-27 22:38:02 · 1248 阅读 · 0 评论 -
自然语言处理(一):词嵌入
简单来说,跳元模型就是通过假设一个词可以用来在文本序列中生成其周围的单词。以文本序列“the”“man”“loves”“his”“son”为例。Pthemanhisson∣lovePthemanhisson"∣"love若假设上下文词是在给定中心词的情况下独立生成的(即条件独立性)。原创 2023-08-26 23:09:24 · 3458 阅读 · 1 评论 -
计算机视觉:风格迁移
本节将介绍如何使用卷积神经网络,自动将一个图像中的风格应用在另一图像之上,即风格迁移(style transfer) (Gatys et al., 2016)。 这里我们需要两张输入图像:一张是内容图像,另一张是风格图像。 我们将使用神经网络修改内容图像,使其在风格上接近风格图像。 例如, 图中的内容图像为本书作者在西雅图郊区的雷尼尔山国家公园拍摄的风景照,而风格图像则是一幅主题为秋天橡树的油画。 最终输出的合成图像应用了风格图像的油画笔触让整体颜色更加鲜艳,同时保留了内容图像中物体主体的形状。首先,我们初原创 2023-06-07 18:20:28 · 3087 阅读 · 0 评论 -
计算机视觉:语义分割理论及实战
语义分割(Semantic Segmentation)是指将一张图像分割成若干个区域,并对每个区域赋予语义标签的任务。它是计算机视觉中的一种重要技术,被广泛应用于自动驾驶、医学图像分析、地理信息系统等领域。与传统的图像分割任务不同,语义分割不仅需要将图像分割成若干个区域,还需要对每个区域赋予语义标签。例如,在自动驾驶中,语义分割可以将道路、车辆、行人等区域分割出来,并对每个区域赋予相应的语义标签,以帮助车辆进行自动驾驶。在医学图像分析中,语义分割可以将不同的组织结构(如器官、肌肉、骨骼等)分割出来,并对其进原创 2023-06-06 20:44:46 · 1160 阅读 · 0 评论 -
计算机视觉:转置卷积
转置卷积(Transposed Convolution),也称为反卷积(Deconvolution),是卷积神经网络(CNN)中的一种操作,它可以将一个低维度的特征图(如卷积层的输出)转换为更高维度的特征图(如上一层的输入)。转置卷积操作通常用于图像分割、生成对抗网络(GAN)和语音识别等任务中。在传统卷积操作中,我们使用一个滑动窗口(卷积核)来从输入图像中提取特征。而在转置卷积中,我们使用一个滑动窗口来填充零值的输出图像,然后通过卷积核来计算输出图像中每个像素的值。原创 2023-06-05 23:09:10 · 2062 阅读 · 0 评论 -
计算机视觉:目标检测理论及实战
目标检测有两种类型的损失。使用L1L_1L1范数损失,即预测值和真实值之差的绝对值。掩码变量bbox_masks令负类锚框和填充锚框不参与损失的计算。最后,我们将锚框类别和偏移量的损失相加,以获得模型的最终损失函数。def cls_eval(cls_preds , cls_labels) : # 由于类别预测结果放在最后一维,argmax需要指定最后一维。原创 2023-06-03 23:43:29 · 1488 阅读 · 0 评论 -
计算机视觉基础:锚框
目标检测算法通常会在输入图像中采样大量的区域,然后判断这些区域中是否包含我们感兴趣的目标,并调整区域边界从而更准确地预测目标的真实边界框(ground-truth bounding box)。不同的模型使用的区域采样方法可能不同。这里我们介绍其中的一种方法:以每个像素为中心,生成多个缩放比和宽高比(aspect ratio)不同的边界框。这些边界框被称为锚框(anchor box)。原创 2023-05-28 23:34:48 · 1060 阅读 · 0 评论 -
注意力机制(五):Transformer架构原理和实现、实战机器翻译
注意力机制(Attention Mechanism)是一种人工智能技术,它可以让神经网络在处理序列数据时,专注于关键信息的部分,同时忽略不重要的部分。在自然语言处理、计算机视觉、语音识别等领域,注意力机制已经得到了广泛的应用。注意力机制的主要思想是,在对序列数据进行处理时,通过给不同位置的输入信号分配不同的权重,使得模型更加关注重要的输入。例如,在处理一句话时,注意力机制可以根据每个单词的重要性来调整模型对每个单词的注意力。这种技术可以提高模型的性能,尤其是在处理长序列数据时。在深度学原创 2023-03-25 12:26:45 · 3567 阅读 · 0 评论 -
注意力机制(四):多头注意力
多头注意力(Multi-Head Attention)是注意力机制的一种扩展形式,可以在处理序列数据时更有效地提取信息。在标准的注意力机制中,我们计算一个加权的上下文向量来表示输入序列的信息。而在多头注意力中,我们使用多组注意力权重,每组权重可以学习到不同的语义信息,并且每组权重都会产生一个上下文向量。最后,这些上下文向量会被拼接起来,再通过一个线性变换得到最终的输出。原创 2023-03-23 15:49:40 · 17969 阅读 · 0 评论 -
注意力机制(三):Bahdanau注意力
Bahdanau 注意力是一种在神经机器翻译中使用的注意力机制,由Dzmitry Bahdanau等人于2015年首次提出。在传统的神经机器翻译模型中,编码器将源语言句子编码为一个固定长度的向量,然后解码器使用这个向量生成目标语言句子。然而,这种固定长度向量的方法存在一些缺点,例如无法处理较长的句子,以及无法捕捉句子中不同单词之间的复杂依赖关系。Bahdanau 注意力通过引入一种动态的对齐机制来解决这些问题。在每个时间步,解码器都会根据先前的输出和编码器的所有隐藏状态计算一个对齐分布,该分布指示编原创 2023-03-23 15:48:13 · 2551 阅读 · 0 评论 -
注意力机制(二):评分函数
注意力机制(Attention Mechanism)是一种人工智能技术,它可以让神经网络在处理序列数据时,专注于关键信息的部分,同时忽略不重要的部分。在自然语言处理、计算机视觉、语音识别等领域,注意力机制已经得到了广泛的应用。注意力机制的主要思想是,在对序列数据进行处理时,通过给不同位置的输入信号分配不同的权重,使得模型更加关注重要的输入。例如,在处理一句话时,注意力机制可以根据每个单词的重要性来调整模型对每个单词的注意力。这种技术可以提高模型的性能,尤其是在处理长序列数据时。在深度学原创 2023-03-22 12:28:45 · 1712 阅读 · 0 评论 -
注意力机制(一):注意力提示、注意力汇聚、Nadaraya-Watson 核回归
目录注意力机制(Attention Mechanism)是一种人工智能技术,它可以让神经网络在处理序列数据时,专注于关键信息的部分,同时忽略不重要的部分。在自然语言处理、计算机视觉、语音识别等领域,注意力机制已经得到了广泛的应用。注意力机制的主要思想是,在对序列数据进行处理时,通过给不同位置的输入信号分配不同的权重,使得模型更加关注重要的输入。例如,在处理一句话时,注意力机制可以根据每个单词的重要性来调整模型对每个单词的注意力。这种技术可以提高模型的性能,尤其是在处理长序列数据时。在深度学原创 2023-03-21 21:15:22 · 3495 阅读 · 0 评论 -
现代循环神经网络实战:机器翻译
该代码定义了一个名为 Vocab 的类,用于构建文本的词汇表。init(self, tokens=None, min_freq=0, reserved_tokens=None):构造函数,创建一个词汇表。参数 tokens 是一个包含文本所有单词的列表,min_freq 是单词在文本中最少出现的次数,reserved_tokens 是一个保留的单词列表。构造函数首先使用 count_corpus() 函数统计单词的出现次数,并将单词按照出现频率从高到低排序。原创 2023-03-15 16:13:03 · 1238 阅读 · 0 评论 -
现代循环神经网络:双向循环神经网络
双向循环神经网络(Bidirectional Recurrent Neural Network,简称BRNN)是一种能够处理序列数据的神经网络,它能够在一个序列数据中同时考虑过去和未来的信息。与传统的循环神经网络(RNN)不同的是,BRNN在每个时间步上使用两个独立的循环结构,一个用于从过去到未来的传递信息,另一个用于从未来到过去的传递信息。原创 2023-03-14 10:52:20 · 2701 阅读 · 0 评论 -
现代循环神经网络:深度循环神经网络
深度循环神经网络(Deep Recurrent Neural Network,简称DRNN)是一种循环神经网络(Recurrent Neural Network,简称RNN)的扩展形式,它具有多个隐藏层,并且可以处理长度不固定的序列数据。网络中的每个隐藏层都有自己的权重矩阵,并且这些权重矩阵可以共同对输入和前一个隐藏层的状态进行转换。每个隐藏层的计算方式与第一个隐藏层相同,但输入为前一个隐藏层的输出。输出层的计算方式与传统的神经网络相同,即将最后一个隐藏层的输出。个隐藏层的权重矩阵,是输出层的权重矩阵,原创 2023-03-14 10:22:44 · 1463 阅读 · 0 评论 -
现代循环神经网络:长短期记忆网络(LSTM),并使用LSTM进行股票的预测
长短期记忆网络(Long Short-Term Memory, LSTM)是一种特殊的循环神经网络(RNN)结构,用于处理序列数据,如语音识别、自然语言处理、视频分析等任务。LSTM网络的主要目的是解决传统RNN在训练过程中遇到的梯度消失和梯度爆炸问题,从而更好地捕捉序列数据中的长期依赖关系。LSTM网络引入了一种记忆单元(memory cell),用于存储和更新序列中的信息,并引入了三个门(gate)控制记忆单元中的信息流动:输入门(input gate)、遗忘门(forget ga原创 2023-03-13 20:54:43 · 1723 阅读 · 0 评论 -
现代循环神经网络:门控循环单元(GRU)
门控循环神经网络(Gated Recurrent Neural Network,简称“门控循环神经网络”或“门循环神经网络”)是一种改进的循环神经网络(RNN)架构。它包含了一些门控机制,可以更好地捕捉时间序列数据中的长期依赖关系。门控循环神经网络最早由Hochreiter和Schmidhuber在1997年提出,但是由于当时缺乏计算能力和数据集,它并没有得到广泛应用。后来,在2014年,Cho等人提出了一种简化版的门控循环神经网络,即GRU,它比传统的门控循环神经网络更易于训练和实现原创 2023-03-13 14:37:06 · 8128 阅读 · 0 评论 -
循环神经网络原理及实现(二):循环神经网络复现
循环神经网络(Recurrent Neural Network,RNN)是一种神经网络结构,其主要特点是网络中存在循环连接,使得网络具有记忆功能,可以处理序列数据。在传统神经网络中,每一层之间的连接是单向的,每一层的输入仅仅依赖于前一层的输出。而在循环神经网络中,除了输入层和输出层之外,每一层之间都存在循环连接,使得网络具有一定的记忆功能,可以处理序列数据。在循环神经网络中,每个时间步的输入数据不仅取决于当前时刻的输入数据,还取决于上一个时间步的网络状态。原创 2023-03-11 21:05:20 · 1955 阅读 · 0 评论 -
循环神经网络原理及实现(一):序列模型,文本预处理和语言模型
自回归模型(AutoRegressive Model)是一种常见的时间序列预测模型,它基于序列中过去的值来预测未来的值。ytc∑i1pϕiyt−iϵtytc∑i1pϕiyt−iϵt其中,yty_tyt是时间序列在时刻ttt的观测值,ccc是常数,ϕi\phi_iϕi是回归系数,ppp是滞后阶数,ϵt\epsilon_tϵt是白噪声随机误差。原创 2023-03-11 10:37:25 · 1447 阅读 · 0 评论 -
现代卷积神经网络之稠密连接网络(DenseNet),并对CFIAR10训练
密集块(Dense Block)是DenseNet网络结构的核心部分,它是由多个密集连接层(Dense Layer)组成的模块,用于提取图像中的特征信息。在每个密集块中,所有前面层的输出都会与当前层的输入进行连接,并通过一个非线性变换进行处理。具体地,假设当前是第lll个密集块,第iii层的输出为xix_ixi,则第iiixiHix0x1⋯xi−1xiHi([x0x1⋯xi−1])其中,Hi⋅。原创 2023-03-08 14:39:09 · 2234 阅读 · 2 评论 -
现代卷积神经网络(ResNet)
残差网络(Residual Network,简称 ResNet)是由微软研究院于 2015 年提出的一种深度卷积神经网络。它的主要特点是在网络中添加了“残差块”(Residual Block),有效地解决了深层网络的梯度消失和梯度爆炸问题,从而使得更深的网络结构可以训练得更好。原创 2023-03-08 12:52:48 · 3145 阅读 · 0 评论 -
现代卷积神经网络(GoogleNet),并使用GoogleNet进行实战CIFAR10分类
Inception模块是GoogleNet中的一个核心组成部分,用于提取图像特征。该模块采用并行的多个卷积层和池化层来提取不同尺度的特征,然后将它们在通道维度上进行拼接,得到更丰富的特征表达。一个基本的Inception模块包含了四个分支(Branch),每个分支都有不同的卷积核或者池化核,如下图所示:在这个模块中,我们可以看到分支1、2、3都是卷积层,分支4则是最大池化层,其目的是提取图像中不同大小的特征。通过这些分支的组合,Inception模块可以有效地提取图像的多尺度特征,且计算代价相对较小。原创 2023-03-07 13:40:58 · 2874 阅读 · 2 评论 -
现代卷积神经网络(NiN),并使用NIN训练CIFAR10的分类
NiN,即Network in Network,是一种由Min Lin等人于2013年提出的深度神经网络架构。相较于传统的卷积神经网络,NiN引入了“1x1卷积层”以及全局平均池化层,这两个模块的引入使得NiN模型可以通过不同的网络层抽取多层次、多尺度的特征。NiN的核心思想是通过在卷积神经网络的最后两层之间添加一个或多个全局平均池化层(global average pooling layer),将每个空间位置的特征合并为一个全局统计值,从而减少模型的参数量,防止过拟合。原创 2023-03-07 12:35:01 · 1801 阅读 · 0 评论 -
现代神经网络(VGG),并用VGG16进行实战CIFAR10分类
本节介绍了现代神经网络VGG的架构,并使用VGG16进行实战CIFAR10分类原创 2023-03-06 12:09:43 · 2498 阅读 · 0 评论 -
现代卷积神经网络(AlexNet)
本章介绍的是深度卷积神经网络(AlexNet)的原理架构及其复现原创 2023-03-05 14:02:19 · 944 阅读 · 0 评论 -
卷积神经网络的原理及实现
本章介绍的卷积神经网络(convolutional neural network,CNN)是一类强大的、为处理图像数据而设计的神经网络。 基于卷积神经网络架构的模型在计算机视觉领域中已经占主导地位,当今几乎所有的图像识别、目标检测或语义分割相关的学术竞赛和商业应用都以这种方法为基础。原创 2023-03-04 23:36:31 · 1905 阅读 · 0 评论 -
Kaggle实战:预测房价
本文利用之前学习的多层感知机和深度学习相关知识,从零开始进行预测房价的实战练习原创 2023-02-20 15:27:39 · 1497 阅读 · 0 评论 -
深度学习神经网络基础知识(三)前向传播,反向传播和计算图
本文讲述神经网络基础知识,具体细节讲述前向传播,反向传播和计算图,同时讲解神经网络优化方法:权重衰减,Dropout等方法,最后进行Kaggle实战,具体用一个预测房价的例子使用上述方法。原创 2023-02-20 15:17:09 · 7511 阅读 · 11 评论 -
深度学习神经网络基础知识(二)权重衰减、暂退法(Dropout)
本文讲述神经网络基础知识,具体细节讲述前向传播,反向传播和计算图,同时讲解神经网络优化方法:权重衰减,Dropout等方法,最后进行Kaggle实战,具体用一个预测房价的例子使用上述方法。原创 2023-02-20 12:09:47 · 1664 阅读 · 0 评论 -
深度学习神经网络基础知识(一) 模型选择、欠拟合和过拟合
本文讲述神经网络基础知识,具体细节讲述前向传播,反向传播和计算图,同时讲解神经网络优化方法:权重衰减,Dropout等方法,最后进行Kaggle实战,具体用一个预测房价的例子使用上述方法。原创 2023-02-20 12:05:45 · 1374 阅读 · 0 评论