# What does this PR do?

I have replaced the assert statements with appropriate exceptions in the directory `src/transformers/models/` with all models beginning with `a` and `b` letters.

Also, I have corrected error handling at places where except statements were handling AssertionError, even thought it was never to be raised. Here is an example:

```
try:
    if pointer.shape != array.shape:
        raise ValueError(f"Pointer shape {pointer.shape} and array shape {array.shape} mismatched")
except AssertionError as e:    # Incorrect line
    e.args += (pointer.shape, array.shape)
    raise
```

I changed the above to:

```
try:
    if pointer.shape != array.shape:
        raise ValueError(f"Pointer shape {pointer.shape} and array shape {array.shape} mismatched")
except ValueError as e:    # Corrected the line
    e.args += (pointer.shape, array.shape)
    raise
```

Fixes #12789 


## Before submitting
- [ ] This PR fixes a typo or improves the docs (you can dismiss the other checks if that's the case).
- [x] Did you read the [contributor guideline](https://github.com/huggingface/transformers/blob/main/CONTRIBUTING.md#start-contributing-pull-requests),
      Pull Request section?
- [x] Was this discussed/approved via a Github issue or the [forum](https://discuss.huggingface.co/)? Please add a link
      to it if that's the case.
- [ ] Did you make sure to update the documentation with your changes? Here are the
      [documentation guidelines](https://github.com/huggingface/transformers/tree/main/docs), and
      [here are tips on formatting docstrings](https://github.com/huggingface/transformers/tree/main/docs#writing-source-documentation).
- [ ] Did you write any new necessary tests?


## Who can review?

@ArthurZucker @sgugger 

Replace assert statements with exceptions. # What does this PR do?

I have replaced the assert statements with appropriate exceptions in the directory `src/transformers/models/` with all models beginning with `a` and `b` letters.

Also, I have corrected error handling at places where except statements were handling AssertionError, even thought it was never to be raised. Here is an example:

```
try:
    if pointer.shape != array.shape:
        raise ValueError(f"Pointer shape {pointer.shape} and array shape {array.shape} mismatched")
except AssertionError as e:    # Incorrect line
    e.args += (pointer.shape, array.shape)
    raise
```

I changed the above to:

```
try:
    if pointer.shape != array.shape:
        raise ValueError(f"Pointer shape {pointer.shape} and array shape {array.shape} mismatched")
except ValueError as e:    # Corrected the line
    e.args += (pointer.shape, array.shape)
    raise
```

Fixes #12789 


## Before submitting
- [ ] This PR fixes a typo or improves the docs (you can dismiss the other checks if that's the case).
- [x] Did you read the [contributor guideline](https://github.com/huggingface/transformers/blob/main/CONTRIBUTING.md#start-contributing-pull-requests),
      Pull Request section?
- [x] Was this discussed/approved via a Github issue or the [forum](https://discuss.huggingface.co/)? Please add a link
      to it if that's the case.
- [ ] Did you make sure to update the documentation with your changes? Here are the
      [documentation guidelines](https://github.com/huggingface/transformers/tree/main/docs), and
      [here are tips on formatting docstrings](https://github.com/huggingface/transformers/tree/main/docs#writing-source-documentation).
- [ ] Did you write any new necessary tests?


## Who can review?

@ArthurZucker @sgugger 

# Copyright 2020 The HuggingFace Team. All rights reserved.
#
# 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 unittest

import numpy as np

from transformers import is_tf_available
from transformers.testing_utils import require_tf


if is_tf_available():
    import tensorflow as tf

    from transformers.activations_tf import get_tf_activation


@require_tf
class TestTFActivations(unittest.TestCase):
    def test_gelu_10(self):
        x = tf.constant([-100, -1.0, -0.1, 0, 0.1, 1.0, 100.0])
        gelu = get_tf_activation("gelu")
        gelu10 = get_tf_activation("gelu_10")

        y_gelu = gelu(x)
        y_gelu_10 = gelu10(x)

        clipped_mask = tf.where(y_gelu_10 < 10.0, 1.0, 0.0)

        self.assertEqual(tf.math.reduce_max(y_gelu_10).numpy().item(), 10.0)
        self.assertTrue(np.allclose(y_gelu * clipped_mask, y_gelu_10 * clipped_mask))

    def test_get_activation(self):
        get_tf_activation("gelu")
        get_tf_activation("gelu_10")
        get_tf_activation("gelu_fast")
        get_tf_activation("gelu_new")
        get_tf_activation("glu")
        get_tf_activation("mish")
        get_tf_activation("quick_gelu")
        get_tf_activation("relu")
        get_tf_activation("sigmoid")
        get_tf_activation("silu")
        get_tf_activation("swish")
        get_tf_activation("tanh")
        with self.assertRaises(KeyError):
            get_tf_activation("bogus")
        with self.assertRaises(KeyError):
            get_tf_activation(None)

# Copyright 2020 The HuggingFace Team. All rights reserved.
#
# 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 unittest

import numpy as np

from transformers import is_tf_available
from transformers.testing_utils import require_tf


if is_tf_available():
    import tensorflow as tf

    from transformers.activations_tf import get_tf_activation


@require_tf
class TestTFActivations(unittest.TestCase):
    def test_gelu_10(self):
        x = tf.constant([-100, -1.0, -0.1, 0, 0.1, 1.0, 100.0])
        gelu = get_tf_activation("gelu")
        gelu10 = get_tf_activation("gelu_10")

        y_gelu = gelu(x)
        y_gelu_10 = gelu10(x)

        clipped_mask = tf.where(y_gelu_10 < 10.0, 1.0, 0.0)

        self.assertEqual(tf.math.reduce_max(y_gelu_10).numpy().item(), 10.0)
        self.assertTrue(np.allclose(y_gelu * clipped_mask, y_gelu_10 * clipped_mask))

    def test_get_activation(self):
        get_tf_activation("gelu")
        get_tf_activation("gelu_10")
        get_tf_activation("gelu_fast")
        get_tf_activation("gelu_new")
        get_tf_activation("glu")
        get_tf_activation("mish")
        get_tf_activation("quick_gelu")
        get_tf_activation("relu")
        get_tf_activation("sigmoid")
        get_tf_activation("silu")
        get_tf_activation("swish")
        get_tf_activation("tanh")
        with self.assertRaises(KeyError):
            get_tf_activation("bogus")
        with self.assertRaises(KeyError):
            get_tf_activation(None)
