>

PyTorch에서 코드를 구현하는 코드는 다음과 같습니다.

model = models.vgg16(pretrained = False)
classifier = nn.Sequential(
        nn.Linear(25088, 128),
        nn.ReLU(True),
        nn.Dropout(),
        nn.Linear(128, 128),
        nn.ReLU(True),
        nn.Dropout(),
        nn.Linear(128, 20)
)
model.classifier = classifier

입력 크기 (60x60x3) 및 batch_size = 30의 이미지를 공급하고 있습니다.

Linux (Ubuntu) 터미널에서 코드를 실행하면 (PyTorch 버전 : 1.0.0, Torchvision 버전 : 0.2.1) 다음과 같은오류 메시지가 표시됩니다 :

RuntimeError: size mismatch, m1: [30 x 512], m2: [25088 x 128]

Windows의 Spyder (Anaconda)에서 실행하면 (PyTorch 버전 : 1.0.1, Torchvision 버전 : 0.2.2)완전히 실행됩니다.

Pytorch와 Torchvision의 일부 버전이 일치하지 않아서 뭔가 빠졌습니까? 둘 다 Python 3.6에서 실행 중입니다. 제안 해주세요.

[업데이트: 오류가 발생한 경우와 오류가없는 경우의 버전 번호가 잘못 교환되었습니다. 지적 해 주셔서 감사합니다 @Manoj Mohan]

  • 답변 # 1

    아마도 다른 방향 일 것입니다. 토치 비전 0.2.2에서 완벽하게 실행되고 토치 비전 0.2.1에서 실패합니다.

    0.2.2로 들어간 AdaptiveAvgPool2d 사용의 변경으로 인해 오류가 표시되지 않습니다. https://github.com/pytorch/vision/commit/83b2dfb2ebcd1b0694d46e3006ca96183c303706

    >>> import torch
    >>> model = models.vgg16(pretrained = False)
    >>> x = torch.randn(1,3,60,60) # random image
    >>> feat = model.features(x)
    >>> flat_feat = feat.view(feat.size(0), -1) # flatten
    >>> flat_feat.shape
    torch.Size([1, 512])
    >>> model.classifier(flat_feat)
    
    

    런타임 오류 : 크기 불일치, m1 : [1 x 512], m2 : [25088 x 4096] /pytorch/aten/src/TH/generic/THTensorMath.cpp:940

    크기 불일치 오류가 표시됩니다. 적응 형 평균 풀링 후에는 문제가 해결됩니다.

    >>> import torch.nn.functional as F
    >>> avg = F.adaptive_avg_pool2d(feat, (7,7))
    >>> avg = avg.view(avg.size(0), -1)
    >>> output = model.classifier(avg)
    >>> output.shape
    torch.Size([1, 1000])
    
    

  • 이전 ios - Azure Active Directory Safari 리디렉션 문제
  • 다음 c# - UserManagerCheckPasswordAsync는 항상 실패를 반환합니다