J'essaie d'utiliser un modèle pré-formé. Voici où le problème se produit
Le modèle n'est-il pas censé intégrer une simple image colorée? Pourquoi attend-il une entrée en 4 dimensions?
RuntimeError Traceback (most recent call last)
<ipython-input-51-d7abe3ef1355> in <module>()
33
34 # Forward pass the data through the model
---> 35 output = model(data)
36 init_pred = output.max(1, keepdim=True)[1] # get the index of the max log-probability
37
5 frames
/usr/local/lib/python3.6/dist-packages/torch/nn/modules/conv.py in forward(self, input)
336 _pair(0), self.dilation, self.groups)
337 return F.conv2d(input, self.weight, self.bias, self.stride,
--> 338 self.padding, self.dilation, self.groups)
339
340
RuntimeError: Expected 4-dimensional input for 4-dimensional weight 32 3 3, but got 3-dimensional input of size [3, 224, 224] instead
Où
inception = models.inception_v3()
model = inception.to(device)
De la documentation , Conv2d
les calques attendent une entrée avec la forme
(n samples, channels, height, width)
Passer des images en forme ( 224, 224, 3 ) comme elles sont normalement ne fonctionnera pas.
Pour les images en couleur (avec trois canaux), vous devrez remodeler votre entrée comme suit:
x = x.reshape(-1, 3, 224, 224) # if numpy array
x = x.view(-1, 3, 224, 224) # if torch tensor
Pour les images en niveaux de gris (noir et blanc):
x = x.reshape(-1, 1, 224, 224) # if numpy array
x = x.view(-1, 1, 224, 224) # if torch tensor
En plus de cela, assurez-vous qu'il correspond à votre Conv2d
couches.
self.conv1 = nn.Conv2d(channels, _, _) # 1 or 3