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.

conv2D no devuelve la forma de salida esperada.

Estoy tratando de copiar una arquitectura de modelo. En la arquitectura original del modelo, después de aplicar la Conv2d, la forma de salida es (None, 112, 112, 16) con 432 parámetros. Como se muestra en la imagen adjunta del modelo original original Model.

Pero cuando aplico la Conv2d, la forma de salida que obtengo es (None, 225, 225, 16) con 448 parámetros, como se muestra en mi imagen del modelo My model.

Este es el código que escribí:

from keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPool2D, ZeroPadding2D, InputLayer, Input
from tensorflow.keras.models import Model
inputs = Input(shape=(224, 224, 3))
x = ZeroPadding2D(padding=((1,0),(1,0)))(inputs)
x = Conv2D(16, kernel_size=(3, 3), padding="same")(x)
x = Dense(1500, activation="relu")(x)
x = Dense(1000, activation="relu")(x)
prediction = Dense(784, activation='softmax')(x)

model_functional = Model(inputs=inputs, outputs=prediction)

model_functional.summary()
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que hay una diferencia en la forma de entrada de los dos modelos. El modelo original parece tomar una entrada de forma (224, 224, 3), mientras que tu modelo está tomando una entrada de forma (225, 225, 3).

    Para solucionar este problema, debes cambiar la forma de entrada de tu modelo para que coincida con la forma de entrada del modelo original de (224, 224, 3). Una vez que hagas esto, la forma de salida de tu capa Conv2D debería coincidir con la forma de salida del modelo original de (None, 112, 112, 16).

    Entonces, puedes modificar tu código de la siguiente manera:

    inputs = Input(shape=(224, 224, 3))
    x = Conv2D(16, kernel_size=(3, 3), padding="same")(inputs)
    x = Dense(1500, activation="relu")(x)
    x = Dense(1000, activation="relu")(x)
    prediction = Dense(784, activation='softmax')(x)
    
    model_functional = Model(inputs=inputs, outputs=prediction)
    
    model_functional.summary()
    

    Esto te debería dar la misma arquitectura de modelo que el modelo original.

Comments are closed.