o
    7?e)                     @   sT   d Z ddlmZ ddlmZ ddlmZ edG dd deZedd	d
 ZdS )z Layer that subtracts two inputs.    )_Merge)tf_utils)keras_exportzkeras.layers.Subtractc                       s.   e Zd ZdZej fddZdd Z  ZS )Subtracta  Layer that subtracts two inputs.

    It takes as input a list of tensors of size 2, both of the same shape, and
    returns a single tensor, (inputs[0] - inputs[1]), also of the same shape.

    Examples:

    ```python
        import keras.src as keras

        input1 = keras.layers.Input(shape=(16,))
        x1 = keras.layers.Dense(8, activation='relu')(input1)
        input2 = keras.layers.Input(shape=(32,))
        x2 = keras.layers.Dense(8, activation='relu')(input2)
        # Equivalent to subtracted = keras.layers.subtract([x1, x2])
        subtracted = keras.layers.Subtract()([x1, x2])

        out = keras.layers.Dense(4)(subtracted)
        model = keras.models.Model(inputs=[input1, input2], outputs=out)
    ```
    c                    s*   t  | t|dkrtd| d S )N   zOA `Subtract` layer should be called on exactly 2 inputs. Received: input_shape=)superbuildlen
ValueError)selfZinput_shape	__class__ b/home/www/facesmatcher.com/pyenv/lib/python3.10/site-packages/keras/src/layers/merging/subtract.pyr   1   s   zSubtract.buildc                 C   s*   t |dkrtd| |d |d  S )Nr   zJA `Subtract` layer should be called on exactly 2 inputs. Received: inputs=r      )r	   r
   )r   inputsr   r   r   _merge_function:   s   zSubtract._merge_function)	__name__
__module____qualname____doc__r   Zshape_type_conversionr   r   __classcell__r   r   r   r   r      s
    r   zkeras.layers.subtractc                 K   s   t di || S )a  Functional interface to the `Subtract` layer.

    Args:
        inputs: A list of input tensors (exactly 2).
        **kwargs: Standard layer keyword arguments.

    Returns:
        A tensor, the difference of the inputs.

    Examples:

    ```python
        import keras.src as keras

        input1 = keras.layers.Input(shape=(16,))
        x1 = keras.layers.Dense(8, activation='relu')(input1)
        input2 = keras.layers.Input(shape=(32,))
        x2 = keras.layers.Dense(8, activation='relu')(input2)
        subtracted = keras.layers.subtract([x1, x2])

        out = keras.layers.Dense(4)(subtracted)
        model = keras.models.Model(inputs=[input1, input2], outputs=out)
    ```
    Nr   )r   )r   kwargsr   r   r   subtractC   s   r   N)	r   Z#keras.src.layers.merging.base_merger   Zkeras.src.utilsr   Z tensorflow.python.util.tf_exportr   r   r   r   r   r   r   <module>   s   )