diff --git a/src/transformers/pipelines/question_answering.py b/src/transformers/pipelines/question_answering.py index ec864e0a20..44cb512f80 100644 --- a/src/transformers/pipelines/question_answering.py +++ b/src/transformers/pipelines/question_answering.py @@ -412,7 +412,7 @@ class QuestionAnsweringPipeline(Pipeline): end_ = np.exp(end_ - np.log(np.sum(np.exp(end_), axis=-1, keepdims=True))) if handle_impossible_answer: - min_null_score = min(min_null_score, (start_[0] * end_[0]).item()) + min_null_score = min(min_null_score, (start_[0, 0] * end_[0, 0]).item()) # Mask CLS start_[0, 0] = end_[0, 0] = 0.0 diff --git a/tests/test_pipelines_question_answering.py b/tests/test_pipelines_question_answering.py index ca85c89ac9..c037238812 100644 --- a/tests/test_pipelines_question_answering.py +++ b/tests/test_pipelines_question_answering.py @@ -50,6 +50,12 @@ class QAPipelineTests(unittest.TestCase, metaclass=PipelineTestCaseMeta): question="Where was HuggingFace founded ?", context="HuggingFace was founded in Paris." ) self.assertEqual(outputs, {"answer": ANY(str), "start": ANY(int), "end": ANY(int), "score": ANY(float)}) + outputs = question_answerer( + question="Where was HuggingFace founded ?", + context="HuggingFace was founded in Paris.", + handle_impossible_answer=True, + ) + self.assertEqual(outputs, {"answer": ANY(str), "start": ANY(int), "end": ANY(int), "score": ANY(float)}) outputs = question_answerer( question=["In what field is HuggingFace working ?", "In what field is HuggingFace working ?"],