【发布时间】:2026-01-22 10:15:01
【问题描述】:
我正在做一个模型来识别图像上的某些动物种类,现在我只有 0 和 1 个分类变量。
但是当我训练我的模型时,我得到了这个错误:
raise ValueError("logits and labels must have the same shape (%s vs %s)" %
ValueError: logits and labels must have the same shape ((None, 2) vs (None, 1))
这是我的代码
especies = [0,1,1,0,0,0,0,1,1,1,1,0]
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test= train_test_split(cv_img,especies)
x_train_numpy = np.array(x_train)
x_test_numpy = np.array(x_test)
y_train_numpy = np.array(y_train)
y_test_numpy = np.array(y_test)
x_train_numpy = x_train_numpy/255
x_test_numpy = x_test_numpy/255
model = Sequential() #CREA EL MODELO QUE VA A IR RECIBIENDO CAPAS...
# primer bloque de convolucion
model.add(Conv2D(32,(3,3),padding='same',input_shape=(32,32,3),activation='relu')) # agrega solo una capa
model.add(Conv2D(32,(3,3),activation='relu')) # padding no es necesario porque ya se agrego ceros en la anterior / input shape solo se agrega al principio
model.add(MaxPool2D(pool_size=(2,2))) # reduce la cantidad de data
model.add(Dropout(0.25)) # quiero que desconecte 25% de las conexiones
# segundo bloque de convolucion
model.add(Conv2D(64,(3,3),padding='same',activation='relu')) # ya no necesito input_shape
model.add(Conv2D(64,(3,3),activation='relu')) # padding no es necesario porque ya se agrego ceros en la anterior / input shape solo se agrega al principio
model.add(MaxPool2D(pool_size=(2,2))) # reduce la cantidad de data
model.add(Dropout(0.25)) # quiero que desconecte 25% de las conexiones
# TERCE BLOQUE DE CONVOLUCION
model.add(Conv2D(64,(3,3),padding='same',activation='relu')) # input shape solo se usa CUANDO la capa anterior es la data en BRUTO
model.add(Conv2D(64,(3,3),activation='relu')) # SEGUNDA CAPA
model.add(MaxPool2D(pool_size=(2,2)))
model.add(Dropout(0.25))
# capa final
model.add(Flatten()) # esto es solo para transicion de la convolucion a la capa densa
model.add(Dense(512,activation='relu')) # esta es un capa densa comun y corriente
model.add(Dropout(0.5)) # desconectar el 50% de conexiones
model.add(Dense(2,activation='sigmoid'))
model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])
model.fit(x_train_numpy,y_train_numpy,epochs=10,batch_size=32, validation_data=(x_test_numpy,y_test_numpy),shuffle=True)
【问题讨论】:
-
这里是Intro Tour 和Help Center。尝试阅读How to ask a good question 并通过Minimum reproducible example 发布您的代码,以便您可以有效地获得答案。
标签: python image-processing keras deep-learning