由于我之前一直用Keras,感觉Keras中的Dense()层非常好用,可以非常方便地进行全连接操作。这次需要用到Pytorch中的全连接层,一开始还不太会用,但是仔细研究后发现,其实两者殊途同归,方法很相似。
当我们需要将形如[batch_size, 18, 1, 1]
的张量全连接操作后分别得到[batch_size, 18, 16]
和[batch_size,1]
的张量,该如何操作呢?
[batch_size, 18, 16]
class my_network(nn.Module):
def __init__(self):
super(my_network, self).__init__()
self.fc = nn.Linear(1, 16)
def forward(self, inputs):
x = x.view(inputs, 18, 1) # 先进行维度压缩,将输入的[batch_size, 18, 1, 1]变为[batch_size, 18, 1]
A = self.fc(x) # 全连接后,维度变为[batch_size, 18, 16]
return A
[batch_size, 1]
class my_network(nn.Module):
def __init__(self):
super(my_network, self).__init__()
self.fc = nn.Linear(18, 1)
def forward(self, inputs):
x = x.view(inputs, 18) # 先进行维度压缩,将输入的[batch_size, 18, 1, 1]变为[batch_size, 18]
A = self.fc(x) # 全连接后,维度变为[batch_size, 1]
return A