Я тренирую трехслойную нейронную сеть с кератами:
model = models.Sequential()
model.add(Conv2D(32, (3, 3), padding="same",
input_shape=input_shape, strides=2, kernel_regularizer=l2(reg)))
model.add(BatchNormalization(axis=channels))
model.add(Activation("relu"))
model.add(Conv2D(64, (3, 3), padding="same",
input_shape=input_shape, strides=2, kernel_regularizer=l2(reg)))
model.add(BatchNormalization(axis=channels))
model.add(Activation("relu"))
model.add(Conv2D(128, (3, 3), padding="same",
input_shape=input_shape, strides=2, kernel_regularizer=l2(reg)))
model.add(BatchNormalization(axis=channels))
model.add(Activation("relu"))
model.add(layers.Flatten())
model.add(layers.Dense(neurons, activation='relu', kernel_regularizer=l2(reg)))
model.add(Dropout(0.50))
model.add(Dense(2))
model.add(Activation("softmax"))
Мои данные имеют два класса, и я использую разреженную категориальную кросс-энтропию:
model.compile(loss='sparse_categorical_crossentropy', optimizer=opt, metrics=['accuracy'])
history = model.fit(x=X, y=y, batch_size=batch_size, epochs=epochs, validation_data=(X_val, y_val),
shuffle=True,
callbacks=callbacks,
verbose=1)
Мои данные имеютследующая форма:
X: (232, 100, 150, 3)
y: (232,)
Где X - изображения, а y - 1 или 0 из-зас использованием функции разреженных потерь
Потери очень высоки как для точности, так и для проверки, даже если точность обучения равна 1! Я получаю значения более 20 для потерь, которые, как я понимаю, не являются разумными.
Если я настрою модель на несколько эпох, выведу прогнозы для меток и истинных значений, и получу категорическийперекрестная энтропия от них, значение, которое я получаю, составляет <1, как и ожидалось, даже когда я делаю вычисление с помощью функции кераса (я переключаюсь на категориальную, потому что разрежение дает ошибку) </p>
21/21 [==============================] - 7s 313ms/step - loss: 44.1764 - acc: 1.0000 - val_loss: 44.7084 - val_acc: 0.7857
cce = tf.keras.losses.CategoricalCrossentropy()
pred = model.predict(x=X_val, batch_size=len(X_val))
loss = cce(true_categorical, pred)
Categorical loss 0.6077293753623962
Есть лиспособ точно узнать, как это рассчитывается и почему высокие значения? Размер партии 8.