Pytorch 如何在Pytork中向CNN输入矩阵

Pytorch 如何在Pytork中向CNN输入矩阵,pytorch,Pytorch,我是pytorch的新手,我想知道如何将矩阵而不是图像输入CNN。 我用下面的方法尝试过,但是出现了一些错误。 我将数据集定义如下: class FrameDataSet(tud.Dataset): def __init__(self, data): targets = data['class'].values.tolist() features = data.drop('class', axis=1).astype(np.int64).values

我是pytorch的新手,我想知道如何将矩阵而不是图像输入CNN。 我用下面的方法尝试过,但是出现了一些错误。 我将数据集定义如下:

class FrameDataSet(tud.Dataset):
    def __init__(self, data):
        targets = data['class'].values.tolist()
        features = data.drop('class', axis=1).astype(np.int64).values

        self.datalist = features.reshape((-1, feature_num, frame_size))
        self.labellist = targets

    def __getitem__(self, index):
        return torch.Tensor(self.datalist[index].astype(float)), self.labellist[index]

    def __len__(self):
        return self.datalist.shape[0]
我的CNN是:

self.conv = nn.Sequential(
        nn.Conv2d(1, 12, 3),
        nn.ReLU(True),
        nn.MaxPool2d(3, 3))
self.fc1 = nn.Linear(80, 100)
self.fc2 = nn.Linear(100, 30)
self.fc3 = nn.Linear(30, 5)
但当数据输入CNN时,错误会带来:

文件“/home/sparks/anaconda2/lib/python2.7/site packages/torch/nn/functional.py”,第48行,conv2d raise VALUERROR(“应将4D张量作为输入,改为{}D张量。”.format(input.dim())) 应将4D张量作为输入,改为使用3D张量


您的输入可能缺少一个维度。应该是:

(批次尺寸、通道、宽度、高度)

如果批处理中只有一个元素,则张量必须在您的情况下

e、 g(1,1,28,28)

因为您的第一个conv2d层需要单通道输入