《Few-Shot Learning with Graph Neural Networks》代码理解

本文深入探讨了使用Graph Neural Networks (GNN)进行Few-shot Learning的方法。通过5-way 1-shot任务为例,展示了在一个episode中如何处理查询图像和构建支持集。在训练过程中,首先利用编码器提取特征,接着GNN模块计算节点间相似度,最后通过softmax层进行分类。GNN内部包含了Wcompute和Gconv两个关键步骤,分别用于计算权重和生成新特征。整个流程涉及特征提取、相似度计算和损失计算,揭示了GNN在解决少样本学习问题中的核心机制。

参考了解读: Few-shot learning with Graph Neural Networks - Yuan Z的文章 - 知乎

代码使用 o m n i g l o t omniglot omniglot数据集,以 5 w a y − 1 s h o t 5way-1shot 5way1shot为例,一个 e p i s o d e episode episode只有一张 q u e r y query query,一个 b a t c h batch batch中有 300 300 300 e p i s o d e episode episode


main.py中的第144行开始训练的迭代

数据

首先加载数据

# main.py line149
data = train_loader.get_task_batch(batch_size=args.batch_size, n_way=args.train_N_way,
                                   unlabeled_extra=args.unlabeled_extra, num_shots=args.train_N_shots,
                                   cuda=args.cuda, variable=True)
[batch_x, label_x, _, _, batches_xi, labels_yi, oracles_yi, hidden_labels] = data

在一般的情况下(不是半监督学习),我们只需要用到

  • batch_x查询的图片(300,1,28,28)
  • label_x查询图片的 o n e − h o t one-hot onehot标签(300,5)
  • batches_xi支持集[(300,1,28,28),(300,1,28,28),(300,1,28,28),(300,1,28,28),(300,1,28,28)]
  • labels_yi支持集 o n e − h o t one-hot o
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值