spectral_norm 在 GCNConv 模块上
spectral_norm on GCNConv module
我想在 GCNConv 层上调用 torch.nn.utils spectral_norm 函数
gc1 = GCNConv(18, 16)
spectral_norm(gc1)
但我收到以下错误:
KeyError: 'weight'
意思是gc1._parameters没有权重(只有偏差):
gc1._parameters
OrderedDict([('bias', Parameter containing:
tensor([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
requires_grad=True))])
然而,gc1.parameters() 存储了两个对象,其中一个是 16 x 18 矩阵(权重矩阵)。
for p in gc1.parameters():
print('P: ', p.shape)
P: torch.Size([16])
P: torch.Size([16, 18])
如何让 spectral_norm 函数在 GCNConv 模块上运行?
根据source code,权重参数包装在 GCNConv 对象中包含的线性模块中,如 lin
。
我想这应该可以工作:
gc1 = GCNConv(18, 16)
spectral_norm(gc1.lin)
我想在 GCNConv 层上调用 torch.nn.utils spectral_norm 函数
gc1 = GCNConv(18, 16)
spectral_norm(gc1)
但我收到以下错误:
KeyError: 'weight'
意思是gc1._parameters没有权重(只有偏差):
gc1._parameters
OrderedDict([('bias', Parameter containing:
tensor([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
requires_grad=True))])
然而,gc1.parameters() 存储了两个对象,其中一个是 16 x 18 矩阵(权重矩阵)。
for p in gc1.parameters():
print('P: ', p.shape)
P: torch.Size([16])
P: torch.Size([16, 18])
如何让 spectral_norm 函数在 GCNConv 模块上运行?
根据source code,权重参数包装在 GCNConv 对象中包含的线性模块中,如 lin
。
我想这应该可以工作:
gc1 = GCNConv(18, 16)
spectral_norm(gc1.lin)