- 博客(19)
- 收藏
- 关注
原创 pytorch训练模型保存与加载
是将PyTorch模型的状态字典(state dictionary)保存到文件中的常用代码。返回一个Python字典,该字典包含了模型所有可学习参数的名称和对应的张量值。方法将这些参数加载到新的模型实例中,从而创建一个与原模型参数相同的新模型。函数会返回一个Python字典,该字典包含了被保存的模型参数。是将训练好的模型参数加载到新模型中的常用代码。中,以便在需要时重新加载模型参数。函数将这个字典保存到文件。
2023-03-19 19:22:50
875
原创 pytorch常见的损失函数和优化器
是学习率(learning rate)的缩写,是指在每次参数更新时,更新的幅度大小。学习率的选择是机器学习中的一个重要问题,它决定了模型在训练过程中参数更新的速度和稳定性,对模型的性能和训练效率都有重要影响。通常情况下,选择合适的学习率需要根据具体的模型和数据集进行调参,可以通过尝试不同的学习率来找到最佳的取值。是一个方法,用于获取一个模型中需要更新的参数。在PyTorch中,模型通常是由多个层(如全连接层、卷积层等)组成的,每个层都有自己的权重和偏置,这些权重和偏置是需要在训练过程中不断调整的。
2023-03-19 19:19:33
864
原创 数据集加载——dataset和dataloader
方法:该方法初始化数据集,并加载数据集中的图像和标签。在该方法中,我们可以使用 Python 的文件操作或第三方库(如 PIL)来读取图像,并使用 NumPy 数组来存储它们。方法:该方法根据给定的索引返回一个样本,其中包括图像和对应的标签。在该方法中,我们需要根据索引从图像数据集和标签数据集中获取对应的图像和标签,并对它们进行预处理(如归一化、调整大小等)。shuffle 参数设置为 True,这意味着在将样本划分为小批量之前,会随机地对数据集中的样本进行洗牌。方法返回数据集中样本的数量,
2023-03-19 16:58:30
589
原创 模型搭建——__init__()和forward()
当子类定义自己的构造函数时,通常需要调用父类的构造函数来初始化从父类继承的属性和方法。这个层将输入张量的大小从 784 转换为 128,即将输入的每个特征与 128 个权重相乘并加上一个偏置项,得到输出特征。和fc1相同,定义了一个名为fc2的全连接层,将输入大小为128的特征数量转换为大小为10的特征数量输出。),它将输入的大小为 784 的张量(即输入特征数量)转换为大小为 128 的张量(即输出特征数量)。作为一个维度的大小,可以让 PyTorch 自动计算该维度的大小,以确保张量的总大小保持不变。
2023-03-19 16:15:01
1242
2
原创 用pytorch实现简单模型的搭建,数据集的加载,以及网络的训练
在深度学习中,可视化可以帮助我们更好地理解模型的运作,以及数据的分布和变化。除了上述提到的模型搭建、数据集加载和网络训练之外,还有一些常用的操作可以帮助我们更好地完成深度学习任务,包括模型评估、可视化、迁移学习等等。在训练过程中,我们还可以添加一些其他的操作,例如计算模型在验证集上的准确率、调整学习率等。最后,我们可以保存训练好的模型,以便在测试集上进行评估或者在生产环境中使用。在上面的例子中,我们定义了一个包含输入数据和标签的数据集。在上面的例子中,我们定义了一个包含两个全连接层的模型。
2023-03-17 16:35:47
519
原创 注意力机制——ECANet(Efficient Channel Attention Network)
ECANet注意力机制是针对通道维度的注意力加权机制。它的基本思想是,通过学习通道之间的相关性,自适应地调整通道的权重,以提高网络的性能。ECANet通过两个步骤实现通道注意力加权: 1.提取通道特征 2.计算通道权重。)是一种新颖的注意力机制,用于深度神经网络中的特征提取,它可以有效地减少模型参数量和计算量,提高模型的性能。
2023-03-16 16:11:47
3782
4
原创 注意力机制——Self-Attention Networks(SANet)
在自注意力机制中,每个元素都是一个向量表示,例如,在语言处理中,可以将每个单词的嵌入向量作为输入序列中的元素。然后,为了计算每个元素与其他元素之间的关系,自注意力机制引入了三个矩阵:查询矩阵(query matrix)、键矩阵(key matrix)和值矩阵(value matrix)。它在Transformer模型中被广泛使用,能够对输入序列中的每个元素计算其与其他元素之间的关系,并使用这些关系来更好地表示输入序列。的神经网络,该网络包含一个Self-Attention模块和一个前向神经网络。
2023-03-16 15:36:04
1572
原创 注意力机制——Recurrent Attention Model(RAM)
重构损失函数的目的是通过生成的注视点将原始图像重建为输入图像,并使用 mu 和 sigma 计算生成的图像和原始图像之间的差异。为了实现这一点,RAM引入了一个可学习的“注意力模块”,该模块可以在每个时间步骤中选择感兴趣的区域,并生成与该区域相关的特征图。注意力模块负责选择感兴趣的区域,并生成局部特征图,而RNN分类器则使用这些局部特征图来预测图像的类别。RAM旨在模仿人类视觉系统的注意力机制,即在不同的时间点将视线聚焦于图像的不同部分,以便对其进行更深入的处理。
2023-03-16 15:04:43
1262
原创 注意力机制——Convolutional Block Attention Module(CBAM)
其中通道注意力模块通过对输入特征图在通道维度上进行最大池化和平均池化,然后将这两个池化结果输入到一个全连接层中,最后输出一个通道注意力权重向量。空间注意力模块则通过对输入特征图在通道维度上进行平均池化和最大池化,然后将这两个池化结果输入到一个全连接层中,最后输出一个空间注意力权重张量。CBAM 模块包括两个注意力子模块:通道注意力模块和空间注意力模块。通道注意力模块通过对输入特征图在通道维度上进行最大池化和平均池化,然后将这两个池化结果输入到一个全连接层中,最后输出一个通道注意力权重向量。
2023-03-16 14:49:00
3892
原创 注意力机制——Multi-Head Attention(MHA)
对于一个给定的查询向量,MHA 会对键向量进行加权求和,权重由查询向量和键向量之间的相似度计算得到,然后将得到的加权和乘以值向量进行输出。在多头机制下,输入的序列数据会被分成多个头,每个头进行独立的计算,得到不同的输出。其中 Q, K, V 分别表示查询向量、键向量和值向量,ℎ 表示头的数量,headi 表示第 i 个头的输出,WO 是输出变换矩阵。其中 dk 是键向量的维度,softmax相似度进行归一化,将每个键向量的权重计算出来,然后将权重乘以值向量,最后进行加权求和得到注意力输出。
2023-03-16 14:26:11
17751
2
原创 注意力机制——Non-local Networks(NLNet)
自注意力模块采用注意力机制来计算每个像素与其他像素之间的相互依赖关系,并使用这些依赖关系来加权聚合所有像素的特征表示。这种全局交互方式使得模型能够在像素之间建立远距离的依赖关系,从而提高了模型的表示能力。传统的卷积神经网络(CNN)在处理图像时,只考虑了局部区域内的像素信息,忽略了全局信息之间的相互作用。NLNets通过引入非局部块来解决这个问题,该块包括一个自注意力模块,用于学习像素之间的相互作用。:NLNet是一种非局部注意力模型,通过对整个输入空间的特征进行加权求和,以捕捉全局信息。
2023-03-16 13:55:59
2225
原创 注意力机制——Spatial Transformer Networks(STN)
整个 STN 模块可以插入到任意位置,用于提高网络的对图像变形、旋转等几何变换的鲁棒性。STN 的优点在于,它可以学习对输入数据进行任意复杂的空间变换,从而提高网络的对图像变形、旋转等几何变换的鲁棒性。例如,在图像分类任务中,可以将 STN 插入到卷积神经网络中,用于对输入图像进行空间变换,增强网络对图像变形、旋转等几何变换的鲁棒性。Spatial Transformer Networks(STN)是一种空间注意力模型,可以通过学习对输入数据进行空间变换,从而增强网络的对图像变形、旋转等几何变换的鲁棒性。
2023-03-16 13:41:57
5370
2
原创 注意力机制——Squeeze-and-Excitation Networks(SENet)
2.Excitation操作:根据Squeeze操作得到的通道重要性系数,对每个通道的特征图进行加权,即通过一个全连接层对重要性系数进行学习,得到一个权重向量,然后将该向量应用到原始的特征图上。1.Squeeze操作:将每个通道的特征图压缩成一个数值,即全局平均池化(global average pooling),可以理解为对每个通道进行特征提取,得到该通道的重要性系数。是一种通道注意力模型,通过对每个通道进行权重调整,增强对于重要通道的关注度,从而提高了模型的表现力。表示输入特征图的通道数,
2023-03-16 13:10:59
3225
原创 损失函数——感知损失(Perceptual Loss)
例如,VGG-19网络中的卷积层可以提取图像的纹理和结构信息,而网络的全连接层可以提取图像的语义信息。感知损失的计算方式通常是将输入图像和目标图像分别通过预训练的神经网络,得到它们在网络中的特征表示。与传统的均方误差损失函数(Mean Square Error,MSE)相比,感知损失更注重图像的感知质量,更符合人眼对图像质量的感受。其中,x 是输入图像,y 是目标图像,Fi(x) 和 Fi(y) 分别表示它们在预训练的神经网络中的第 i 层的特征表示,N 是特征层数。然后我们创建了损失函数。
2023-03-15 18:35:16
23161
6
原创 损失函数——Dice Loss损失函数
然而,Dice Loss也有一些缺点。然后计算预测结果和真实结果的重叠部分和并集,根据 Dice Loss 的公式计算 Dice 系数,并将其转换为损失值。与交叉熵损失函数相比,Dice Loss能够更好地处理类别不平衡问题,因为它在计算时将每个像素的权重考虑在内,而不是简单地将像素的数量作为权重。是一种用于图像分割任务的损失函数,它的基本思想是计算预测结果和真实结果的重叠部分,通过最小化两者的差异来优化模型。其中,N是像素总数,pi是模型预测的第i个像素的值,gi是真实标签的第i个像素的值。
2023-03-15 18:04:17
6550
3
原创 损失函数——KL散度(Kullback-Leibler Divergence,KL Divergence)
KL散度衡量的是在一个概率分布 �P 中获取信息所需的额外位数相对于使用一个更好的分布 �Q 所需的额外位数的期望值。要在训练中使用 KL散度作为损失函数,可以将其作为模型的一部分加入到损失函数的计算中。在机器学习中,KL散度常常用于衡量两个概率分布之间的差异程度,例如在生成模型中使用 KL散度作为损失函数的一部分,或者在聚类和分类问题中使用 KL散度作为相似度度量。需要注意的是,KL散度的计算要求 P 和 Q 的元素都为正数,因此需要在计算前对两个概率分布进行归一化处理,使其元素和为 1。
2023-03-15 17:45:56
20746
1
原创 损失函数——对数损失(Logarithmic Loss,Log Loss)
要在训练中使用对数损失作为损失函数,可以在模型训练的过程中调用 PyTorch 中的损失函数计算方法,并将计算得到的损失加入到反向传播过程中以更新模型参数。在 PyTorch 中,可以使用 nn.BCELoss() 来计算二元分类问题的对数损失,使用 nn.CrossEntropyLoss() 来计算多元分类问题的对数损失。可以看出,当预测的概率接近于实际标签时,对数损失接近于0,而当预测的概率偏离实际标签时,对数损失会增加。需要注意的是,在训练过程中,我们使用的损失函数是 nn.BCELoss()
2023-03-15 17:32:29
8124
1
原创 损失函数——交叉熵损失(Cross-entropy loss)
对于每个类别i,yi表示真实标签x属于第i个类别的概率,y^i表示模型预测x属于第i个类别的概率。对于每个输入数据x,我们定义一个C维的向量y^,其中y^i表示x属于第i个类别的概率。假设真实标签y是一个C维的向量,其中只有一个元素为1,其余元素为0,表示x属于第k个类别。该函数将输入数据视为模型输出的概率分布,将目标标签视为类别索引,并计算这些概率与实际标签之间的交叉熵损失。其中,xi表示真实标签的第i个元素,yi表示模型预测x属于第i个类别的概率。清空梯度,计算模型输出和损失,使用。
2023-03-15 16:54:14
25306
原创 损失函数——均方误差(Mean Squared Error,MSE)
在使用MSE作为损失函数进行优化时,通常会采用梯度下降等优化算法来最小化MSE的值,从而提高模型的性能。MSE的值越小,说明模型的预测值与真实值之间的差异越小,模型的性能越好。如果需要在训练模型时使用MSE作为损失函数进行优化,可以在训练循环中计算损失,并使用反向传播算法更新模型参数。在PyTorch中,可以使用内置的MSE损失函数来计算均方误差。其中,n是样本数量,xi是第i个样本的真实值,yi是模型对第i个样本的预测值。在上面的代码中,首先创建了真实值和预测值的张量,然后使用PyTorch内置的。
2023-03-15 15:46:14
20057
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人