【阅读笔记】Multi-Dimensional Edge Features Graph Neural Network on Few-Shot Image Classification

本文提出了一种名为MDE-GNN的新方法,该方法在小样本图像分类中利用多维边缘特征。与传统GNN方法不同,MDE-GNN通过构建边缘矩阵并利用边缘聚合模块生成相似度得分,从而考虑了节点间丰富的边缘信息。通过边缘相似性损失的情节训练,MDE-GNN在两个基准数据集上实现了最先进的性能。
摘要由CSDN通过智能技术生成

Abstract

使用图神经网络 (GNN) 进行小样本图像分类是近年来的热门话题。大多数基于 GNN 的方法都取得了可喜的性能。这些方法利用节点特征或一维边缘特征进行分类,忽略节点之间的丰富边缘特征。在本文中,我们提出了一种利用多维边缘特征的新型图神经网络(MDE-GNN),该网络基于边缘标记图神经网络(EGNN)和用于小样本学习的直推式神经网络。与之前基于 GNN 的方法不同,我们利用多维边缘特征信息在图中构建边缘矩阵。在节点和边缘特征层更新后,我们通过精心设计的边缘聚合模块通过多维边缘特征生成相似度得分矩阵。我们网络中的参数是通过带有边缘相似性损失的情节训练迭代学习的。我们将我们的模型应用于监督少样本图像分类任务。与之前的 GNN 和其他小样本学习方法相比,我们使用两个基准数据集实现了最先进的性能。

Contributions

1) MDE-GNN 首次提出利用具有多维边缘标签信息的 GNN 进行少样本学习分类任务

2) MDE-GNN 使用节点间的绝对距离向量更新多维边缘特征,并利用边缘聚合网络获得相似度分数。

3)我们对基准数据集进行了充分的实验,与以前的方法相比,获得了最先进的性能。

Method

 1、嵌入网络

嵌入网络包含四个卷积层和一个全连接层。每个卷积层都包含 Convolution、Batch Normalization、Max pooling 和leaky-ReLU 作为激活函数。给定所有输入样本 X = {xi}i=1,..T,其中 T 是样本数,T = N × K + N,训练嵌入网络以将 xi 映射到输出特征表示:

 2、多维边图神经网络

节点特征由嵌入神经网络初始化,参数为 θ。边缘特征初始化如下:

遵循图注意力神经网络(GAT)的思想,使用多维边缘特征作为权重来聚合邻居节点信息。节点更新机制如下:

值得注意的是,节点特征的更新是基于不同维度的边缘特征聚合相似的邻居节点特征,而忽略了不同节点的影响

然后,边缘更新网络利用更新后的节点特征生成多维相似性注意矩阵。通过组合注意矩阵分别更新多维边缘特征,如下所示:

其中 𝑓𝑎𝑙 是一个多维相似度计算网络,将节点之间的绝对距离向量映射到 p-dimension,sig 表​​示可以将相似度得分映射为 0 到 1 的值的 sigmoid 函数。此外,相似度得分和对应的边缘特征为根据公式[5]计算得到更新后的边缘特征。

在节点和边缘特征层层传播之后,聚合网络用于通过加权不同维度的边缘特征来生成预测的节点相似度,使得:

 利用边缘分类的结果,损失可以总结为:

实验结果

 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Here is an example code for a one-dimensional convolutional wavelet neural network using PyTorch: ```python import torch import torch.nn as nn import pywt class ConvWaveletNet(nn.Module): def __init__(self, num_classes): super(ConvWaveletNet, self).__init__() self.conv1 = nn.Conv1d(1, 16, kernel_size=3, stride=1, padding=1) self.relu1 = nn.ReLU() self.pool1 = nn.MaxPool1d(kernel_size=2, stride=2) self.conv2 = nn.Conv1d(16, 32, kernel_size=3, stride=1, padding=1) self.relu2 = nn.ReLU() self.pool2 = nn.MaxPool1d(kernel_size=2, stride=2) self.conv3 = nn.Conv1d(32, 64, kernel_size=3, stride=1, padding=1) self.relu3 = nn.ReLU() self.pool3 = nn.MaxPool1d(kernel_size=2, stride=2) self.fc1 = nn.Linear(64 * 4, 128) self.relu4 = nn.ReLU() self.fc2 = nn.Linear(128, num_classes) def forward(self, x): # Apply wavelet transform to the input signal cA, cD = pywt.dwt(x, 'db1') x = cA + cD x = torch.tensor(x).unsqueeze(0).unsqueeze(0).float() # add batch and channel dimensions # Convolutional layers x = self.conv1(x) x = self.relu1(x) x = self.pool1(x) x = self.conv2(x) x = self.relu2(x) x = self.pool2(x) x = self.conv3(x) x = self.relu3(x) x = self.pool3(x) # Fully connected layers x = x.view(-1, 64 * 4) x = self.fc1(x) x = self.relu4(x) x = self.fc2(x) return x ``` This network consists of three convolutional layers followed by two fully connected layers. The input signal is first transformed using the discrete wavelet transform, and then passed through the convolutional layers. The output of the last convolutional layer is flattened and passed through the fully connected layers to produce the final classification result. Note that this implementation uses the 'db1' wavelet for the wavelet transform, but other wavelets can also be used.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值