我正在尝试使用 TensorFlow 和 Keras 构建和训练一个简单的神经网络,但是我遇到了一个问题,即我在 model.compile 中指定的指标无法被正确识别。具体来说,
我正在尝试使用 TensorFlow 和 Keras 构建和训练一个简单的神经网络,但是我遇到了一个问题,即我在 model.compile 中指定的指标无法正确识别。
具体来说,在编译和训练模型后,当我打印指标和指标名称时,我看到的是 ['loss', 'compile_metrics'],而不是预期的指标 (['loss', 'accuracy', 'precision', 'recall'])。
这是我正在使用的代码
import tensorflow as tf
import numpy as np
from tensorflow import keras
# Create a simple model
def create_model():
model = tf.keras.Sequential([
tf.keras.layers.Dense(16, activation='relu', input_shape=(3,)),
tf.keras.layers.Dense(1, activation='sigmoid')
])
return model
# Test function to demonstrate `metrics` and `metrics_names`
def test_metrics_properties():
# Create and compile the model
model = create_model()
model.compile(optimizer='adam',
loss=keras.losses.BinaryCrossentropy(),
metrics=[
tf.keras.metrics.BinaryAccuracy(name='accuracy'),
tf.keras.metrics.Precision(name='precision'),
tf.keras.metrics.Recall(name='recall')
])
# Check `metrics` and `metrics_names` before training
print("Before training:")
print("Metrics:", [m.name for m in model.metrics])
print("Metrics names:", model.metrics_names)
# Generate dummy data
x = np.random.random((100, 3))
y = np.random.randint(0, 2, size=(100, 1))
# Train the model
model.fit(x, y, epochs=5, verbose=0)
# Check `metrics` and `metrics_names` after training
print("\nAfter training:")
print("Metrics:", [m.name for m in model.metrics])
print("Metrics names:", model.metrics_names)
if __name__ == "__main__":
test_metrics_properties()
这是我看到的输出:
/path/to/your/env/lib/python3.12/site-packages/keras/src/layers/core/dense.py:87:UserWarning:不要将 input_shape
/ input_dim
参数传递给层。使用顺序模型时,最好使用对象 Input(shape)
作为模型中的第一层。super()。 init (activity_regularizer=activity_regularizer, **kwargs)训练前:指标:['loss', 'compile_metrics']指标名称:['loss', 'compile_metrics']
训练后:指标:['loss','compile_metrics']指标名称:['loss','compile_metrics']