Я использую pytorch для создания простой модели, такой как VGG16, и в моей модели перегружена функция forward
.
Я обнаружил, что все склонны использовать model(input)
для получения результата, а не model.forward(input)
, и меня интересует разница между ними. Я пытаюсь ввести те же данные, но результат отличается. Я в замешательстве.
Я вывел layer_weight до того, как я ввел данные, вес не изменился, и я знаю, когда мы используем model(input)
его с помощью функции __call__
, и эта функция вызовет model.forward
.
vgg = VGG()
vgg.double()
for layer in vgg.modules():
if isinstance(layer,torch.nn.Linear):
print(layer.weight)
print(" use model.forward(input) ")
result = vgg.forward(array)
for layer in vgg.modules():
if isinstance(layer,torch.nn.Linear):
print(layer.weight)
print(" use model(input) ")
result_2 = vgg(array)
print(result)
print(result_2)
выход:
Variable containing:1.00000e-02 *
-0.2931 0.6716 -0.3497 -2.0217 -0.0764 1.2162 1.4983 -1.2881
[torch.DoubleTensor of size 1x8]
Variable containing:
1.00000e-02 *
0.5302 0.4494 -0.6866 -2.1657 -0.9504 1.0211 0.8308 -1.1665
[torch.DoubleTensor of size 1x8]