背景:
使用SAGEConv卷积层的图神经网络,网络架构如下
原因:
我在卷积层之前改变了特征矩阵的维度,原本为[172,1,32] 现在改为了 [172,2,32]。导致了特征矩阵x在进行 "x = x.squeeze(1)" 操作时并没有将第二向量值去除(本矩阵中代表着未编码特征,需要在编码后删除)。导致出错。
解决方法:
使用reshape代替x = x.squeeze(1)。
x = x.reshape(x.shape[0], self.embed_dim*self.feature_dim)
其中
self.embed_dim为编码特征维度,如:你想将特征编码为128、64、32位都可以。
feature_dim特征维度,如:一个节点有几个特征点,[123,1234]就是两个特征点。
最后全连接层也需要改变shape,以链接下一次卷积操作。
x = torch.sigmoid(self.lin3(x)) # batch个结果
x = x.reshape(x.shape[0])