Pytorch: يعطي إدخال ثلاثي الأبعاد إلى Conv2d رسالة خطأ سيئة

تم إنشاؤها على ٢١ مايو ٢٠١٧  ·  3تعليقات  ·  مصدر: pytorch/pytorch

import torch
import torch.nn as nn
from torch.autograd import Variable

m = Variable(torch.randn(3, 10, 20))
nn.Conv2d(in_channels=3, out_channels=8, kernel_size=3)(m)
Traceback (most recent call last):
  File "too.py", line 6, in <module>
    nn.Conv2d(in_channels=3, out_channels=8, kernel_size=3)(m)
  File "/home/soumith/code/pytorch/torch/nn/modules/module.py", line 206, in __call__
    result = self.forward(*input, **kwargs)
  File "/home/soumith/code/pytorch/torch/nn/modules/conv.py", line 237, in forward
    self.padding, self.dilation, self.groups)
  File "/home/soumith/code/pytorch/torch/nn/functional.py", line 43, in conv2d
    return f(input, weight, bias)
RuntimeError: expected 3D tensor
medium priority (this tag is deprecated)

التعليق الأكثر فائدة

نعم! سعيد جدا بهذا. إرسال PR :)

ال 3 كومينتر

واجهت للتو مشكلة مماثلة باستخدام البيانات ذات الشكل (حجم الدفعة ، الارتفاع ، الوزن) ، تمت إضافة بُعد واحد في الموضع 1 وتم فرز المشكلة. ملاحظة. أنا أستخدم قنوات in_channels = 1.

حدث الخطأ لأن استدعاء view4d في torch/csrc/autograd/functions/convolution.cpp يتوقع موتر الوزن أن يكون أيضًا ثلاثي الأبعاد.

ومع ذلك ، سيتم تحويل الإدخال (ثلاثي الأبعاد) إلى موتر رباعي الأبعاد بالشكل (3 ، 10 ، 1 ، 20) ، حتى إذا لم نحاول إلغاء الضغط على موتر الوزن ، فستكون الأحجام غير متطابقة.

ربما يجب علينا إضافة شيك على مستوى بايثون (في nn.functional.conv2d ) لرفع إذا input.dim() != 4 ؟

soumith إذا كنت سعيدًا بهذا ، يمكنني إرسال PR

نعم! سعيد جدا بهذا. إرسال PR :)

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات