def METHOD_NAME(X, n_neurons, name, activation=None):
    with tf_compat.name_scope(name):
        n_inputs = int(X.get_shape()[1])
        stddev = 2 / np.sqrt(n_inputs)
        init = tf_compat.truncated_normal((n_inputs, n_neurons), stddev=stddev)
        W = tf_compat.Variable(init, name="kernel")
        b = tf_compat.Variable(tf_compat.zeros([n_neurons]), name="bias")
        Z = tf_compat.matmul(X, W) + b
        if activation is not None:
            return activation(Z)
        else:
            return Z