【发布时间】:2022-12-11 03:11:49
【问题描述】:
目标:建立一个 gnn 模型来提取嵌入
我无法找到线性层的正确输入大小
节点特征具有不同的大小。这可以通过为节点特征选择最大大小并进行零填充来解决
问题1:如何设置线性层(XXXX)的输入大小?因为线性层应该具有相同的输入大小。
问题2: [数据(x=[9, 614], edge_index=[2, 20]), 数据(x=[17, 614], edge_index=[2, 36])] x 的形状为 (9,614) 所以在填充后它变成了 (1000,1000) 我是否也应该为 edge_index 做零填充?如果是这样,通过 (100,100) 或 (1000,1000) 就像 x.shape?有人有什么建议吗?谢谢
class Gnet(torch.nn.Module):
def __init__(self, input_features, embedding_size):
# Init parent
super(Gnet, self).__init__()
torch.manual_seed(42)
# GCN layers
self.initial_conv = GCNConv(input_features, embedding_size)
self.conv1 = GCNConv(embedding_size, embedding_size)
self.conv2 = GCNConv(embedding_size, embedding_size)
# Output layer
self.out = Linear(XXXX, embedding_size)
def forward(self, x, edge_index, batch_index):
x_padded = torch.zeros((1000, 1000))
x_padded[:x.shape[0], :x.shape[1]] = x
# First Conv layer
hidden = self.initial_conv(x_padded, edge_index)
# Other Conv layers
hidden = self.conv1(hidden, edge_index)
hidden = self.conv2(hidden, edge_index)
out = self.out(XXXX, hidden)
return out
```
`
【问题讨论】:
-
最好在 ai.stackexchange.com 中提问
标签: python deep-learning pytorch conv-neural-network pytorch-geometric