【问题标题】:what is number of input neurons required in nn.Linear layernn.Linear 层所需的输入神经元数量是多少
【发布时间】: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
```
`

【问题讨论】:

标签: python deep-learning pytorch conv-neural-network pytorch-geometric


【解决方案1】:
  1. 要在 Gnet 类中设置线性层的输入大小,您 可以使用最后一个 GCN 层的隐藏张量作为输入大小。 隐藏张量应与输出的形状相同 最后一个 GCN 层,它是 (batch_size, embedding_size)。所以, 您可以将线性层的输入大小设置为embedding_size

  2. 是的,您还应该对 edge_index 张量进行零填充。这 edge_index 张量应该与填充的 x ​​张量具有相同的形状, 这是 (1000, 1000)。因此,您可以填充 edge_index 张量 以与填充 x 张量相同的方式使用零。

【讨论】:

    猜你喜欢
    • 2019-02-15
    • 2018-10-20
    • 1970-01-01
    • 2014-04-11
    • 2020-12-06
    • 2015-04-02
    • 2014-11-07
    • 1970-01-01
    • 2018-04-29
    相关资源
    最近更新 更多