/**
 * Copyright (c) 2020 CEA LIST
 * 
 * All rights reserved. This program and the accompanying materials are
 * made available under the terms of the Eclipse Public License v2.0 which
 * accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 * 
 * SPDX-License-Identifier: EPL-2.0
 * 
 */
package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations;


/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Leaky Re LU</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * </p>
 * <ul>
 *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.LeakyReLU#getNegative_slope <em>Negative slope</em>}</li>
 * </ul>
 *
 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getLeakyReLU()
 * @model
 * @generated
 */
public interface LeakyReLU extends Nonlinear_activations_weightedsumnonlinearity_1 {
	/**
	 * Returns the value of the '<em><b>Negative slope</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Negative slope</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Negative slope</em>' attribute.
	 * @see #setNegative_slope(double)
	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getLeakyReLU_Negative_slope()
	 * @model dataType="org.eclipse.uml2.types.Real" ordered="false"
	 * @generated
	 */
	double getNegative_slope();

	/**
	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.LeakyReLU#getNegative_slope <em>Negative slope</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Negative slope</em>' attribute.
	 * @see #getNegative_slope()
	 * @generated
	 */
	void setNegative_slope(double value);

} // LeakyReLU
