如何解决当 n 是函数的参数时,如何在 pytorch 中创建 n 个线性层
我有以下模型:
class model(nn.Module):
def __init__(self,y_dim,x_dim):
super(model,self).__init__()
self.x_dim = x_dim
self.y_dim = y_dim
self.kern = 3
self.conv1 = nn.Conv1d(y_dim,2,self.kern,padding=1)
self.conv2 = nn.Conv1d(2,4,padding=1)
self.conv3 = nn.Conv1d(4,padding=1)
self.conv4 = nn.Conv1d(4,padding=1)
#these are the layers I want to automate
self.lina = nn.Linear(28,28)
self.linb = nn.Linear(28,28)
def forward(self,x):
x = F.relu(self.conv1(x))
x = F.relu(self.conv2(x))
x = F.relu(self.conv3(x))
x = F.relu(self.conv4(x))
xa = self.lina(x[:,:]).reshape(z.shape[0],1,z.shape[2])
xb = self.linb(x[:,z.shape[2])
return torch.cat((xa,xb),1)
model = model(2,28)
因此,self.conv4
的输出通道始终为 y_dim
。我想要 y_dim
不同的线性层(它们是独立的),它们采用 self.conv4
的输出。到目前为止,我不知道比显式编写图层更好的方法,就像我在上面的示例中所做的那样。但是,是否有一种方法可以自动执行此操作,即生成线性层对象,然后在 forward
函数中适当地使用它?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。