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.

Error de tiempo de ejecución al usar el modelo de convolución de PyTorch.

Estoy tratando de desarrollar un modelo de clasificación de covid-19. El conjunto de datos de imágenes que he utilizado tiene forma torch.Size([100, 3, 224, 224]). Al intentar ejecutar mi modelo, obtengo este mensaje de error en tiempo de ejecución (como se muestra en la imagen). Cualquier ayuda para comprender y solucionar el problema, por favor.
este es el código

class ModeloCnnCovid(ImageClassificationBase):
    def __init__(self):
        super().__init__()
        self.network = nn.Sequential(
            nn.Conv2d(3, out_channels=32, kernel_size=3, padding=1),
            nn.ReLU(),
            nn.Conv2d(32, 64, kernel_size=3, stride=1, padding=1),
            nn.ReLU(),
            nn.MaxPool2d(2, 2),  # salida: 64 x 16 x 16

            nn.Conv2d(64, 128, kernel_size=3, stride=1, padding=1),
            nn.ReLU(),
            nn.Conv2d(128, 128, kernel_size=3, stride=1, padding=1),
            nn.ReLU(),
            nn.MaxPool2d(2, 2),  # salida: 128 x 8 x 8

            nn.Conv2d(128, 256, kernel_size=3, stride=1, padding=1),
            nn.ReLU(),
            nn.Conv2d(256, 256, kernel_size=3, stride=1, padding=1),
            nn.ReLU(),
            nn.MaxPool2d(2, 2),  # salida: 256 x 4 x 4

            nn.Flatten(),
            nn.Linear(256*4*4, 1024),
            nn.ReLU(),
            nn.Linear(1024, 512),
            nn.ReLU(),
            nn.Linear(512, 2)
        )

    def forward(self, xb):
        return self.network(xb)

Imagen de error

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error en tiempo de ejecución indica que hay una discrepancia de dimensiones entre la entrada y la matriz de peso de la capa lineal. Esto significa que la salida de la capa anterior no es compatible con la entrada de la capa actual.

    En este caso, parece que el problema está en la capa Flatten. La capa Flatten convierte la salida de las capas convolucionales en un tensor 1D. Sin embargo, es posible que el tamaño del tensor devuelto por tus capas convolucionales no sea compatible con el tamaño de entrada de la capa lineal que le sigue.

    Para solucionar este problema, puedes intentar imprimir el tamaño del tensor después de las capas convolucionales y antes de la capa Flatten. Asegúrate de que el tamaño coincida con el tamaño de entrada esperado de la capa lineal.

    Alternativamente, puedes intentar cambiar el tamaño del kernel o la stride en las capas convolucionales para ajustar el tamaño de salida al tamaño de entrada de la capa lineal.

    En general, es importante asegurarse de que el tamaño del tensor sea compatible en cada paso de la arquitectura del modelo para evitar errores de discrepancia de dimensiones.

Comments are closed.