PyTorch/SpykeTorch中的DataLouder:转换数据提取问题

PyTorch/SpykeTorch中的DataLouder:转换数据提取问题,pytorch,pytorch-dataloader,Pytorch,Pytorch Dataloader,同事们,我在PyTorch和SpykeTorch(基于PyTorch)中使用神经网络,我需要创建图像数据集,并将它们放在数据扩音器中进行进一步处理。 完整的程序如下: 1.张量的生成, 2.使用torchvision.transforms.ToPILImage(), 3.将创建的图像保存到目录, 4.基于带有图像转换的目录创建ImageFolder(使用过滤器), 5.从ImageFolder创建数据加载器 image_set = torch.rand([10000, 28, 28], dtyp

同事们,我在PyTorch和SpykeTorch(基于PyTorch)中使用神经网络,我需要创建图像数据集,并将它们放在数据扩音器中进行进一步处理。 完整的程序如下:
1.张量的生成,
2.使用torchvision.transforms.ToPILImage(),
3.将创建的图像保存到目录,
4.基于带有图像转换的目录创建ImageFolder(使用过滤器),
5.从ImageFolder创建数据加载器

image_set = torch.rand([10000, 28, 28], dtype=torch.float)   

path = './data/images/'  
os.makedirs(path)  
        
tTPI = torchvision.transforms.ToPILImage()   
    
for i in range(n):   
    single_image = tTPI(image_set[i])     
    image_file = path+f'pic_{i}.jpg'   
    saved_image = single_image.save(f'{path}pic_{i}.jpg')    

kernels = [ SpykeTorch.utils.DoGKernel(7,1,2),
            SpykeTorch.utils.DoGKernel(7,2,1)]
filter = SpykeTorch.utils.Filter(kernels, padding = 3, thresholds = 50)
s1 = S1Transform(filter)

RandomImageFolder = ImageFolder(root='./data/', transform = s1)  
RandomDataLoader = DataLoader(RandomImageFolder, batch_size=len(RandomImageFolder))   
此外,来自数据加载器的数据用于工作(例如,它被神经网络识别)

问题是,从DataLoader中拉出数据和标签时,会发生错误:

RuntimeError: Given groups = 1, weight of size [2, 1, 7, 7], expected input [1, 3, 28, 28] to have 1 channels, but got 3 channels instead
根据维度[1,2,7,7]判断,错误发生在阶段4,其中一组过滤器用于转换。
但是,在这种情况下使用一组不同的过滤器不会导致任何错误。

如何在不更改过滤器的情况下解决此问题?

问题在于,当加载到ImageFolder中时,生成的*.jpg文件被视为RGB,大小为[1,3,28,28],而不是[1,1,28,28]

我在transform中添加了:

RuntimeError: Given groups = 1, weight of size [2, 1, 7, 7], expected input [1, 3, 28, 28] to have 1 channels, but got 3 channels instead
from PIL import ImageOps
 
gray_image = ImageOps.grayscale(image)