es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.
Tags:  , ,

Answer

  1. Avatar for 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 variable RGB_mean_std_minusonetoonerange tiene valores inválidos. Se debe verificar que los valores de desviación estándar no sean cero o negativos.

Comments are closed.