a-ceron / tesis-ia

Códigos y documentos desarrollados durante la tesis de maestria en ciencias e ingieneria de la computación
1 stars 0 forks source link

RuntimeError: mat1 dim 1 must match mat2 dim 0 #3

Closed a-ceron closed 1 year ago

a-ceron commented 1 year ago

Descripción

La lógica hasta el entrenamiento se encuentra implementado en el archvio pyTorch/test-proyects/app/main.py al pasar por el discriminador los sizes no son los mismosl

Error observado

Traceback (most recent call last):
  File "main.py", line 193, in <module>
    main()
  File "main.py", line 191, in main
    test_dataloader, loss_fn, epochs, plot_inter, device, noise_dim)
  File "main.py", line 39, in train
    fake_out = discriminator(gen_img)
  File "/home/ariel/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py", line 727, in _call_impl
    result = self.forward(*input, **kwargs)
  File "/home/ariel/Documents/models-aceron/master-degree/pyTorch/test-proyects/app/models/myFastGAN.py", line 44, in forward
    feat_4 = self.init(z)
  File "/home/ariel/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py", line 727, in _call_impl
    result = self.forward(*input, **kwargs)
  File "/home/ariel/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/container.py", line 117, in forward
    input = module(input)
  File "/home/ariel/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py", line 727, in _call_impl
    result = self.forward(*input, **kwargs)
  File "/home/ariel/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/linear.py", line 93, in forward
    return F.linear(input, self.weight, self.bias)
  File "/home/ariel/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/functional.py", line 1692, in linear
    output = input.matmul(weight.t())
RuntimeError: mat1 dim 1 must match mat2 dim 0

cc: @gibranfp

a-ceron commented 1 year ago

Por un momento pensé que se trataba de un problema de dimensiones por lo que modifique las dimensiones de las imagenes usando un transform.Resize en el transformer.

El problema persiste por lo que creo ahora que es un problema en la implementación de los pesos, habrá que ver si se cumplen las dimesiones. Sin embargo las imagenes de entrada comparten el mismo tamaño que las imagenes que se estan usando en el problema original que plantean en el modelo en https://github.com/gibranfp/CursoAprendizajeProfundo/blob/2023-1/notebooks/5e_fastgan.ipynb

a-ceron commented 1 year ago

Hardcode la variable device a cpu (L 168)el error cambio pero se mantiene igual.

Resumen

Copie el código de FastGAN, inicie modificando el dataset para que trabaje con nuestro conjunto de imágenes, además agregue una trasnformación de Reshape para que sea de 32 px . Ejecute el archivo main.py que contiene la implementación y obtuve un error en las dimensiones de los objetos que están siendo multiplicados.

cpu
Traceback (most recent call last):
  File "main.py", line 193, in <module>
    main()
  File "main.py", line 191, in main
    test_dataloader, loss_fn, epochs, plot_inter, device, noise_dim)
  File "main.py", line 39, in train
    fake_out = discriminator(gen_img)
  File "/home/ariel/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py", line 727, in _call_impl
    result = self.forward(*input, **kwargs)
  File "/home/ariel/Documents/models-aceron/master-degree/pyTorch/test-proyects/app/models/myFastGAN.py", line 44, in forward
    feat_4 = self.init(z)
  File "/home/ariel/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py", line 727, in _call_impl
    result = self.forward(*input, **kwargs)
  File "/home/ariel/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/container.py", line 117, in forward
    input = module(input)
  File "/home/ariel/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py", line 727, in _call_impl
    result = self.forward(*input, **kwargs)
  File "/home/ariel/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/linear.py", line 93, in forward
    return F.linear(input, self.weight, self.bias)
  File "/home/ariel/anaconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/functional.py", line 1692, in linear
    output = input.matmul(weight.t())
RuntimeError: mat1 and mat2 shapes cannot be multiplied (12288x32 and 64x2048)

Update:

Al generador se le pasa un tensor de dimensiones no esperadas, revisaré si es el único valor así o si a partir de ahí todos pasan por eso. Al parecer al generador no le enviamos las dimensiones correctas

z: torch.Size([128, 64]), tensor([[ 0.2643, -0.7580, -0.6894,  ...,  1.4978, -1.3939, -0.7618],
        [ 0.7815,  0.6467,  1.2023,  ...,  0.3100, -0.3477, -0.2384],
        [-2.1568,  1.8947, -0.0873,  ...,  0.8892, -1.1711,  1.4044],
        ...,
        [-0.6833,  1.8380, -0.9928,  ..., -0.3917,  2.0220, -0.6616],
        [-1.0313, -0.2801,  1.3250,  ...,  0.2938,  1.3013, -2.0627],
        [-0.1780,  1.9244,  0.4165,  ...,  0.7871,  0.3493, -0.3723]])
z: torch.Size([128, 3, 32, 32]), tensor([[[[ 1.9332e-01,  3.4943e-01,  2.8301e-01,  ...,  2.3481e-01,
a-ceron commented 1 year ago

L190 Envie dos generadores en el paso de entrenamiento, corrigiendo.