Spaces:
Sleeping
Sleeping
| from unittest.mock import Mock | |
| import numpy as np | |
| import tensorflow as tf | |
| from deep_learning.models.segmentation import SegmentationModelBuilder | |
| def test_segmentation_model_builder_builds_pixel_classifier(): | |
| """验证分割模型保持输入分辨率,并为每个像素输出类别概率。""" | |
| artifact = SegmentationModelBuilder( | |
| image_size=(32, 32), | |
| num_classes=3, | |
| model_filters=(8,) | |
| ).build_training_artifact() | |
| model = artifact.model | |
| images = tf.zeros((2, 32, 32, 3), dtype=tf.float32) | |
| outputs = model(images) | |
| assert outputs.shape == (2, 32, 32, 3) | |
| np.testing.assert_allclose( | |
| tf.reduce_sum(outputs, axis=-1).numpy(), | |
| np.ones((2, 32, 32)), | |
| atol=1e-5 | |
| ) | |
| def test_segmentation_model_builder_compiles_training_model(): | |
| """验证分割模型构建器会使用稀疏多分类和前景 IoU 编译模型。""" | |
| model = Mock() | |
| builder = SegmentationModelBuilder( | |
| image_size=(32, 32), | |
| num_classes=3, | |
| model_filters=(8,) | |
| ) | |
| builder.compile_training_model(model) | |
| model.compile.assert_called_once() | |
| _, kwargs = model.compile.call_args | |
| assert kwargs["optimizer"] == "adam" | |
| assert kwargs["loss"] == "sparse_categorical_crossentropy" | |
| assert kwargs["metrics"][0].name == "foreground_iou" | |