Pytorch, torchvision.transforms.Normalize((0.5, 0.5, 0,5), (0.5, 0.5, 0,5)) utilizado en los datos de rostros de anime en Kaggle produce un error de valor debido a la desviación estándar cero.
dir = './animefacedataset'
imagesize = 68
batchsize = 128
RGB_mean_std_minusonetoonerange = ((0.5, 0.5, 0,5), (0.5, 0.5, 0,5)) `*#same for (0.5, 0.5, 0,5), (0.5, 0.5, 0,5)*`
augmented_normalized_tensorized = T.Compose([T.Resize(imagesize),
T.CenterCrop(imagesize),
T.ToTensor(),
T.Normalize(*RGB_mean_std_minusonetoonerange)])
traindataset = ImageFolder(dir, augmented_normalized_tensorized)
**image, _ = traindataset[0]**
Esta última línea provoca un ValueError:
/usr/local/lib/python3.7/dist-packages/torchvision/transforms/functional.py in normalize(tensor, mean, std, in place) 344 std = torch.as_tensor(std, dtype=dtype, device=tensor.device) 345 if (std == 0).any(): --> 346 raise ValueError('std evaluated to zero after conversion to {}, leading to division by zero.'.format(dtype)) 347 if mean.ndim == 1: 348 mean = mean.view(-1, 1, 1) ValueError: std evaluated to zero after conversion to torch.float32, leading to division by zero.
davy.ai
El
ValueError
se produce porque la desviación estándar se evalúa como cero después de convertirla a torch.float32, lo que conduce a una división por cero. Esto probablemente se debe a que la variableRGB_mean_std_minusonetoonerange
tiene valores inválidos. Se debe verificar que los valores de desviación estándar no sean cero o negativos.