- 博客(26)
- 资源 (10)
- 收藏
- 关注
原创 昇思25天打卡训练营第26天|文本解码原理--以MindNLP为例
Beam search通过在每个时间步保留最可能的 num_beams 个词,并从中最终选择出概率最高的序列来降低丢失潜在的高概率序列的风险。缺点: 错过了隐藏在低概率词后面的高概率词,如:dog=0.5, has=0.9!按照贪心搜索输出序列("The","nice","woman") 的条件概率为:0.5 x 0.4 = 0.2。选出概率最大的 K 个词,重新归一化,最后在归一化后的 K 个词中采样。一个文本序列的概率分布可以分解为每个词基于其上文的条件概率的乘积。将出现过的候选词的概率设置为 0。
2024-07-28 11:02:21
406
原创 昇思25天打卡训练营第25天|RNN实现情感分类
预训练词向量是对输入单词的数值化表示,通过nn.Embedding层,采用查表的方式,输入单词对应词表中的index,获得对应的表达向量。这里我们设置训练轮数为5轮。同时维护一个用于保存最优模型的变量best_valid_loss,根据每一轮评估的loss值,取loss值最小的轮次,将模型进行保存。这里nn.LSTM隐藏了整个循环神经网络在序列时间步(Time step)上的循环,送入输入序列、初始状态,即可获得每个时间步的隐状态(hidden state)拼接而成的矩阵,以及最后一个时间步对应的隐状态。
2024-07-28 00:09:28
742
原创 昇思25天打卡训练营第24天|LSTM+CRF序列标注
如上表所示,正确的实体中包含的4个Token有依赖关系,I前必须是B或I,而错误输出结果将清字标注为O,违背了这一依赖。考虑到输入序列可能存在Padding的情况,CRF的输入需要考虑输入序列的真实长度,因此除发射矩阵和标签外,加入seq_length参数传入序列Padding前的长度,并实现生成mask矩阵的sequence_mask方法。设 𝑥={𝑥0,...,𝑥𝑛}为输入序列, 𝑦={𝑦0,...,𝑦𝑛},𝑦∈𝑌为输出的标注序列,其中 𝑛为序列的最大长度, 𝑌表示 𝑥对应的所有可能的输出序列集合。
2024-07-27 22:59:03
645
原创 昇思25天打卡训练营第23天|Pix2Pix实现图像转换
cGAN的生成器与传统GAN的生成器在原理上有一些区别,cGAN的生成器是将输入图片作为指导信息,由输入图像不断尝试生成用于迷惑判别器的“假”图像,由输入图像转换输出为相应“假”图像的本质是从像素到另一个像素的映射,而传统GAN的生成器是基于一个给定的随机噪声生成图像,输出图像通过其他约束条件控制生成,这是cGAN和GAN的在图像翻译任务中的差异。Pix2Pix中判别器的任务是判断从生成器输出的图像是真实的训练图像还是生成的“假”图像。生成的矩阵中的每个点代表原图的一小块区域(patch)。
2024-07-27 22:02:35
877
原创 昇思25天打卡训练营第22天|GAN图像生成
𝐷(𝐺(𝑧)) 表示生成器 𝐺生成的假图像被判定为真实图像的概率,如Generative Adversarial Nets中所述, 𝐷和 𝐺在进行一场博弈, 𝐷想要最大程度的正确分类真图像与假图像,也就是参数 log𝐷(𝑥);而 𝐺 试图欺骗 𝐷来最小化假图像被识别到的概率,也就是参数 log(1−𝐷(𝐺(𝑧)))。为了跟踪生成器的学习进度,我们在训练的过程中的每轮迭代结束后,将一组固定的遵循高斯分布的隐码test_noise输入到生成器中,通过固定隐码所生成的图像效果来评估生成器的好坏。
2024-07-27 20:34:46
551
原创 昇思25天打卡训练营第21天|Diffusion扩散模型
因此,变分下界(也称为ELBO)可用于最小化真值数据样本 𝐱0的似然负对数(有关ELBO的详细信息,请参阅VAE论文(Kingma等人,2013年)),该过程的ELBO是每个时间步长的损失之和 𝐿=𝐿0+𝐿1+...+𝐿𝑇,其中,每项的损失 𝐿𝑡(除了 𝐿0)实际上是2个高斯分布之间的KL发散,可以明确地写为相对于均值的L2-loss!在模型结构方面,DDPM的作者选择了U-Net,出自(Ronneberger et al.,2015)(当时,它在医学图像分割方面取得了最先进的结果)。
2024-07-27 19:39:27
885
原创 昇思25天打卡训练营第20天|DCGAN生成漫画头像
输入是3x64x64的图像,输出是该图像为真图像的概率。在实践场景中,该功能是通过一系列Conv2dTranspose转置卷积层来完成的,每个层都与BatchNorm2d层和ReLu激活层配对,输出数据会经过tanh函数,使其返回[-1,1]的数据范围内。nz是隐向量z的长度,ngf与通过生成器传播的特征图的大小有关,nc是输出图像中的通道数。在这两个部分中,分别获取训练过程中的损失,并在每个周期结束时进行统计,将fixed_noise批量推送到生成器中,以直观地跟踪G的训练进度。
2024-07-27 16:41:45
842
原创 昇思25天打卡训练营第19天|CycleGAN图像风格迁移互换
单独的对抗损失不能保证所学函数可以将单个输入映射到期望的输出,为了进一步减少可能的映射函数的空间,学习到的映射函数应该是周期一致的,例如对于 𝑋的每个图像 𝑥,图像转换周期应能够将 𝑥带回原始图像,可以称之为正向循环一致性,即 𝑥→𝐺(𝑥)→𝐹(𝐺(𝑥))≈𝑥。𝐺为将苹果生成橘子风格的生成器, 𝐹为将橘子生成的苹果风格的生成器, 𝐷𝑋和 𝐷𝑌为其相应判别器,具体生成器和判别器的结构可见下文代码。模型最终能够输出两个模型的权重,分别将两种图像的风格进行彼此迁移,生成新的图像。
2024-07-27 16:05:53
759
原创 昇思25天打卡训练营第18天|基于MobileNetv2的垃圾分类
MobileNet网络是由Google团队于2017年提出的专注于移动端、嵌入式或IoT设备的轻量级CNN网络,相比于传统的卷积神经网络,MobileNet网络使用深度可分离卷积(Depthwise Separable Convolution)的思想在准确率小幅度降低的前提下,大大减小了模型参数与运算量。图中Inverted residual block结构是先使用1x1卷积进行升维,然后使用3x3的DepthWise卷积,最后使用1x1的卷积进行降维,与Residual block结构相反。
2024-07-27 15:12:05
904
原创 昇思25天打卡训练营第17天|K近邻算法实现红酒聚类
它正是基于以上思想:要确定一个样本的类别,可以计算它与所有训练样本的距离,然后找出和该样本最接近的k个样本,统计出这些样本的类别并进行投票,票数最多的那个类就是分类的结果。在具体实现时,可以考虑样本的权重,即每个样本有不同的投票权重,这种方法称为带权重的k近邻算法,它是一种变种的k近邻算法。需要特别注意的是,使用欧氏距离时,应将特征向量的每个分量归一化,以减少因为特征值的尺度范围不同所带来的干扰,否则数值小的特征分量会被数值大的特征分量淹没。K值,一个样本的分类是由K个邻居的“多数表决”确定的。
2024-07-27 14:28:33
535
原创 昇思25天打卡训练营第16天|基于MindNLP+MusicGen生成个性化音乐
与传统方法不同,MusicGen采用单个stage的Transformer LM结合高效的token交织模式,取消了多层级的多个模型结构,例如分层或上采样,这使得MusicGen能够生成单声道和立体声的高质量音乐样本,同时提供更好的生成输出控制。请注意,传递给 generate 方法的任何参数都将取代生成配置中的参数,因此在调用 generate 中设置 do_sample=False 将取代生成配置中 model.generation_config.do_sample 的设置。
2024-07-27 13:58:39
528
原创 昇思25天打卡训练营第15天|Vision Transformer图像分类
最初的输入向量首先会经过Embedding层映射成Q(Query),K(Key),V(Value)三个向量,由于是并行操作,所以代码中是映射成为dim x 3的向量然后进行分割,换言之,如果你的输入向量为一个向量序列( 𝑥1, 𝑥2, 𝑥3),其中的 𝑥1, 𝑥2, 𝑥3都是一维向量,那么每一个一维向量都会经过Embedding层映射出Q,K,V三个向量,只是Embedding矩阵不同,矩阵参数也是通过学习得到的。以下是Self-Attention的解释,其核心内容是为输入向量的每个单词学习一个权重。
2024-07-27 11:50:21
948
原创 昇思25天打卡训练营第14天|SSD目标检测
SSD模型一共有6个预测特征图,对于其中一个尺寸为m*n,通道为p的预测特征图,假设其每个像素点会产生k个anchor,每个anchor会对应c个类别和4个回归偏移量,使用(4+c)k个尺寸为3x3,通道为p的卷积核对该预测特征图进行卷积操作,得到尺寸为m*n,通道为(4+c)m*k的输出特征图,它包含了预测特征图上所产生的每个anchor的回归偏移量和各类别概率分数。× 38,19 × 19,10 × 10,5 × 5,3 × 3,1 × 1,一共6种不同的特征图尺寸。
2024-07-27 10:59:25
585
原创 昇思25天打卡训练营第14天|ShuffleNet图像分类
Group Convolution(分组卷积)原理如下图所示,相比于普通的卷积操作,分组卷积的情况下,每一组的卷积核大小为in_channels/g*k*k,一共有g组,所有组共有(in_channels/g*k*k)*out_channels个参数,是正常卷积参数的1/g。Group Convolution的弊端在于不同组别的通道无法进行信息交流,堆积GConv层后一个问题是不同组之间的特征图是不通信的,这就好像分成了g个互不相干的道路,每一个人各走各的,这可能会降低网络的特征提取能力。
2024-07-26 21:25:31
432
原创 昇思25天打卡训练营第13天|ResNet50图像分类
若输出的图像较输入图像缩小一倍,则要设置shortcuts中卷积操作中的stride为2,主分支第一层卷积操作的stride也需设置为2。该结构的主分支有三层卷积结构,分别为 1×1的卷积层、 3×3卷积层和 1×1的卷积层,其中 1×1的卷积层分别起降维和升维的作用。该层堆叠3个[1×1,512;主分支第一层网络以输入channel为256为例,首先通过数量为64,大小为 1×1的卷积核进行降维,然后通过Batch Normalization层,最后通过Relu激活函数层,其输出channel为64;
2024-07-26 06:37:02
534
原创 昇思25天打卡训练营第11天|FCN图像语义分割
将底层(stride 32)的预测(FCN-32s)进行2倍的上采样得到原尺寸的图像,并与从pool4层(stride 16)进行的预测融合起来(相加),这一部分的网络被称为FCN-16s。在卷积过程的卷积操作和池化操作会使得特征图的尺寸变小,为得到原图的大小的稠密图像预测,需要对得到的特征图进行上采样操作。因为FCN网络在训练的过程中需要大量的训练数据和训练轮数,这里只提供了小数据单个epoch的训练来演示loss收敛的过程,下文中使用已训练好的权重文件进行模型评估和推理效果的展示。
2024-07-23 21:21:44
904
原创 昇思25天打卡训练营第10天|使用静态图加速
Graph模式下Python代码不是由python解释器执行,而是将代码编译成静态计算图,然后执行静态计算图.MindSpore静态图编译器维护了Python常用语法子集,支持神经网络的构建及训练.在需要对Tensor某些运算进行编译加速时,可在其定义的函数上使用jit修饰器,在调用该函数时,该模块被自动编译为静态图。在MindSpore中又称为Graph模式,基于图优化、计算图整图下沉技术,编译器可以对图进行全局优化,以获得较好的性能,比较适合网络固定且需要高性能的场景。JitConfig配置项。
2024-07-15 23:47:10
738
原创 昇思25天打卡训练营第9天|保存与加载
除Checkpoint外,MindSpore提供了云侧(训练)和端侧(推理)统一的中间表示(Intermediate Representation,IR),可直接使用export接口直接保存为MindIR。加载模型权重,要先创建相同模型的实例,再使用load_ckeckpoint,load_param_into_net加载参数到模型。在训练网络模型的过程中,保存中间的结果,用于微调fine-tune和后续的模型推理与部署.使用save_checkpoint接口保存模型,传入网络对象和指定的保存路径。
2024-07-15 22:29:17
430
原创 昇思25天打卡训练营第8天|模型训练
损失函数会评估预测结果与目标值相异程度,模型训练目标即为降低损失函数求得的误差。可以循环输入数据训练模型,一次数据集的完整迭代称为一轮.每轮包括训练与验证两个步骤,训练时迭代训练数据集并尝试收敛到最佳参数,验证时则迭代测试数据集,检查模型性能是否提升.n为批量大小,$\eta$为学习率,w为各轮训练的权重参数,$\abla l$为损失函数导数。构建数据集,定义神经网络模型,定义超参、损失函数及优化器,输入数据集训练评估。指可调整的参数,控制模型训练优化的过程,对模型训练和收敛速度有直接影响.
2024-07-15 19:26:05
552
原创 昇思25天打卡训练营第7天|函数式自动微分
自动微分主要解决的问题是将一个复杂的数学运算分解为一系列简单的基本运算,该功能对用户屏蔽了大量的求导细节和过程,大大降低了框架的使用门槛。grad和value_and_grad提供has_aux参数,当其设置为True时,可以自动实现前文手动添加stop_gradient的功能,满足返回辅助数据的同时不影响梯度计算的效果。`grad`函数有两个入参,第一个fn为待求导的函数,grad_position为求导输入位置的索引,例如此处function中w,b的位置分别为2,3,因此传入参数(2,3)。
2024-07-15 17:20:25
914
原创 昇思25天打卡训练营第6天|网络构建
由于语法解析的限制,当前在编译构图时,支持的数据类型、语法以及相关操作并没有完全与Python语法保持一致,部分使用受限。借鉴传统JIT编译的思路,从图模式的角度考虑动静图的统一,扩展图模式的语法能力,使得静态图提供接近动态图的语法使用体验,从而实现动静统一。在静态图模式下,MindSpore通过源码转换的方式,将Python的源码转换成中间表达IR(Intermediate Representation),并在此基础上对IR图进行优化,最终在硬件设备上执行优化后的图。可用于MindIR导入导出。
2024-07-15 14:02:11
780
原创 昇思25天打卡训练营第5天|数据变换Transformers
Transforms可通过map方法传入,实现对指定数据列的处理。在使用Lookup前,需要构造词表,一般可以加载已有的词表,或使用Vocab生成词表。为了更直观地呈现Transform前后的数据对比,我们使用Transforms的Eager模式进行演示。mindspore.dataset提供了面向图像、文本、音频等不同数据类型的Transforms,同时也支持使用Lambda函数。首先我们定义三段文本,作为待处理的数据,并使用GeneratorDataset进行加载,再按环节展开说明。
2024-07-15 09:51:44
1031
原创 昇思25天打卡训练营第4天|数据集
4)自定义数据集:mindspore提供了一系列公开的数据集和可供调用的API.对于不支持的数据集,可以通过自定义加载类和自定义数据集生成函数的方式来生成,通过GeneratorDataset接口自定义数据集加载方式,该接口支持通过可随机访问数据集对象、可迭代数据集对象以及生成器generator构造自定义数据集.Dataset是Pipeline的起始,用于加载原始数据.mindspore.dataset提供了内置的文本、图像、音频等数据集加载接口,并提供了自定义数据集加载接口.- 可随机访问数据集。
2024-07-04 09:05:17
370
原创 昇思25天学习打卡训练营第3天|张量Tensor
绝大部分元素为0的张量称稀疏张量.常用表达形式为,其中indices表示非0下标元素,values表示非0元素个数,shape表示被压缩的稀疏张量形状。张量可以表示矢量、标量与其他张量之间线性关系的多线性䁋,如内积、外积、线性映射、笛卡尔积.坐标在n维空间内有n^r个分量的一种量,每个分量为坐标的函数,在坐标变换时该分量也依照某些规则作线性变换,r称为该张量的秩或阶.(?
2024-07-01 12:23:59
599
原创 昇思25天学习打卡营第2天|MindSpore快速入门
mindspore.nn类是构建所有网络的基类,也是网络基本单元.可以继承nn.Cell类重写__init__,construct方法实现自定义网络操作.__init__包含所有网络层定义,construct包含数据(Tensor)变换过程.1)正向计算:模型预测结果(logits),与正确标签(label)对比求预测损失(loss)train--train-images-idx3-ubyte(60000个训练图片)test--t10k-images-idx3-ubyte(10000个测试图片)
2024-06-30 17:46:56
601
1
原创 昇思25天学习打卡营第1天|基本介绍
MindExpression统一API接口:基于python的前端表达与编程接口,函数/OOP编程范式融合与AI/数值计算表达融合,动静表达统一/单机分布表达统一。MindSporeData数据处理层:高效的数据集处理、常用数据集加载、用户自定义处理注册与pipeline并行优化。MindSpore Science科学计算库:数据集、基础模型、预置的高精度模型、前后端处理工具。1. MindSpore 是全场景深度学习框架,目标是易开发、高效、统一部署。第三方前端:第三方多语言前端表达。
2024-06-30 16:11:59
293
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅