TensorFlow 2.4:损失:0.0000e+00,但精度仅为0.2682,这有意义吗



我正在努力理解损失(sparse_categorical_crossentry(是如何为零的,但准确性<lt;1.此外;经过训练的";该模型不能提供良好的结果。尽管模型没有经过很好的训练,但损失怎么会为零呢:

Epoch 1/3
182/182 [==============================] - 496s 3s/step - loss: 0.0000e+00 - accuracy: 0.2682 - val_loss: 0.0000e+00 - val_accuracy: 0.2729
Epoch 2/3
147/182 [=======================>......] - ETA: 1:29 - loss: 0.0000e+00 - accuracy: 0.2645

型号:

number_of_categories = len(class_names)
loss = 'sparse_categorical_crossentropy'    
metrics = ['accuracy']
model = tf.keras.Sequential()
model.add(tf.keras.layers.Conv2D(30, (5, 5), activation=activation, input_shape=(pheight, pwidth, 3)))
model.add(tf.keras.layers.MaxPooling2D((5, 5)))
model.add(tf.keras.layers.Conv2D(40, (5, 5), activation=activation))
model.add(tf.keras.layers.MaxPooling2D((5, 5)))
model.add(tf.keras.layers.Conv2D(50, (5, 5), activation=activation))
model.add(tf.keras.layers.MaxPooling2D((5, 5)))
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(64, activation=activation))
model.add(tf.keras.layers.Dense(number_of_categories, activation='softmax'))
model.compile(optimizer=optimizer, loss=loss, metrics=metrics)

任何关于这里出了什么问题的想法都是非常受欢迎的。。。

这就是模型拟合:

history = model.fit(x=training_generator,
validation_data=test_generator,
batch_size=batch_size,
use_multiprocessing=False,
workers=1,
epochs=epochs,
steps_per_epoch=len(training_generator),
max_queue_size=1)

问题解决了:我意外地使用了像0.01这样的小浮点数作为基本真值(y_true(。这确实造成了错误的行为。通过将其放大并四舍五入为1,它现在可以工作了。

最新更新