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

TensorFlow 2.4:损耗:0.0000e+;00,但精度仅为0.2682,这有意义吗?,tensorflow,loss-function,Tensorflow,Loss Function,我很难理解损失(稀疏的、分类的、交叉熵)是如何为零的,但准确度问题解决了:我不小心用了小的浮点数,比如0.01,而不是1作为基本真值(y\u真)。这确实导致了错误的行为。通过将其放大并四舍五入到1,它现在可以工作了。请显示model.fit的代码 Epoch 1/3 182/182 [==============================] - 496s 3s/step - loss: 0.0000e+00 - accuracy: 0.2682 - val_loss: 0.0000e+00

我很难理解损失(稀疏的、分类的、交叉熵)是如何为零的,但准确度问题解决了:我不小心用了小的浮点数,比如0.01,而不是1作为基本真值(y\u真)。这确实导致了错误的行为。通过将其放大并四舍五入到1,它现在可以工作了。

请显示model.fit的代码
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)