我有一个模型需要检测植物是否已死亡或存活。只是预测一个类,数据是不平衡的,但是我使用权重来抵消不平衡。
我查看了有关此问题的大量问题,但似乎都无法解决,显然在过度拟合时会出现此问题,因此我使用了辍学。但是模型仍然只能预测一个类别。
在此模型:
model=Sequential()
# Convolutional layer / input layer
model.add(Conv2D(60, 5,5, activation='relu', input_shape=np.shape(X[1])))
model.add(MaxPooling2D(pool_size=(3,3)))
model.add(Dropout(0.8))
model.add(Flatten())
model.add(Dropout(0.7))
model.add(Dense(130, activation='relu'))
model.add(Dropout(0.6))
# Output layer
model.add(Dense(2, activation='softmax'))
model.compile(loss='binary_crossentropy',
optimizer='adam',
metrics=['accuracy'])
model.fit(X, y, epochs=6, batch_size=32, class_weight=class_weight, validation_data=(X_test, y_test))
通常,它应该以1:健康植物和0:来预测这两个类别。 不健康的植物
答案 0 :(得分:0)
由于您的问题是二进制分类并且输出维数为2,因此应将激活更改为softmax。
model.add(Dense(2, activation='softmax'))
但是,如果要保持S形不变,只需将输出图层单位更改为1,这样您就可以输出输入是只有一个单位的两个类之一的可能性。
model.add(Dense(1, activation='sigmoid'))