检查目标时出错:预期activation_5具有形状1,,但数组的形状为2,

问题描述

我正在尝试运行二进制图像分类器。

我的火车CSV文件有4列:

id,type,Good,Unusual

abc,['Good'],1,0

我的代码如下:

    path = ""

os.chdir(path)

train = pd.read_csv("binary_train.csv")

train_image = []

for i in tqdm(range(train.shape[0])):
    img = image.load_img(train['id'][i],target_size=(400,400,3))
    img = image.img_to_array(img)
    img = img/255
    train_image.append(img)
X = np.array(train_image)

#plt.imshow(X[2])

y = np.array(train.drop(['id','type'],axis=1))
#y.shape

X_train,X_test,y_train,y_test = train_test_split(X,y,random_state=42,test_size=0.1)

model = Sequential()
model.add(Conv2D(32,(3,3),input_shape=(400,3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Conv2D(32,2)))

model.add(Conv2D(64,2)))

model.add(Flatten())
model.add(Dense(512))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(1))
model.add(Activation('sigmoid'))

model.compile(optimizer='rmsprop',loss='binary_crossentropy',metrics=['accuracy'])

model.fit(X_train,epochs=10,validation_data=(X_test,y_test),batch_size=32)

我遇到以下错误

回溯(最近通话最近): 文件“”,第2行,在 文件“ C:\ Users \ yasir.pirkani \ PycharmProjects \ untitled \ venv1 \ lib \ site-packages \ keras \ engine \ training.py”,行1154,适合 batch_size =批量大小) _standardize_user_data中第621行的文件“ C:\ Users \ yasir.pirkani \ PycharmProjects \ untitled \ venv1 \ lib \ site-packages \ keras \ engine \ training.py” exception_prefix ='目标') 文件“ C:\ Users \ yasir.pirkani \ PycharmProjects \ untitled \ venv1 \ lib \ site-packages \ keras \ engine \ training_utils.py”,行145,在standardize_input_data中 str(数据形状)) ValueError:检查目标时出错:预期activation_5的形状为(1,),但数组的形状为(2,)

解决这个问题上,我需要帮助。

解决方法

在进行二进制分类时,必须在最后一个密集层中进行更改。

model.add(Flatten())
model.add(Dense(512))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(2))
model.add(Activation('sigmoid'))