我有一个包含 160 个类别的大约 160k 图像的数据集,我正在尝试使用 CNN 对它们进行分类。对 20 个 epoch 的 120k 图像进行训练,我从 loss ~ 4.9 和 val_loss ~ 4.6 开始,在 20 个 epoch 后提高到大约 3.3 和 3.2。我真的试图阅读 Keras 的文档并理解这意味着什么,但我不能,所以我想问是否有人会在我的模型的上下文中向我解释这对我的模型意味着什么。我的意思是损失分数代表什么?它对模型说了什么?
num_classes = 154
batch_size = 64
input_shape = (50,50,3)
epochs = 20
X, y = load_data()
# input image dimensions
img_rows, img_cols = 50, 50
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train /= 255
x_test /= 255
# convert class vectors to binary class matrices
y_train = keras.utils.to_categorical(y_train, num_classes)
y_test = keras.utils.to_categorical(y_test, num_classes)
model = Sequential()
model.add(Conv2D(64, kernel_size=(5, 5),
activation='relu',
padding = 'same',
input_shape=input_shape))
model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(3, 3)))
model.add(Dropout(0.20))
model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes, activation='softmax'))
model.compile(loss=keras.losses.categorical_crossentropy,
optimizer=keras.optimizers.Adadelta(),
metrics=['accuracy'])