【发布时间】:2021-07-03 02:09:17
【问题描述】:
我想在一层(或预训练模型)的顶部添加两个单独的层,我可以使用 Pytorch 吗?
【问题讨论】:
标签: python machine-learning deep-learning neural-network pytorch
我想在一层(或预训练模型)的顶部添加两个单独的层,我可以使用 Pytorch 吗?
【问题讨论】:
标签: python machine-learning deep-learning neural-network pytorch
是的,在定义模型的 forward 函数时,您可以指定输入应如何通过层。
例如:
def forward(self, X):
X = self.common_layer(X)
X = self.activation_fn(X)
Xa = self.layer_a(X)
Xb = self.layer_b(X)
# now combine outputs of the parallel layers however you please
return self.combining_layer(torch.cat([Xa, Xb]))
其中forward 是MyNet 的成员:
class MyNet(nn.Module):
def __init__(self):
# define common_layer, activation_fn, layer_a, layer_b, and combining_layer
应该像任何其他 pytorch 模型一样训练模型。
因为组合输出通过layer_a 和layer_b,计算损失梯度将优化两个层的参数。图层将单独优化,因为它们的对象的参数是独立的。
例如。
model = MyNet()
...
optimizer.zero_grad()
predictions = model(input_batch)
loss = my_loss_fn(predictions, ground_truth)
loss.backward()
optimizer.step()
【讨论】: