def train(nn_name='12-net', k=12):
    """
    Fucntion for traning 12-net with testing on part of data
    using cross validation
    """
    suff = str(k)
    if nn_name.find('calib') > 0:
        X_data_name = 'train_data_icalib_' + suff + '.npy'
        y_data_name = 'labels_icalib_' + suff + '.npy'
    else:
        X_data_name = 'train_data_' + suff + '.npy'
        y_data_name = 'labels_' + suff + '.npy'

    rates12 = sp.hstack((0.05 * sp.ones(25, dtype=sp.float32),
                         0.005 * sp.ones(15, dtype=sp.float32),
                         0.0005 * sp.ones(10, dtype=sp.float32)))
    rates24 = sp.hstack((0.01 * sp.ones(25, dtype=sp.float32),
                         0.0001 * sp.ones(15, dtype=sp.float32)))
    rates48 = sp.hstack([
        0.05 * sp.ones(15, dtype=sp.float32),
        0.005 * sp.ones(10, dtype=sp.float32)
    ])
    if nn_name == '24-net':
        nn = Cnnl(
            nn_name=nn_name,
            l_rates=rates24,
            subnet=Cnnl(nn_name='12-net',
                        l_rates=rates12).load_model('12-net_lasagne_.pickle'))
    elif nn_name == '48-net':
        nn = Cnnl(nn_name=nn_name,
                  l_rates=rates48,
                  subnet=Cnnl(
                      nn_name='24-net',
                      l_rates=rates24,
                      subnet=Cnnl(
                          nn_name='12-net',
                          l_rates=rates12).load_model('12-net_lasagne_.pickle')
                  ).load_model('24-net_lasagne_.pickle'))
    else:
        nn = Cnnl(nn_name=nn_name, l_rates=rates12)
    if not os.path.exists(nn_name + '_lasagne_.pickle'):
        if nn_name.find('calib') > 0:
            ds.get_train_wider_calib_data(k=k)
        else:
            ds.get_train_data(k=k)
    X, y = sp.load(X_data_name), sp.load(y_data_name)

    X_train, y_train = X, y

    if not os.path.exists(nn_name + '_lasagne_.pickle'):
        if nn_name == '24-net':
            X_sub_train12 = sp.load('train_data_12.npy')
            nn.fit(X=X_train, y=y_train, X12=X_sub_train12)
        elif nn_name == '48-net':
            X_sub_train12 = sp.load('train_data_12.npy')
            X_sub_train24 = sp.load('train_data_24.npy')
            nn.fit(X=X_train, y=y_train, X12=X_sub_train12, X24=X_sub_train24)
        else:
            nn.fit(X=X_train, y=y_train)
        nn.save_model(nn_name + '_lasagne_.pickle')
def train(nn_name = '12-net',k = 12):
    """
    Fucntion for traning 12-net with testing on part of data
    using cross validation
    """
    suff = str(k)
    if nn_name.find('calib') > 0:
        X_data_name = 'train_data_icalib_'+ suff +  '.npy'
        y_data_name = 'labels_icalib_'+ suff + '.npy'
    else:
        X_data_name = 'train_data_'+ suff +  '.npy'
        y_data_name = 'labels_'+ suff + '.npy'
    
    rates12 = sp.hstack((0.05 * sp.ones(25,dtype=sp.float32),0.005*sp.ones(15,dtype=sp.float32),0.0005*sp.ones(10,dtype=sp.float32)))
    rates24 = sp.hstack((0.01 * sp.ones(25,dtype=sp.float32),0.0001*sp.ones(15,dtype=sp.float32)))
    rates48 = sp.hstack ([0.05 * sp.ones(15,dtype=sp.float32),0.005*sp.ones(10,dtype=sp.float32) ])
    if nn_name == '24-net':
        nn = Cnnl(nn_name = nn_name,l_rates=rates24,subnet=Cnnl(nn_name = '12-net',l_rates=rates12).load_model(
            '12-net_lasagne_.pickle'))
    elif nn_name == '48-net':    
        nn = Cnnl(nn_name = nn_name,l_rates=rates48,subnet=Cnnl(nn_name = '24-net',l_rates=rates24,subnet=Cnnl(nn_name = '12-net',l_rates=rates12).load_model(
            '12-net_lasagne_.pickle')).load_model('24-net_lasagne_.pickle'))     
    else:
        nn = Cnnl(nn_name = nn_name,l_rates=rates12)
    if not os.path.exists(nn_name   + '_lasagne_.pickle'): 
        if nn_name.find('calib') > 0:
            ds.get_train_wider_calib_data(k=k)  
        else:
            ds.get_train_data(k=k)
    X,y = sp.load(X_data_name),sp.load(y_data_name)
        
    X_train,y_train = X,y
    
    if not os.path.exists(nn_name   + '_lasagne_.pickle'):
        if nn_name == '24-net':
            X_sub_train12 = sp.load('train_data_12.npy')
            nn.fit(X = X_train,y = y_train,X12 = X_sub_train12)
        elif nn_name == '48-net':
            X_sub_train12 = sp.load('train_data_12.npy')
            X_sub_train24 = sp.load('train_data_24.npy')
            nn.fit(X = X_train,y = y_train,X12 = X_sub_train12,X24 = X_sub_train24)
        else:
            nn.fit(X = X_train,y = y_train)
        nn.save_model(nn_name   + '_lasagne_.pickle')