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



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

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的数据被用于工作中(例如,它被神经网络识别(。

for data, target in RandomDataLoader:
prediction_X, prediction_y = predict(model, data, target)

问题是,当从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]。

我在转换中添加了:

from PIL import ImageOps

gray_image = ImageOps.grayscale(image)

最新更新