# Path: minos/model/parameter.py
# def int_param(lo=0, hi=100, default=None, values=None, optional=False):
#     return Parameter(
#         int,
#         lo=lo,
#         hi=hi,
#         values=values,
#         default=default,
#         optional=optional)
# 
# def string_param(values, default=None, optional=False, mutable=True):
#     return Parameter(
#         str,
#         values=values,
#         default=default,
#         optional=optional,
#         mutable=mutable)
# 
# def boolean_param(default=None, optional=False):
#     return Parameter(
#         bool,
#         (True, False),
#         default=default,
#         optional=optional)
# 
# def float_param(lo=0., hi=1., default=None, values=None, optional=False):
#     return Parameter(
#         float,
#         lo=lo,
#         hi=hi,
#         values=values,
#         default=default,
#         optional=optional)


from minos.model.parameter import int_param, string_param, boolean_param,\
    float_param
        'layer': {
            'type': string_param(['Dense', 'Dropout', 'BatchNormalization']),
            'stackable': string_param([])}
    },
    'layers': {
        'Dense': {
            'output_dim': int_param(1, 1000, default=100),
            'init': string_param(
                ['uniform',
                 'lecun_uniform',
                 'normal',
                 # 'identity',
                 # 'orthogonal',
                 'zero',
                 'one',
                 'glorot_normal',
                 'glorot_uniform',
                 'he_normal',
                 'he_uniform'],
                default='glorot_uniform'),
            'activation': string_param(
                ['softmax',
                 'softplus',
                 'softsign',
                 'relu',
                 'tanh',
                 'sigmoid',
                 'hard_sigmoid',
                 'linear'],
                default='relu'),

# Path: minos/model/parameter.py
# def int_param(lo=0, hi=100, default=None, values=None, optional=False):
#     return Parameter(
#         int,
#         lo=lo,
#         hi=hi,
#         values=values,
#         default=default,
#         optional=optional)
# 
# def string_param(values, default=None, optional=False, mutable=True):
#     return Parameter(
#         str,
#         values=values,
#         default=default,
#         optional=optional,
#         mutable=mutable)
# 
# def boolean_param(default=None, optional=False):
#     return Parameter(
#         bool,
#         (True, False),
#         default=default,
#         optional=optional)
# 
# def float_param(lo=0., hi=1., default=None, values=None, optional=False):
#     return Parameter(
#         float,
#         lo=lo,
#         hi=hi,
#         values=values,
#         default=default,
#         optional=optional)


# Path: minos/model/parameters.py
from minos.model.parameter import int_param, string_param, boolean_param,\
    float_param

        'layer': {
            'type': string_param(['Dense', 'Dropout', 'BatchNormalization']),
            'stackable': string_param([])}
    },
    'layers': {
        'Dense': {
            'output_dim': int_param(1, 1000, default=100),
            'init': string_param(
                ['uniform',
                 'lecun_uniform',
                 'normal',
                 # 'identity',
                 # 'orthogonal',
                 'zero',
                 'one',
                 'glorot_normal',
                 'glorot_uniform',
                 'he_normal',
                 'he_uniform'],
                default='glorot_uniform'),
            'activation': string_param(
                ['softmax',
                 'softplus',
                 'softsign',
                 'relu',
                 'tanh',
                 'sigmoid',
                 'hard_sigmoid',
                 'linear'],
                default='relu'),

            'bias': boolean_param(default=True),