0

我正在使用 keras 进行分类模型。我正在使用以下方法编译模型:

        model.compile(loss='categorical_crossentropy', metrics=["accuracy"], weighted_metrics=["accuracy"], optimizer=self.optimizer(lr))

我正在使用以下方法进行培训:

        self.model.fit(x=self.X_train, y=self.y_train,batch_size=batch_size,epochs=epochs,callbacks=callbacks,validation_split=0.2,class_weight =self.train_class_weight)

self.train_class_weight的是:

{0: 0.834945054945055, 1: 0.8824622531939605, 2: 1.1671274961597542, 3: 1.4782101167315176, 4: 0.8804171494785632}

并使用以下方法提取:

    index = np.arange(self.y_train.shape[0])  
    np.random.shuffle(index)
    self.X_train = self.X_train[index,:,:]
    self.y_train = np.squeeze(self.y_train[index])

所以我可以看到数据集确实是不平衡的。不过,我在培训中得到以下信息:

Epoch 1/70
152/152 [==============================] - 78s 491ms/step - loss: 1.2700 - accuracy: 0.4443 - weighted_accuracy: 0.4493 - val_loss: 0.6545 - val_accuracy: 0.7118 - val_weighted_accuracy: 0.7118

Epoch 00001: val_loss improved from inf to 0.65448, saving model to RNN_AHNPS-c-LSTM-layers-2-2-units-128-128-dropout-0.3_0.3_0.3_0.3.h5
Epoch 2/70
152/152 [==============================] - 75s 491ms/step - loss: 0.6324 - accuracy: 0.7278 - weighted_accuracy: 0.7282 - val_loss: 0.6112 - val_accuracy: 0.7829 - val_weighted_accuracy: 0.7829

Epoch 00002: val_loss improved from 0.65448 to 0.61119, saving model to RNN_AHNPS-c-LSTM-layers-2-2-units-128-128-dropout-0.3_0.3_0.3_0.3.h5
Epoch 3/70
152/152 [==============================] - 75s 491ms/step - loss: 0.5436 - accuracy: 0.7780 - weighted_accuracy: 0.7829 - val_loss: 0.5482 - val_accuracy: 0.7776 - val_weighted_accuracy: 0.7776

Epoch 00003: val_loss improved from 0.61119 to 0.54822, saving model to RNN_AHNPS-c-LSTM-layers-2-2-units-128-128-dropout-0.3_0.3_0.3_0.3.h5
Epoch 4/70
152/152 [==============================] - 75s 491ms/step - loss: 0.4937 - accuracy: 0.7993 - weighted_accuracy: 0.8014 - val_loss: 0.5607 - val_accuracy: 0.7579 - val_weighted_accuracy: 0.7579

并在测试集上评估模型:

准确度 0.8550512194633484,加权准确度 0.8550512194633484。

model.evaluate()这些结果是根据编译的矩阵从模型中提取的。

为什么验证和测试的加权和未加权准确度是相同的?我评价错了吗?有没有更好的方法来衡量加权准确度?否则,我该如何解决这个问题?

4

0 回答 0