全连接神经网络的原始参考文献
全连接神经网络(Fully Connected Neural Network)是一种常见的人工神经网络模型,也被称为多层感知机(Multilayer Perceptron,MLP)。其原始参考文献可以追溯到以下几篇经典的论文:
- Rosenblatt, F. (1958). The perceptron: A probabilistic model for information storage and organization in the brain. Psychological Review, 65(6), 386-408.
- Rumelhart, D. E., Hinton, G. E., & Williams, R. J. (1986). Learning representations by back-propagating errors. Nature, 323(6088), 533-536.
- LeCun, Y., Bengio, Y., & Hinton, G. (2015). Deep learning. Nature, 521(7553), 436-444.
这些论文分别介绍了全连接神经网络的基本原理和训练方法。Rosenblatt的论文提出了感知机模型,为全连接神经网络的起源奠定了基础。Rumelhart等人的论文则引入了反向传播算法,使得全连接神经网络的训练更加高效。LeCun等人的论文则将全连接神经网络扩展到深度学习领域,并提出了卷积神经网络(Convolutional Neural Network,CNN)等重要概念。
SE注意力机制参考文献
SE (Squeeze-Excitation) 注意力机制概述
SE注意力机制通过引入通道间的依赖关系来增强模型的表现,使得网络可以学习到不同通道之间的相互作用[^2]。具体来说,SE模块由两个主要部分组成:
Squeeze(压缩):全局平均池化层用于获取输入特征图的全局描述符。这一操作将空间维度的信息聚合为单一数值,从而减少计算复杂度。
Excitation(激励):全连接神经网络负责建模各个通道的重要性,并生成相应的权重向量。这些权值随后应用于原始特征图上,以强调重要的特征并抑制无关紧要的部分。
这种设计允许模型自动捕捉到哪些特征对于当前任务更为关键,进而提升整体性能。
import torch.nn as nn
class SELayer(nn.Module):
def __init__(self, channel, reduction=16):
super(SELayer, self).__init__()
self.avg_pool = nn.AdaptiveAvgPool2d(1)
self.fc = nn.Sequential(
nn.Linear(channel, channel // reduction, bias=False),
nn.ReLU(inplace=True),
nn.Linear(channel // reduction, channel, bias=False),
nn.Sigmoid()
)
def forward(self, x):
b, c, _, _ = x.size()
y = self.avg_pool(x).view(b, c)
y = self.fc(y).view(b, c, 1, 1)
return x * y.expand_as(x)
kaggle 狗的种类识别参考文献
关于Kaggle狗品种识别项目参考资料
Kaggle Dog Breed Identification 数据集概述
Kaggle上的Dog Breed Identification竞赛旨在通过给定的数据集来训练模型,从而能够对不同犬种进行分类。该数据集中包含了多种犬类的照片以及对应的标签,目标是对测试集中的图像预测其所属的120个可能类别之一的概率分布[^1]。
使用PyTorch构建ResNet50模型
对于这个特定的任务,可以利用预训练的ResNet50作为基础架构来进行迁移学习。此方法涉及调整最后一层全连接层以适应新的分类数量,并继续微调整个网络参数以便更好地拟合新任务的要求。具体实现方式包括但不限于使用nn.Sequential
定义残差单元并借助nn.Module
完成整体网络的设计。
import torchvision.models as models
from torch import nn
class ResNet50(nn.Module):
def __init__(self, num_classes=120):
super().__init__()
self.model = models.resnet50(pretrained=True)
# 替换最后的FC层为适合当前任务的新一层
self.model.fc = nn.Linear(self.model.fc.in_features, num_classes)
def forward(self, x):
return self.model(x)
测试阶段与提交文件准备
当完成了模型训练之后,在评估过程中需要遍历所有的测试样本并将它们传递给已经训练完毕的神经网络得到相应的输出向量;接着应用softmax函数转换这些原始得分成为概率形式;最终按照指定格式整理成CSV文档上传至平台参与评分计算[^2]。
preds = []
for X, _ in test_iter:
X = X.to(device)
output = net(X)
output = torch.softmax(output, dim=1)
preds += output.tolist()
ids = sorted(os.listdir(os.path.join(new_data_dir, 'test/unknown')))
with open('submission.csv', 'w') as f:
f.write('id,' + ','.join(train_valid_ds.classes) + '\n')
for i, output in zip(ids, preds):
f.write(i.split('.')[0] + ',' + ','.join([str(num) for num in output]) + '\n')
相关推荐















