![](/img/trans.png)
[英]How can I train a model with untrained feature extraction layers? (PyTorch)
[英]How to train the Shared Layers in PyTorch
我有以下代码
import torch
import torch.nn as nn
from torchviz import make_dot, make_dot_from_trace
class Net(nn.Module):
def __init__(self, input, output):
super(Net, self).__init__()
self.fc = nn.Linear(input, output)
def forward(self, x):
x = self.fc(x)
x = self.fc(x)
return x
model = Net(12, 12)
print(model)
x = torch.rand(1, 12)
y = model(x)
make_dot(y, params = dict(model.named_parameters()))
在这里,我在forward
中重用了self.fc
两次。
计算图是看
我对计算图感到困惑,我很好奇如何在反向传播中训练这个 model? 在我看来,渐变将永远存在于一个循环中。 非常感谢。
您的图表没有问题。 您可以像任何其他前馈 model 一样训练它。
fc.bias
参数。 由于您重复使用同一层两次,因此偏差有两个向外的箭头(用于网络的两个地方)。 在反向传播阶段,方向是相反的:偏差会从两个地方得到梯度,这些梯度会加起来。Addmm(bias, x, T(weight)
,其中T
是转置, Addmm
是矩阵乘法加上向量。因此,您可以看到数据( weight
, bias
)如何被传递给函数( Addmm
, T
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.