Closed a-ceron closed 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
Hardcode la variable device
a cpu
(L 168)el error cambio pero se mantiene igual.
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)
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,
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 mismoslError observado
cc: @gibranfp