Open
Description
System information.
- Have I written custom code (as opposed to using a stock example script provided in Keras): not really
- OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Ubuntu 22.04
- TensorFlow installed from (source or binary):
pip install tensorflow
- TensorFlow version (use command below):
2.13.0
- Python version:
3.11.5
- Bazel version (if compiling from source): -
- GPU model and memory: does not matter
- Exact command to reproduce: run script below
Describe the problem.
If I write Accurarcy()
in the metrics
list, it does not work. But the String accuracy
does work. According to the docs, bith sould work. See example code below.
Describe the current behavior.
469/469 [==============================] - 3s 6ms/step - loss: 0.2548 - accuracy: 0.0000e+00
Describe the expected behavior.
469/469 [==============================] - 3s 6ms/step - loss: 0.2540 - accuracy: 0.9260
- Do you want to contribute a PR? (yes/no): no
- If yes, please read this page for instructions
- Briefly describe your candidate solution(if contributing): -
Standalone code to reproduce the issue.
import numpy as np
from keras import Sequential
from keras.datasets import mnist
from keras.src import activations
from keras.src.layers import Dense
from keras.src.losses import CategoricalCrossentropy
from keras.src.metrics import Accuracy
from keras.src.optimizers import RMSprop
from keras.src.utils import to_categorical
def preprocess_images(images):
s = images.shape
return images.reshape((s[0], s[1] * s[2])).astype(dtype=np.float32) / 255
if __name__ == '__main__':
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
processed_train_images = preprocess_images(train_images)
processed_test_images = preprocess_images(test_images)
processed_train_labels = to_categorical(y=train_labels)
processed_test_labels = to_categorical(y=test_labels)
network = Sequential()
network.add(layer=Dense(units=512, activation=activations.relu, input_shape=(28 * 28, )))
network.add(layer=Dense(units=10, activation=activations.softmax))
network.compile(optimizer=RMSprop(), loss=CategoricalCrossentropy(), metrics=[Accuracy()]) # this does not work
# network.compile(optimizer=RMSprop(), loss=CategoricalCrossentropy(), metrics=['accuracy']) # this works
network.fit(x=processed_train_images, y=processed_train_labels, epochs=1, batch_size=128)
Source code / logs.
Nothing.