Я хочу выполнить unittest переопределенную функцию пересылки моей сетевой модели в Pytorch. Итак, я загрузил свою модель (предварительно обученную из Zoo) с помощью метода setUp, загрузил семя и создал случайную партию. В моем методе testForward я тестировал результат пересылки по форме и числу, но я также хочу проверить конкретное значение, которое оказывается равным 0. Я не был в этом уверен, поэтому также проверил свои параметры в setUp, который, похоже, не соответствует быть 0.
import unittest
import torch
from SemanticSegmentation.models.fcn8 import FCN8
class TestFCN8(unittest.TestCase):
def setUp(self):
self.model = FCN8(8, pretrained=True)
torch.manual_seed(0)
self.x = torch.rand((4, 3, 45, 45))
for param in self.model.parameters():
print(param.data)
def testForward(self):
self.assertEqual(self.model.forward(self.x).shape.numel(), 64800)
self.assertEqual(str(self.model.forward(self.x).shape), 'torch.Size([4, 8, 45, 45])')
print(self.model.named_parameters)
if __name__ == "__main__":
unittest.main()
Итак, мой вопрос: sahpe тензора прямого возврата - это то, что я ожидаю, но почему этот тензор полностью равен нулю? Я ожидал по крайней мере нескольких значений.
Импортированная модель основана на сети VGG16 с повышением рейтинга после ConvLayer 4, 8 и 16. При необходимости я мог бы также представить код модели.