Download test/test_interpretation.py from Asukaa02/tet: direct link, hf CLI and curl.
- Browser
- Download file 4.83 kB
-
https://huggingface.co/Asukaa02/tet/resolve/main/test/test_interpretation.py
- Command line
-
hf download hf://Asukaa02/tet/test/test_interpretation.py
-
curl -L -o test_interpretation.py https://huggingface.co/Asukaa02/tet/resolve/main/test/test_interpretation.py
4.83 kB
| import os | |
| from copy import deepcopy | |
| import numpy as np | |
| import pytest | |
| from gradio_client import media_data | |
| import gradio.interpretation | |
| from gradio import Interface | |
| from gradio.processing_utils import decode_base64_to_image | |
| os.environ["GRADIO_ANALYTICS_ENABLED"] = "False" | |
| def max_word_len(text: str) -> int: | |
| return max([len(word) for word in text.split(" ")]) | |
| class TestDefault: | |
| async def test_default_text(self): | |
| text_interface = Interface( | |
| max_word_len, "textbox", "label", interpretation="default" | |
| ) | |
| interpretation = (await text_interface.interpret(["quickest brown fox"]))[0][ | |
| "interpretation" | |
| ] | |
| assert interpretation[0][1] > 0 # Checks to see if the first word has >0 score. | |
| assert interpretation[-1][1] == 0 # Checks to see if the last word has 0 score. | |
| class TestShapley: | |
| async def test_shapley_text(self): | |
| text_interface = Interface( | |
| max_word_len, "textbox", "label", interpretation="shapley" | |
| ) | |
| interpretation = (await text_interface.interpret(["quickest brown fox"]))[0][ | |
| "interpretation" | |
| ][0] | |
| assert interpretation[1] > 0 # Checks to see if the first word has >0 score. | |
| class TestCustom: | |
| async def test_custom_text(self): | |
| def custom(text): | |
| return [(char, 1) for char in text] | |
| text_interface = Interface( | |
| max_word_len, "textbox", "label", interpretation=custom | |
| ) | |
| result = (await text_interface.interpret(["quickest brown fox"]))[0][ | |
| "interpretation" | |
| ][0] | |
| assert result[1] == 1 # Checks to see if the first letter has score of 1. | |
| async def test_custom_img(self): | |
| def max_pixel_value(img): | |
| return img.max() | |
| def custom(img): | |
| return img.tolist() | |
| img_interface = Interface( | |
| max_pixel_value, "image", "label", interpretation=custom | |
| ) | |
| result = (await img_interface.interpret([deepcopy(media_data.BASE64_IMAGE)]))[ | |
| 0 | |
| ]["interpretation"] | |
| expected_result = np.asarray( | |
| decode_base64_to_image(deepcopy(media_data.BASE64_IMAGE)).convert("RGB") | |
| ).tolist() | |
| assert result == expected_result | |
| class TestHelperMethods: | |
| def test_diff(self): | |
| diff = gradio.interpretation.diff(13, "2") | |
| assert diff == 11 | |
| diff = gradio.interpretation.diff("cat", "dog") | |
| assert diff == 1 | |
| diff = gradio.interpretation.diff("cat", "cat") | |
| assert diff == 0 | |
| def test_quantify_difference_with_number(self): | |
| iface = Interface(lambda text: text, ["textbox"], ["number"]) | |
| diff = gradio.interpretation.quantify_difference_in_label(iface, [4], [6]) | |
| assert diff == -2 | |
| def test_quantify_difference_with_label(self): | |
| iface = Interface(lambda text: len(text), ["textbox"], ["label"]) | |
| diff = gradio.interpretation.quantify_difference_in_label(iface, ["3"], ["10"]) | |
| assert diff == -7 | |
| diff = gradio.interpretation.quantify_difference_in_label(iface, ["0"], ["100"]) | |
| assert diff == -100 | |
| def test_quantify_difference_with_confidences(self): | |
| iface = Interface(lambda text: len(text), ["textbox"], ["label"]) | |
| output_1 = {"cat": 0.9, "dog": 0.1} | |
| output_2 = {"cat": 0.6, "dog": 0.4} | |
| output_3 = {"cat": 0.1, "dog": 0.6} | |
| diff = gradio.interpretation.quantify_difference_in_label( | |
| iface, [output_1], [output_2] | |
| ) | |
| assert pytest.approx(diff) == 0.3 | |
| diff = gradio.interpretation.quantify_difference_in_label( | |
| iface, [output_1], [output_3] | |
| ) | |
| assert pytest.approx(diff) == 0.8 | |
| def test_get_regression_value(self): | |
| iface = Interface(lambda text: text, ["textbox"], ["label"]) | |
| output_1 = {"cat": 0.9, "dog": 0.1} | |
| output_2 = {"cat": float("nan"), "dog": 0.4} | |
| output_3 = {"cat": 0.1, "dog": 0.6} | |
| diff = gradio.interpretation.get_regression_or_classification_value( | |
| iface, [output_1], [output_2] | |
| ) | |
| assert diff == 0 | |
| diff = gradio.interpretation.get_regression_or_classification_value( | |
| iface, [output_1], [output_3] | |
| ) | |
| assert pytest.approx(diff) == 0.1 | |
| def test_get_classification_value(self): | |
| iface = Interface(lambda text: text, ["textbox"], ["label"]) | |
| diff = gradio.interpretation.get_regression_or_classification_value( | |
| iface, ["cat"], ["test"] | |
| ) | |
| assert diff == 1 | |
| diff = gradio.interpretation.get_regression_or_classification_value( | |
| iface, ["test"], ["test"] | |
| ) | |
| assert diff == 0 | |