def main():
    parser = argparse.ArgumentParser(description='Visualizes a trained StackedLayers model.')
    parser.add_argument('--name', type = str, default = 'junk',
                        help = 'Name for GitResultsManager results directory (default: junk)')
    #parser.add_argument('--quick', action='store_true', help = 'Enable quick mode (default: off)')
    parser.add_argument('--nodiary', action='store_true', help = 'Disable diary (default: diary is on)')
    parser.add_argument('stackedLayersFilename', type = str,
                        help = 'File where a StackedLayers model was stored, something like stackedLayers.pkl.gz')
    parser.add_argument('command', type = str, default = 'embed', choices = ['visall', 'embed'], nargs='?',
                        help = 'What to do: one of {visall (save all plots), embed (drop into shell)}. Default: embed.')

    args = parser.parse_args()

    resman.start(args.name, diary = not args.nodiary)
    saveDir = resman.rundir

    print 'Loading StackedLayers from %s' % args.stackedLayersFilename
    sl = loadFromPklGz(args.stackedLayersFilename)

    print 'Loaded these StackedLayers:'
    sl.printStatus()

    if args.command == 'embed':
        embed()
    elif args.command == 'visall':
        sl.visAll(saveDir)
    else:
        print 'Unknown command:', args.command

    resman.stop()
def main():
    parser = argparse.ArgumentParser(description='Trains a StackedLayers model.')
    parser.add_argument('layerFilename', type = str,
                        help = 'File defining layers, something like tica-10-15.layers')
    parser.add_argument('trainParamsFilename', type = str,
                        help = 'File defining training parameters, something like tica-10-15.trainparams')
    parser.add_argument('--name', type = str, default = 'junk',
                        help = 'Name for GitResultsManager results directory (default: junk)')
    parser.add_argument('--load', type = str, default = '',
                        help = ('Load a previously created StackedLayers object. This can ' +
                                'be used to resume training a previously checkpointed, ' +
                                'partially trained StackedLayers object (default: none)'))
    parser.add_argument('--maxlayer', type = int, default = -1,
                        help = ('Maximum layer to train, -1 to train all. Can be used to train' +
                                'only a subset of layers in an otherwise deeper model. Default: -1.'))
    parser.add_argument('--quick', action='store_true', help = 'Enable quick mode (default: off)')
    parser.add_argument('--nodiary', action='store_true', help = 'Disable diary (default: diary is on)')

    args = parser.parse_args()

    resman.start(args.name, diary = not args.nodiary)
    saveDir = resman.rundir


    layerDefinitions = importFromFile(args.layerFilename, 'layers')
    trainParams = importFromFile(args.trainParamsFilename, 'trainParams')

    shutil.copyfile(args.layerFilename,       os.path.join(saveDir, 'params.layers'))
    shutil.copyfile(args.trainParamsFilename, os.path.join(saveDir, 'params.trainparams'))

    
    # Experiment: train a few Stacked Layers with different ticas
    assert not args.load, 'Loading does not make sense here.'
    sls = []
    for ii, hiddenWidth in enumerate((8,12,16,20,24,28,32,36,40)):
        treatmentDir = os.path.join(saveDir, 'treatment_%02d_%d' % (ii, hiddenWidth))
        os.mkdir(treatmentDir)

        print '\n' * 4 + '*' * 40
        print 'Treatment %d, width %d (results in %s)' % (ii, hiddenWidth, treatmentDir)
        print '*' * 40

        assert layerDefinitions[2]['type'] == 'tica'

        layerDefinitions[2]['hiddenSize'] = (hiddenWidth, hiddenWidth)
        
        print 'Creating new StackedLayers object'
        sl = StackedLayers(layerDefinitions)

        sl.printStatus()

        sl.train(trainParams, saveDir = treatmentDir, quick = args.quick, maxlayer = args.maxlayer)
        sls.append(sl)

    fileFinal = os.path.join(saveDir, 'multiStackedLayers.pkl.gz')
    saveToFile(fileFinal, sls)

    resman.stop()
Example #3
0
def main():
    resman.start('junk', diary = True)

    params = {}
    randomParams = False
    if randomParams:
        params['hiddenISize'] = random.choice((2, 4, 6, 8, 10, 15, 20))
        params['hiddenJSize'] = params['hiddenISize']
        params['neighborhoodSize'] = random.choice((.1, .3, .5, .7, 1.0, 1.5, 2.0, 2.5, 3.5, 5.0))
        lambd = exp(random.uniform(log(.0001), log(10)))   # Uniform in log space
        params['lambd'] = round(lambd, 1-int(floor(log10(lambd))))  # Just keep two significant figures
        params['randSeed'] = int(random.uniform(0,9999))
        #params['dataWidth'] = random.choice((2, 4))   # just quick
        #params['dataWidth'] = random.choice((2, 3, 4, 6, 10, 15, 20, 25, 28))
        params['dataWidth'] = random.choice((2, 3, 4, 6, 10, 15, 20))  # 25 and 28 are incomplete
        params['nColors'] = random.choice((1, 3))
    else:
        params['hiddenISize'] = 15
        params['hiddenJSize'] = params['hiddenISize']
        params['neighborhoodSize'] = 1.0
        params['lambd'] = .026
        params['randSeed'] = 22
        #params['dataWidth'] = random.choice((2, 4))   # just quick
        #params['dataWidth'] = random.choice((2, 3, 4, 6, 10, 15, 20, 25, 28))
        params['dataWidth'] = 10
        params['nColors'] = 3
    params['isColor'] = (params['nColors'] == 3)
    params['imgShape'] = ((params['dataWidth'], params['dataWidth'], 3)
                          if params['isColor'] else
                          (params['dataWidth'], params['dataWidth']))
    params['maxFuncCalls'] = 300
    params['whiten'] = True    # Just false for Space Invaders dataset...
    params['dataCrop'] = None       # Set to None to not crop data...

    paramsRand = params.copy()
    paramsRand['dataLoader'] = 'loadRandomData'
    paramsRand['dataPath'] = ('../data/random/randomu01_train_%02d_50000_%dc.pkl.gz'
                              % (paramsRand['dataWidth'], paramsRand['nColors']))

    paramsData = params.copy()
    #paramsData['dataLoader'] = 'loadAtariData'
    #paramsData['dataPath'] = ('../data/atari/space_invaders_train_%02d_50000_%dc.pkl.gz'
    #                          % (paramsData['dataWidth'], paramsData['nColors']))
    paramsData['dataLoader'] = 'loadUpsonData3'
    paramsData['dataPath'] = ('../data/upson_rovio_3/train_%02d_50000_%dc.pkl.gz'
                              % (paramsData['dataWidth'], paramsData['nColors']))
        

    doRand = False
    if doRand:
        #resultsRand = reliablyRunTest((0, resman.rundir, '00000_rand', paramsRand, os.getcwd(), os.getenv('DISPLAY','')))
        randResultsDir = os.makedirs(resman.rundir, 'rand')
        runTest(randResultsDir, paramsRand)
    #resultsData = reliablyRunTest((0, resman.rundir, '00000_data', paramsData, os.getcwd(), os.getenv('DISPLAY','')))

    runTest(resman.rundir, paramsData)
    
    resman.stop()
def main():
    dirs = [name for name in os.listdir('results') if os.path.isdir(os.path.join('results', name))]
    print 'last few results:'
    for dir in sorted(dirs)[-10:]:
        print '  ' + dir

    resman.start('junk', diary = False)
    saveDir = resman.rundir
    
    embed()
    
    resman.stop()
def main():
    resman.start('junk', diary = False)

    #l1tica  = loadFromPklGz('results/130402_033310_44cc757_master_psearchTica_UP/00022_data/tica.pkl.gz')
    l1tica  = loadFromPklGz('results/130406_184751_3d90386_rapidhacks_upson3_1c_l1/tica.pkl.gz')   # 1c Upson3
    #layer1Whitener = loadFromPklGz('../data/upson_rovio_2/white/train_10_50000_1c.whitener.pkl.gz')
    layer1Whitener = loadFromPklGz('../data/upson_rovio_3/white/train_10_50000_1c.whitener.pkl.gz')

    layerSizePlan = [10, 15, 23, 35, 53, 80, 120, 180]

    stackedTica = StackedTICA(l1tica, layer1Whitener, '../data/upson_rovio_3/imgfiles/',
                              layerSizePlan = layerSizePlan,
                              isColor = False,
                              saveDir = resman.rundir)

    if False:
        print 'JUST DEBUG...'

        pdb.set_trace()
        
        tica = stackedTica.ticas[0]
        pdb.set_trace()
        return
    #data,labels,strings = loadUpsonData3('../data/upson_rovio_3/train_10_50000_1c.pkl.gz')
    #data = loadFromPklGz('../data/upson_rovio_3/white/train_10_50000_1c.white.pkl.gz')
    #stackedTica.plotResults(resman.rundir, stackedTica.ticas[0], data, (10,10), (15,15))
    
    #pdb.set_trace()

    params = {}
    params['hiddenISize'] = 15
    params['hiddenJSize'] = params['hiddenISize']
    params['neighborhoodSize'] = 1.0
    params['lambd'] = .026
    params['randSeed'] = 0
    #params['dataWidth'] = 10
    #params['nColors'] = 1
    #params['isColor'] = (params['nColors'] == 3)
    #params['imgShape'] = ((params['dataWidth'], params['dataWidth'], 3)
    #                      if params['isColor'] else
    #                      (params['dataWidth'], params['dataWidth']))
    params['maxFuncCalls'] = 3
    #params['whiten'] = True    # Just false for Space Invaders dataset...
    params['dataCrop'] = None       # Set to None to not crop data...
    #params['dataCrop'] = 10000       # Set to None to not crop data...

    stackedTica.learnNextLayer(params)
    #print 'HACK FOR DEBUG'
    saveToFile(os.path.join(resman.rundir, 'stackedTica.pkl.gz'), stackedTica)    # save learned model
    
    resman.stop()
def main():
    print('This is not logged')

    resman.start('demo-GRM-module-run')

    for ii in range(3):
        print('This is logged', ii)
        print('This is logged (to stderr)', ii, file=sys.stderr)
        sleep(1)
    with open(resman.rundir + '/output_file_1.txt', 'w') as ff:
        ff.write('test output to file in results directory\n')

    resman.stop()

    print('Run finished')
Example #7
0
def main():
    print('This is not logged')

    resman.start('demo-GRM-module-run')

    for ii in range(3):
        print('This is logged', ii)
        print('This is logged (to stderr)', ii, file=sys.stderr)
        sleep(1)
    with open(resman.rundir + '/output_file_1.txt', 'w') as ff:
        ff.write('test output to file in results directory\n')

    resman.stop()

    print('Run finished')
Example #8
0
def main():
    dirs = [
        name for name in os.listdir('results')
        if os.path.isdir(os.path.join('results', name))
    ]
    print 'last few results:'
    for dir in sorted(dirs)[-10:]:
        print '  ' + dir

    resman.start('junk', diary=False)
    saveDir = resman.rundir

    embed()

    resman.stop()
def main():
    parser = argparse.ArgumentParser(
        description='Visualizes a trained StackedLayers model.')
    parser.add_argument(
        '--name',
        type=str,
        default='junk',
        help='Name for GitResultsManager results directory (default: junk)')
    #parser.add_argument('--quick', action='store_true', help = 'Enable quick mode (default: off)')
    parser.add_argument('--nodiary',
                        action='store_true',
                        help='Disable diary (default: diary is on)')
    parser.add_argument(
        'stackedLayersFilename',
        type=str,
        help=
        'File where a StackedLayers model was stored, something like stackedLayers.pkl.gz'
    )
    parser.add_argument(
        'command',
        type=str,
        default='embed',
        choices=['visall', 'embed'],
        nargs='?',
        help=
        'What to do: one of {visall (save all plots), embed (drop into shell)}. Default: embed.'
    )

    args = parser.parse_args()

    resman.start(args.name, diary=not args.nodiary)
    saveDir = resman.rundir

    print 'Loading StackedLayers from %s' % args.stackedLayersFilename
    sl = loadFromPklGz(args.stackedLayersFilename)

    print 'Loaded these StackedLayers:'
    sl.printStatus()

    if args.command == 'embed':
        embed()
    elif args.command == 'visall':
        sl.visAll(saveDir)
    else:
        print 'Unknown command:', args.command

    resman.stop()
Example #10
0
def main():
    parser = argparse.ArgumentParser(description='Visualize performance of different human-activity-detection runs using the generated avg_pr.model.c0.1.e0.01.w3 files (or similar)')
    parser.add_argument('--name', type = str, default = 'junk',
                        help = 'Name for GitResultsManager results directory (default: junk)')
    parser.add_argument('--quick', action='store_true', help = 'Enable quick mode (default: off)')
    parser.add_argument('--nodiary', action='store_true', help = 'Disable diary (default: diary is on)')

    parser.add_argument('avg_pr_model_file', type = str, nargs = '+',
                        help = 'Which avg_pr.model.c0.1.e0.01.w3 (or similar) files to load. Must give at least one.')

    args = parser.parse_args()

    resman.start(args.name, diary = not args.nodiary)

    visPerf(saveDir = resman.rundir, modelFiles = args.avg_pr_model_file)
    
    resman.stop()
def main():
    parser = argparse.ArgumentParser(description='Makes features for the human activity deteciton dataset. Example usage:\n./humanObjectFeatures.py /path/to/data_obj_feats.txt')
    parser.add_argument('--name', type = str, default = 'junk',
                        help = 'Name for GitResultsManager results directory (default: junk)')
    parser.add_argument('--quick', action='store_true', help = 'Enable quick mode (default: off)')
    parser.add_argument('--nodiary', action='store_true', help = 'Disable diary (default: diary is on)')

    #parser.add_argument('stackedLayersFilename', type = str,
    #                    help = 'File where a StackedLayers model was stored, something like stackedLayers.pkl.gz')
    #parser.add_argument('command', type = str, default = 'embed', choices = ['visall', 'embed'], nargs='?',
    #                    help = 'What to do: one of {visall (save all plots), embed (drop into shell)}. Default: embed.')

    parser.add_argument('--stackedlayers', type = str, default = '',
                        help = 'Path to a *.pkl.gz file containing a pickeled StackedLayers object to load (default: None)')
    parser.add_argument('--fdata', type = str, default = '',
                        help = 'Path to a "..../formatted/data/method_name" directory containing files like 0510175829_1.txt. Needed only if adding truth labels. (default: None)')
    parser.add_argument('--outfile', type = str, default = 'data_objs_feats_plus.txt',
                        help = 'What to name the output file (default: data_objs_feats_plus.txt)')
    parser.add_argument('dataDir', type = str, default = 'data',
                        help = 'Where to look for the "by_id" directory')
    parser.add_argument('data_obj_feats_file', type = str,
                        help = 'Which data_objs_feats.txt file to load')

    args = parser.parse_args()

    resman.start(args.name, diary = not args.nodiary)
    saveDir = resman.rundir

    #print 'Loading StackedLayers from %s' % args.stackedLayersFilename
    #sl = loadFromPklGz(args.stackedLayersFilename)
    #print 'Loaded these StackedLayers:'
    #sl.printStatus()

    stackedLayers = None
    if args.stackedlayers:
        stackedLayers = loadFromPklGz(args.stackedlayers)

    makeFeats(dataDir = args.dataDir, featsFilename = args.data_obj_feats_file,
              saveDir = saveDir, outputFilename = args.outfile, quick = args.quick,
              stackedLayers = stackedLayers, formattedDataDir = args.fdata,
              featsBase = True, featsConst = 0, featsRand = 0, featsSL = False, featsTruth = False)
    
    resman.stop()
def main():
    resman.start('junk', diary = False)

    stica = loadFromPklGz('results/130407_132841_76b6586_rapidhacks_upson3_1c_l2_first/stackedTica_mod.pkl.gz')
    layer1Whitener = loadFromPklGz('../data/upson_rovio_3/white/train_10_50000_1c.whitener.pkl.gz')
    
    layerSizePlan = [10, 15, 23, 35, 53, 80, 120, 180]

    visLayer = 1

    largeSampleMatrix, labelMatrix, labelStrings = cached(randomSampleMatrixWithLabels, trainFilter,
                                                          seed = 0, color = False,
                                                          Nw = layerSizePlan[visLayer], Nsamples = 50000)

    seed = 0
    Nw = layerSizePlan[visLayer-1]             # e.g. 10
    Nwbig = layerSizePlan[visLayer]            # e.g. 15
    Nwshift = Nwbig - Nw                       # e.g. 15 - 10 = 5
    Nsamples = 1000
    temp = getBigAndSmallerSamples(trainFilter, layer1Whitener, seed, False, Nw, Nwshift, Nsamples)
    largeSampleMatrix, stackedSmall, stackedSmallWhite, labelMatrix, labelStrings = temp

    pooled = stica.getRepresentation(largeSampleMatrix)
    
    plotTopActivations(pooled, largeSampleMatrix, (Nwbig,Nwbig), resman.rundir, nActivations = 50, nSamples = 20)

    pl = (pooled.T - pooled.mean(1)).T
    for ii in range(len(labelStrings)):
        print 'finding top for', labelStrings[ii]
        if labelMatrix[ii,:].sum() == 0:
            print '  skipping, no examples'
            continue
        avgActivationForClass = (pl * labelMatrix[ii,:]).mean(1)
        sortIdx = argsort(avgActivationForClass)
        topNeurons = sortIdx[-1:-(50+1):-1]
        plotTopActivations(pooled[topNeurons,:], largeSampleMatrix, (Nwbig,Nwbig), resman.rundir,
                           nActivations = 50, nSamples = 20, prefix = 'topfor_%s' % labelStrings[ii])
        
    resman.stop()
def main():
    parser = argparse.ArgumentParser(description='Trains a StackedLayers model.')
    parser.add_argument('layerFilename', type = str,
                        help = 'File defining layers, something like tica-10-15.layers')
    parser.add_argument('trainParamsFilename', type = str,
                        help = 'File defining training parameters, something like tica-10-15.trainparams')
    parser.add_argument('--name', type = str, default = 'junk',
                        help = 'Name for GitResultsManager results directory (default: junk)')
    parser.add_argument('--load', type = str, default = '',
                        help = ('Load a previously created StackedLayers object. This can ' +
                                'be used to resume training a previously checkpointed, ' +
                                'partially trained StackedLayers object (default: none)'))
    parser.add_argument('--quick', action='store_true', help = 'Enable quick mode (default: off)')
    parser.add_argument('--nodiary', action='store_true', help = 'Disable diary (default: diary is on)')

    args = parser.parse_args()

    resman.start(args.name, diary = not args.nodiary)
    saveDir = resman.rundir


    layerDefinitions = importFromFile(args.layerFilename, 'layers')
    trainParams = importFromFile(args.trainParamsFilename, 'trainParams')

    shutil.copyfile(args.layerFilename,       os.path.join(saveDir, 'params.layers'))
    shutil.copyfile(args.trainParamsFilename, os.path.join(saveDir, 'params.trainparams'))

    if args.load:
        print 'Loading StackedLayers object from %s' % args.load
        sl = loadFromPklGz(args.load)
    else:
        print 'Creating new StackedLayers object'
        sl = StackedLayers(layerDefinitions)

    sl.printStatus()

    sl.train(trainParams, saveDir = saveDir, quick = args.quick)

    resman.stop()
Example #14
0
import pdb
import os, sys, time
from numpy import *
from PIL import Image
from scipy.optimize.lbfgsb import fmin_l_bfgs_b

from rica import RICA
from GitResultsManager import resman, fmtSeconds
from util.plotting import tile_raster_images
from util.dataLoaders import loadFromPklGz, saveToFile



if __name__ == '__main__':
    resman.start('junk', diary = False)

    data = loadFromPklGz('../data/upson_rovio_2/train_10_50000_1c.pkl.gz')
    data = data.T   # Make into one example per column
    #data = data[:,:5000]      # HACK!!!!!!!!!
    
    nFeatures = 100
    lambd = .05
    neighborhoodSize = 1.5
    print '\nChosen TICA parameters'
    
    for key in ['nFeatures', 'lambd']:
        print '  %20s: %s' % (key, locals()[key])
    
    random.seed(0)
    rica = RICA(imgShape = (10, 10),
def main():
    resman.start('junk', diary=False)

    useIpython = True
    if useIpython:
        client = Client(profile='ssh')
        #client = Client()
        print 'IPython worker ids:', client.ids
        balview = client.load_balanced_view()

    resultsFilename = os.path.join(resman.rundir, 'allResults.pkl.gz')

    NN = 1000
    allResults = [[None, None] for ii in range(NN)]

    experiments = []
    cwd = os.getcwd()
    disp = os.environ['DISPLAY']
    for ii in range(NN):
        params = {}
        random.seed(ii)
        params['hiddenISize'] = random.choice((2, 4, 6, 8, 10, 15, 20))
        params['hiddenJSize'] = params['hiddenISize']
        params['neighborhoodSize'] = random.choice(
            (.1, .3, .5, .7, 1.0, 1.5, 2.0, 2.5, 3.5, 5.0))
        lambd = exp(random.uniform(log(.0001),
                                   log(10)))  # Uniform in log space
        params['lambd'] = round(
            lambd,
            1 - int(floor(log10(lambd))))  # Just keep two significant figures
        params['randSeed'] = ii
        params['maxFuncCalls'] = 300
        #params['dataWidth'] = random.choice((2, 4))   # just quick
        #params['dataWidth'] = random.choice((2, 3, 4, 6, 10, 15, 20, 25, 28))
        params['dataWidth'] = random.choice(
            (2, 3, 4, 6, 10, 15, 20))  # 25 and 28 are incomplete
        params['nColors'] = random.choice((1, 3))
        params['isColor'] = (params['nColors'] == 3)
        params['imgShape'] = ((params['dataWidth'], params['dataWidth'],
                               3) if params['isColor'] else
                              (params['dataWidth'], params['dataWidth']))
        params['whiten'] = False  # Just false for Space Invaders dataset...
        params['dataCrop'] = None  # Set to None to not crop data...

        paramsRand = params.copy()
        paramsRand['dataLoader'] = 'loadRandomData'
        paramsRand['dataPath'] = (
            '../data/random/randomu01_train_%02d_50000_%dc.pkl.gz' %
            (paramsRand['dataWidth'], paramsRand['nColors']))

        paramsData = params.copy()
        paramsData['dataLoader'] = 'loadAtariData'
        paramsData['dataPath'] = (
            '../data/atari/space_invaders_train_%02d_50000_%dc.pkl.gz' %
            (paramsData['dataWidth'], paramsData['nColors']))
        #paramsData['dataLoader'] = 'loadUpsonData'
        #paramsData['dataPath'] = ('../data/upson_rovio_2/train_%02d_50000_%dc.pkl.gz'
        #                          % (paramsData['dataWidth'], paramsData['nColors']))

        if not useIpython:
            resultsRand = reliablyRunTest(resman.rundir, '%05d_rand' % ii,
                                          paramsRand)

            allResults[ii][0] = {'params': paramsRand, 'results': resultsRand}
            tmpFilename = os.path.join(resman.rundir,
                                       '.tmp.%f.pkl.gz' % time.time())
            saveToFile(tmpFilename, allResults)
            os.rename(tmpFilename, resultsFilename)

            resultsData = reliablyRunTest(resman.rundir, '%05d_data' % ii,
                                          paramsData)

            allResults[ii][1] = {'params': paramsData, 'results': resultsData}
            tmpFilename = os.path.join(resman.rundir,
                                       '.tmp.%f.pkl.gz' % time.time())
            saveToFile(tmpFilename, allResults)
            os.rename(tmpFilename, resultsFilename)
        else:
            experiments.append(((ii, 0), resman.rundir, '%05d_rand' % ii,
                                paramsRand, cwd, disp))
            experiments.append(((ii, 1), resman.rundir, '%05d_data' % ii,
                                paramsData, cwd, disp))

    # Start all jobs
    jobMap = balview.map_async(reliablyRunTest, experiments, ordered=False)
    #jobMap = balview.map_async(reliablyRunTest, range(10), ordered = False)
    for ii, returnValues in enumerate(jobMap):
        testId, params, results = returnValues
        print ii, 'Job', testId, 'finished.'
        allResults[testId[0]][testId[1]] = {
            'params': params,
            'results': results
        }
        tmpFilename = os.path.join(resman.rundir,
                                   '.tmp.%f.pkl.gz' % time.time())
        saveToFile(tmpFilename, allResults)
        os.rename(tmpFilename, resultsFilename)
        #pdb.set_trace()

    print 'Finished all jobs.'
    resman.stop()
Example #16
0
            image_data_raw[:, (img_dim + 1) * ii:(img_dim + 1) * ii +
                           img_dim] = tile_raster_images(X=samples,
                                                         img_shape=(img_dim,
                                                                    img_dim),
                                                         tile_shape=(n_samples,
                                                                     1),
                                                         tile_spacing=(1, 1))

    image = Image.fromarray(image_data)
    image.save(os.path.join(output_dir, 'samples.png'))
    if plotRawAlso:
        image = Image.fromarray(image_data)
        image.save(os.path.join(output_dir, 'samplesRaw.png'))

    saveToFile(os.path.join(output_dir, 'rbm.pkl.gz'), rbm)

    return rbm, meanCosts


if __name__ == '__main__':
    resman.start('junk', diary=True)
    datasets = load_mnist_data('../data/mnist.pkl.gz', shared=False)
    print 'done loading.'
    test_rbm(datasets=datasets,
             training_epochs=45,
             n_hidden=500,
             learning_rate=.002,
             output_dir=resman.rundir,
             quickHack=False)
    resman.stop()
def main():
    parser = argparse.ArgumentParser(
        description='Trains a StackedLayers model.')
    parser.add_argument(
        'layerFilename',
        type=str,
        help='File defining layers, something like tica-10-15.layers')
    parser.add_argument(
        'trainParamsFilename',
        type=str,
        help=
        'File defining training parameters, something like tica-10-15.trainparams'
    )
    parser.add_argument(
        '--name',
        type=str,
        default='junk',
        help='Name for GitResultsManager results directory (default: junk)')
    parser.add_argument(
        '--load',
        type=str,
        default='',
        help=('Load a previously created StackedLayers object. This can ' +
              'be used to resume training a previously checkpointed, ' +
              'partially trained StackedLayers object (default: none)'))
    parser.add_argument(
        '--maxlayer',
        type=int,
        default=-1,
        help=(
            'Maximum layer to train, -1 to train all. Can be used to train' +
            'only a subset of layers in an otherwise deeper model. Default: -1.'
        ))
    parser.add_argument('--quick',
                        action='store_true',
                        help='Enable quick mode (default: off)')
    parser.add_argument('--nodiary',
                        action='store_true',
                        help='Disable diary (default: diary is on)')

    args = parser.parse_args()

    resman.start(args.name, diary=not args.nodiary)
    saveDir = resman.rundir

    layerDefinitions = importFromFile(args.layerFilename, 'layers')
    trainParams = importFromFile(args.trainParamsFilename, 'trainParams')

    shutil.copyfile(args.layerFilename, os.path.join(saveDir, 'params.layers'))
    shutil.copyfile(args.trainParamsFilename,
                    os.path.join(saveDir, 'params.trainparams'))

    # Experiment: train a few Stacked Layers with different ticas
    assert not args.load, 'Loading does not make sense here.'
    sls = []
    for ii, hiddenWidth in enumerate((8, 12, 16, 20, 24, 28, 32, 36, 40)):
        treatmentDir = os.path.join(saveDir,
                                    'treatment_%02d_%d' % (ii, hiddenWidth))
        os.mkdir(treatmentDir)

        print '\n' * 4 + '*' * 40
        print 'Treatment %d, width %d (results in %s)' % (ii, hiddenWidth,
                                                          treatmentDir)
        print '*' * 40

        assert layerDefinitions[2]['type'] == 'tica'

        layerDefinitions[2]['hiddenSize'] = (hiddenWidth, hiddenWidth)

        print 'Creating new StackedLayers object'
        sl = StackedLayers(layerDefinitions)

        sl.printStatus()

        sl.train(trainParams,
                 saveDir=treatmentDir,
                 quick=args.quick,
                 maxlayer=args.maxlayer)
        sls.append(sl)

    fileFinal = os.path.join(saveDir, 'multiStackedLayers.pkl.gz')
    saveToFile(fileFinal, sls)

    resman.stop()
from numpy import *
from PIL import Image
from GitResultsManager import resman

from tica import TICA
from visualize import plotImageData, plotCov, printDataStats, plotImageRicaWW, plotRicaActivations, plotRicaReconstructions
from util.dataLoaders import loadAtariData, saveToFile
from util.dataPrep import PCAWhiteningDataNormalizer
from util.misc import pt, pc



'''Refactored version'''

if __name__ == '__main__':
    resman.start('spaceinv_paramsearch', diary = True)
    saveDir = resman.rundir

    dataCrop = None
    #########################
    # Parameters
    #########################
    hiddenISize        = 20
    hiddenJSize        = 20
    neighborhoodParams = ('gaussian', 2.0, 0, 0)
    lambd              = 1.5
    epsilon            = 1e-5
    maxFuncCalls       = 500
    randSeed           = 0
    #dataCrop           = 1000
def main():
    parser = argparse.ArgumentParser(
        description=
        'Makes features for the human activity deteciton dataset. Example usage:\n./humanObjectFeatures.py /path/to/data_obj_feats.txt'
    )
    parser.add_argument(
        '--name',
        type=str,
        default='junk',
        help='Name for GitResultsManager results directory (default: junk)')
    parser.add_argument('--quick',
                        action='store_true',
                        help='Enable quick mode (default: off)')
    parser.add_argument('--nodiary',
                        action='store_true',
                        help='Disable diary (default: diary is on)')

    #parser.add_argument('stackedLayersFilename', type = str,
    #                    help = 'File where a StackedLayers model was stored, something like stackedLayers.pkl.gz')
    #parser.add_argument('command', type = str, default = 'embed', choices = ['visall', 'embed'], nargs='?',
    #                    help = 'What to do: one of {visall (save all plots), embed (drop into shell)}. Default: embed.')

    parser.add_argument(
        '--stackedlayers',
        type=str,
        default='',
        help=
        'Path to a *.pkl.gz file containing a pickeled StackedLayers object to load (default: None)'
    )
    parser.add_argument(
        '--fdata',
        type=str,
        default='',
        help=
        'Path to a "..../formatted/data/method_name" directory containing files like 0510175829_1.txt. Needed only if adding truth labels. (default: None)'
    )
    parser.add_argument(
        '--outfile',
        type=str,
        default='data_objs_feats_plus.txt',
        help='What to name the output file (default: data_objs_feats_plus.txt)'
    )
    parser.add_argument('dataDir',
                        type=str,
                        default='data',
                        help='Where to look for the "by_id" directory')
    parser.add_argument('data_obj_feats_file',
                        type=str,
                        help='Which data_objs_feats.txt file to load')

    args = parser.parse_args()

    resman.start(args.name, diary=not args.nodiary)
    saveDir = resman.rundir

    #print 'Loading StackedLayers from %s' % args.stackedLayersFilename
    #sl = loadFromPklGz(args.stackedLayersFilename)
    #print 'Loaded these StackedLayers:'
    #sl.printStatus()

    stackedLayers = None
    if args.stackedlayers:
        stackedLayers = loadFromPklGz(args.stackedlayers)

    makeFeats(dataDir=args.dataDir,
              featsFilename=args.data_obj_feats_file,
              saveDir=saveDir,
              outputFilename=args.outfile,
              quick=args.quick,
              stackedLayers=stackedLayers,
              formattedDataDir=args.fdata,
              featsBase=True,
              featsConst=0,
              featsRand=0,
              featsSL=False,
              featsTruth=False)

    resman.stop()
                        default='junk',
                        help='Name of run for ResultsManager. Default: junk')
    parser.add_argument('--data',
                        metavar='filename',
                        type=str,
                        help='Data filename to load')
    parser.add_argument('--rbm',
                        metavar='filename',
                        type=str,
                        help='RBM to load from .pkl.gz file')
    parser.add_argument(
        '--plotEvery',
        metavar='steps',
        type=int,
        default=1,
        help=
        'How many Gibbs sampling steps to take between each plot. Default: 1')
    args = parser.parse_args()

    if not args.data and not args.rbm:
        parser.error('Must specify --data or --rbm.')

    resman.start(args.name, diary=True)

    main(args.data if args.data else None,
         args.rbm if args.rbm else None,
         rundir=resman.rundir,
         plotEvery=args.plotEvery)

    resman.stop()
#! /usr/bin/env ipythonpl

'''
Research code

Jason Yosinski
'''

from ica import testIca
from rbm.utils import load_mnist_data
from GitResultsManager import resman



if __name__ == '__main__':
    '''Demonstrate ICA on the MNIST data set.'''

    resman.start('junk', diary = True)
    datasets = load_mnist_data('../data/mnist.pkl.gz', shared = False)

    testIca(datasets = datasets,
            savedir = resman.rundir,     # comment out to show plots instead of saving
            smallImgHack = False,
            quickHack = False,
            )
    resman.stop()