o
    2h|
                     @   sP   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 )    )ops)keras_export)Mergezkeras.layers.Subtractc                       s(   e Zd ZdZ fddZdd Z  ZS )Subtractab  Performs elementwise subtraction.

    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])
    of same shape.

    Examples:

    >>> input_shape = (2, 3, 4)
    >>> x1 = np.random.rand(*input_shape)
    >>> x2 = np.random.rand(*input_shape)
    >>> y = keras.layers.Subtract()([x1, x2])

    Usage in a Keras model:

    >>> 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)selfinput_shape	__class__ \/var/www/html/chatgem/venv/lib/python3.10/site-packages/keras/src/layers/merging/subtract.pyr   "   s   zSubtract.buildc                 C   s.   t |dkrtd| t|d |d S )Nr   zJA `Subtract` layer should be called on exactly 2 inputs. Received: inputs=r      )r	   r
   r   subtract)r   inputsr   r   r   _merge_function*   s   zSubtract._merge_function)__name__
__module____qualname____doc__r   r   __classcell__r   r   r   r   r      s    r   zkeras.layers.subtractc                 K   s   t di || S )a  Functional interface to the `keras.layers.Subtract` layer.

    Args:
        inputs: A list of input tensors of size 2, each tensor of
            the same shape.
        **kwargs: Standard layer keyword arguments.

    Returns:
        A tensor as the difference of the inputs. It has the same shape
        as the inputs.

    Examples:

    >>> input_shape = (2, 3, 4)
    >>> x1 = np.random.rand(*input_shape)
    >>> x2 = np.random.rand(*input_shape)
    >>> y = keras.layers.subtract([x1, x2])

    Usage in a Keras model:

    >>> 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   r   3   s   r   N)	keras.srcr   keras.src.api_exportr   #keras.src.layers.merging.base_merger   r   r   r   r   r   r   <module>   s    ,