PyTorch/SpykeTorch中的DataLouder:转换数据提取问题
同事们,我在PyTorch和SpykeTorch(基于PyTorch)中使用神经网络,我需要创建图像数据集,并将它们放在数据扩音器中进行进一步处理。 完整的程序如下: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
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)