# Path: deep_architect/helpers/keras_support.py
# def siso_keras_module(name, compile_fn, name_to_hyperp, scope=None):
#     return KerasModule(name, compile_fn, name_to_hyperp, ['in'], ['out'],
#                        scope).get_io()
# 
# Path: deep_architect/hyperparameters.py
# class Discrete(co.Hyperparameter):
#     """List valued hyperparameter.
# 
#     This type of hyperparameter has a finite number of possible values.
# 
#     Args:
#         vs (list[object]): List of possible parameter values that the
#             hyperparameter can take.
#         scope (deep_architect.core.Scope, optional): The scope in which to register the
#             hyperparameter in.
#         name (str, optional): Name from which the name of the hyperparameter
#             in the scope is derived.
#     """
# 
#     def __init__(self, vs, scope=None, name=None):
#         assert len(vs) > 0
#         co.Hyperparameter.__init__(self, scope, name)
#         self.vs = vs
# 
#     def _check_value(self, val):
#         """Checks if the chosen values is in the list of valid values.
# 
#         Asserts ``False`` if the value is not in the list.
#         """
#         if val not in self.vs:
#             print(self.get_name())
#             print(self.vs)
#             print(val)
#         assert val in self.vs


from keras import layers
from deep_architect.helpers.keras_support import siso_keras_module
from deep_architect.hyperparameters import Discrete as D
            return {'out': layer(di['in'])}

        return fn

    return siso_keras_module('Dropout', compile_fn, {'keep_prob': h_keep_prob})


def batch_normalization():

    def compile_fn(di, dh):
        layer = layers.BatchNormalization()

        def fn(di):
            return {'out': layer(di['in'])}

        return fn

    return siso_keras_module('BatchNormalization', compile_fn, {})


def activation(h_activation):

    def compile_fn(di, dh):
        layer = layers.Activation(dh['activation'])

        def fn(di):
            return {'out': layer(di['in'])}

        return fn


# Path: deep_architect/helpers/keras_support.py
# def siso_keras_module(name, compile_fn, name_to_hyperp, scope=None):
#     return KerasModule(name, compile_fn, name_to_hyperp, ['in'], ['out'],
#                        scope).get_io()
# 
# Path: deep_architect/hyperparameters.py
# class Discrete(co.Hyperparameter):
#     """List valued hyperparameter.
# 
#     This type of hyperparameter has a finite number of possible values.
# 
#     Args:
#         vs (list[object]): List of possible parameter values that the
#             hyperparameter can take.
#         scope (deep_architect.core.Scope, optional): The scope in which to register the
#             hyperparameter in.
#         name (str, optional): Name from which the name of the hyperparameter
#             in the scope is derived.
#     """
# 
#     def __init__(self, vs, scope=None, name=None):
#         assert len(vs) > 0
#         co.Hyperparameter.__init__(self, scope, name)
#         self.vs = vs
# 
#     def _check_value(self, val):
#         """Checks if the chosen values is in the list of valid values.
# 
#         Asserts ``False`` if the value is not in the list.
#         """
#         if val not in self.vs:
#             print(self.get_name())
#             print(self.vs)
#             print(val)
#         assert val in self.vs


# Path: deep_architect/contrib/deep_learning_backend/keras_ops.py
from keras import layers
from deep_architect.helpers.keras_support import siso_keras_module
from deep_architect.hyperparameters import Discrete as D

            return {'out': layer(di['in'])}

        return fn

    return siso_keras_module('Dropout', compile_fn, {'keep_prob': h_keep_prob})


def batch_normalization():

    def compile_fn(di, dh):
        layer = layers.BatchNormalization()

        def fn(di):
            return {'out': layer(di['in'])}

        return fn

    return siso_keras_module('BatchNormalization', compile_fn, {})


def activation(h_activation):

    def compile_fn(di, dh):
        layer = layers.Activation(dh['activation'])

        def fn(di):
            return {'out': layer(di['in'])}

        return fn


    return siso_keras_module('Activation', compile_fn,