Files
nvidia--tensorrt/tools/tensorflow-quantization/tests/utils_test.py
T
wehub-resource-sync c8a779b1bb
Docker Image CI / build-ubuntu2004 (push) Waiting to run
chore: import upstream snapshot with attribution
2026-07-13 13:36:55 +08:00

102 lines
3.0 KiB
Python

#
# SPDX-FileCopyrightText: Copyright (c) 1993-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
import os
import sys
import tensorflow_quantization.utils as utils
import tensorflow as tf
from tensorflow_quantization import quantize_model
from tensorflow_quantization.utils import (
CreateAssetsFolders,
convert_saved_model_to_onnx,
)
from network_pool import sam_32_32
import pytest
test_assets = CreateAssetsFolders("test_utils")
def test_keras_traveller():
kmt = utils.KerasModelTraveller()
model = sam_32_32()
layer_names = kmt.get_layer_names(keras_model=model)
expected_layer_names = [
"input_1",
"conv2d",
"re_lu",
"conv2d_1",
"re_lu_1",
"conv2d_2",
"re_lu_2",
"conv2d_3",
"add",
"re_lu_3",
"conv2d_4",
"re_lu_4",
"conv2d_5",
"add_1",
"re_lu_5",
"conv2d_6",
"re_lu_6",
"conv2d_7",
"conv2d_8",
"add_2",
"re_lu_7",
"max_pooling2d",
"flatten",
"dense",
"re_lu_8",
"dense_1",
]
assert layer_names == expected_layer_names, "Keras model traveller failed."
tf.keras.backend.clear_session()
def test_convert_to_onnx():
test_assets.add_folder("test_convert_to_onnx")
model = sam_32_32()
q_model = quantize_model(model)
# Create experiment specific directory
tf.keras.models.save_model(
q_model, test_assets.test_convert_to_onnx.int8_saved_model
)
convert_saved_model_to_onnx(
saved_model_dir=test_assets.test_convert_to_onnx.int8_saved_model,
onnx_model_path=test_assets.test_convert_to_onnx.int8_onnx_model,
)
tf.keras.backend.clear_session()
def test_find_my_predecessors():
resnet50 = tf.keras.applications.resnet.ResNet50(weights=None)
r = utils.find_my_predecessors(resnet50, "conv2_block1_add")
assert r[0]["class"] == "BatchNormalization"
assert r[0]["name"] == "conv2_block1_0_bn"
assert r[1]["class"] == "BatchNormalization"
assert r[1]["name"] == "conv2_block1_3_bn"
def test_find_my_successors():
resnet50 = tf.keras.applications.resnet.ResNet50(weights=None)
r = utils.find_my_successors(resnet50, "pool1_pool")
assert r[0]["class"] == "Conv2D"
assert r[0]["name"] == "conv2_block1_1_conv"
assert r[1]["class"] == "Conv2D"
assert r[1]["name"] == "conv2_block1_0_conv"