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 valor: la entrada 0 de la capa “secuencial_41” no es compatible con la capa: se esperaba la forma=(Ninguno, 70, 23, 1), se encontró la forma=(Ninguno, 23, 1)

El shape de X_train es 70,23,1

Cuando ajusto mi modelo, obtengo un ValueError: “La entrada 0 de la capa “sequential41″ no es compatible con la capa: se esperaba una forma=(None, 70, 23, 1), se encontró una forma=(None, 23, 1)”

import tensorflow.keras as keras

input_shape=(X_train.shape[0],X_train.shape[1],X_train.shape[2])
model=keras.Sequential()

# primera capa
model.add(keras.layers.Conv2D(32,(3,3),activation='relu',input_shape=input_shape))
model.add(keras.layers.MaxPool2D((3,3),strides=(2,2),padding='same'))
model.add(keras.layers.BatchNormalization())

# segunda capa
model.add(keras.layers.Conv2D(32,(3,3),activation='relu',input_shape=input_shape))
model.add(keras.layers.MaxPool2D((3,3),strides=(2,2),padding='same'))
model.add(keras.layers.BatchNormalization())

# tercera capa
model.add(keras.layers.Conv2D(32,(2,2),activation='relu',input_shape=input_shape))
model.add(keras.layers.MaxPool2D((2,2),strides=(2,2),padding='same'))
model.add(keras.layers.BatchNormalization())

# aplanar
model.add(keras.layers.Flatten())
model.add(keras.layers.Dense(64,activation='relu'))
model.add(keras.layers.Dropout(0.3))

# salida
model.add(keras.layers.Dense(3,activation='softmax')) # aquí he creado las capas

# compilar
optimizer=keras.optimizers.Adam(learning_rate=0.0001)
model.compile(optimizer=optimizer,loss="sparse_categorical_crossentropy",metrics=['accuracy'])

model.fit(X_train,y_train,validation_data=(X_validation,y_validation),batch_size=32,epochs=50)
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El modelo espera una forma de entrada de (None, 70, 23, 1), lo que significa 70 filas, 23 columnas y 1 canal. Sin embargo, la forma de los datos de entrada que se están alimentando durante el entrenamiento es (None, 23, 1), lo que significa 23 filas y 1 canal. Esto está causando el ValueError.

    Para solucionar esto, el parámetro input_shape en el código debe ajustarse de la siguiente manera:

    input_shape=(X_train.shape[1], X_train.shape[2], 1)

    Esto creará una forma de entrada de (None, 23, 1, 1), que coincide con las dimensiones segunda y tercera de los datos de entrada que se están alimentando al modelo durante el entrenamiento.

Comments are closed.