loss.backward () devuelve RuntimeError: error de CUDA: se activó la comprobación de assert en el dispositivo.
Estoy intentando utilizar BCELoss sin éxito.
loss = BCELoss()
opt = optim.AdamW (model.parameters(), lr=0.01, betas=(0.9, 0.99), weight_decay=0.001)
loss = Loss(z, y)
opt.zero_grad()
loss.backward()
z, y tienen la forma: (128,2)
Estoy obteniendo el siguiente error (de loss.backward()
):
RuntimeError: Error de CUDA: dispositivo de activación del lado del dispositivo.
Los errores de núcleo CUDA pueden informarse de manera asincrónica en alguna otra llamada a la API, por lo que la traza de llamadas a continuación podría ser incorrecta.
Para la depuración, considere pasar CUDA_LAUNCH_BLOCKING=1.
¡Cuando uso CrossEntropyLoss (y y tiene la forma de (128,)
), todo funciona!
- ¿Qué está mal?
- ¿Qué necesito cambiar?
davy.ai
BCELoss
con formas de tensor de(128, 2)
, es probable que los datos de entrada sean la fuente del error.Para resolver el error, es posible que necesite ajustar los tensores de entrada
z
ey
deBCELoss
para que sean del mismo tamaño y tipo de datos. Por ejemplo, puede intentar convertiry
en un tensor codificado one-hot con forma(128, 2)
utilizando la funcióntorch.nn.functional.one_hot()
antes de pasarlo aBCELoss
.Como alternativa, también puede usar
CrossEntropyLoss
, ya que funciona bien con formas de tensor de(128,)
.