tieredImageNet(deep emd
时间: 2025-02-02 11:11:21 浏览: 39
### TieredImageNet 数据集概述
TieredImageNet 是 ImageNet 数据集中专门为少样本学习设计的一个子集[^3]。该数据集通过将原始 ImageNet 中的类别按照生物分类法(界门纲目科属种)进行分层组织,从而构建了一个层次结构更清晰的小样本学习环境。
具体来说,TieredImageNet 将800个基础类别划分为34个高阶类别,并进一步细分为608个低级类别。整个数据集被分割成训练集、验证集和测试集三个部分:
- 训练集包含351个类
- 验证集包含97个类
- 测试集包含160个类
每张图片尺寸为84×84像素,这使得模型能够在保持计算效率的同时处理相对复杂的视觉特征。
### Deep Embedding 技术简介
Deep embedding 方法旨在利用深度神经网络提取输入数据的有效表示形式。对于图像分类任务而言,deep embedding 主要关注于如何将不同类别的图像映射到一个度量空间,在此空间内同类样本之间的距离尽可能短而异类样本间的距离则尽可能大[^4]。
在实践中,通常会采用卷积神经网络作为骨干架构来实现这一目标。例如,ResNet 或其他先进的 CNN 变体可以用来捕捉多尺度的空间关系并生成具有区分性的特征向量。随后,可以通过对比损失函数或其他相似性度量方法优化这些嵌入向量的位置分布情况。
```python
import torch.nn as nn
class DeepEmbeddingModel(nn.Module):
def __init__(self, backbone='resnet'):
super(DeepEmbeddingModel, self).__init__()
if backbone == 'resnet':
self.backbone = torchvision.models.resnet50(pretrained=True)
num_ftrs = self.backbone.fc.in_features
self.backbone.fc = nn.Identity() # Remove the final fully connected layer
self.embedding_layer = nn.Linear(num_ftrs, 128)
def forward(self, x):
features = self.backbone(x)
embeddings = self.embedding_layer(features)
return embeddings
```
上述代码展示了基于 ResNet 架构创建 deep embedding model 的过程。移除了预训练好的 ResNet 模型的最后一层全连接层,并替换成一个新的线性变换层以获得固定长度的特征向量。
阅读全文
相关推荐

















