Beispiel #1
0
def testPlot4(trials=40, maxsteps=512):
    fun = StochQuad(noiseLevel=100., curvature=1)
    fwrap = FunctionWrapper(trials, fun, record_samples=True)
    fwrap.nextSamples(100000)
    fwrap = DataFunctionWrapper(fwrap._seen, fun, shuffling=False)

    for i, (aclass, aparams) in enumerate([
        (vSGD, {
            'batch_size': 1
        }),
        (vSGDfd, {
            'batch_size': 1
        }),
    ]):
        pylab.subplot(2, 1, 2)
        fwrap.reset()
        ls = lossTraces(fwrap=fwrap,
                        aclass=aclass,
                        dim=trials,
                        maxsteps=maxsteps,
                        algoparams=aparams)
        plotWithPercentiles(ls, algo_colors[aclass], aclass.__name__)
        pylab.semilogy()
        pylab.xlim(0, maxsteps)
        pylab.legend()

        pylab.subplot(2, 2, i + 1)
        fwrap.reset()
        plotHeatmap(fwrap, aclass, aparams, trials, maxsteps)

    pylab.show()
Beispiel #2
0
def testPlot3(trials=100, maxsteps=2**10):
    fwrap = FunctionWrapper(trials, StochQuad(noiseLevel=1, curvature=1))
    ploti = 1
    variants = [
        (SGD, {
            'learning_rate': 0.1
        }),
        (SGD, {
            'learning_rate': 0.01
        }),
        (AdaGrad, {
            'init_lr': 0.3
        }),
        (Amari, {
            'init_lr': 0.1,
            'time_const': 100
        }),
        (RMSProp, {
            'init_lr': 0.1
        }),
        (OracleSGD, {}),
    ]
    ratio = 1
    tot = len(variants)
    rows = int(pylab.sqrt(tot) / ratio)
    cols = (tot + rows - 1) / rows
    for aclass, aparams in variants:
        pylab.subplot(rows, cols, ploti)
        ploti += 1
        plotHeatmap(fwrap, aclass, aparams, trials, maxsteps)
        pylab.title(aclass.__name__)
    pylab.show()
def plotAllCombinations(aclasses, avariants,
                        fclasses, fvariants,
                        trials, maxsteps, maxbatchsize=10):
    fundic = {}    
    ploti = 1
    rows = sum([len(avariants[ac]) for ac in aclasses]) + len(aclasses) - 1
    cols = len(fvariants) * len(fclasses) + len(fclasses) - 1
    f_mid = int(median(range(len(fvariants))))
    for ac_id, aclass in enumerate(aclasses):
        a_mid = int(median(range(len(avariants[aclass]))))
        for as_id, aparams in enumerate(avariants[aclass]):
            if as_id == 0 and ac_id > 0:
                ploti += cols
            
            for fc_id, fclass in enumerate(fclasses):
                if fc_id not in fundic:
                    # shared samples across all uses of one function
                    fun = fclass()
                    fwrap = FunctionWrapper(trials, fun, record_samples=True)
                    fwrap.nextSamples(maxbatchsize * (maxsteps+10))
                    fundic[fc_id] = fwrap._seen
                data = fundic[fc_id]
                for fs_id, fsettings in enumerate(fvariants):
                    if fs_id == 0 and fc_id > 0:
                        ploti += 1
                    fun = fclass(**fsettings)
                    provider = DataFunctionWrapper(data, fun, shuffling=False)            
                    pylab.subplot(rows, cols, ploti); ploti += 1
                    plotHeatmap(provider, aclass, aparams, trials, maxsteps)
                    if ac_id == 0 and as_id == 0 and fs_id == f_mid:
                        pylab.title(fclass.__name__[5:])
                    if fs_id == 0 and as_id == a_mid:
                        pylab.ylabel(aclass.__name__[:6])
    pylab.subplots_adjust(left=0.1, bottom=0.01, right=0.99, top=0.9, wspace=0.05, hspace=0.05)        
Beispiel #4
0
def plotAllCombinations(aclasses,
                        avariants,
                        fclasses,
                        fvariants,
                        trials,
                        maxsteps,
                        maxbatchsize=10):
    fundic = {}
    ploti = 1
    rows = sum([len(avariants[ac]) for ac in aclasses]) + len(aclasses) - 1
    cols = len(fvariants) * len(fclasses) + len(fclasses) - 1
    f_mid = int(median(range(len(fvariants))))
    for ac_id, aclass in enumerate(aclasses):
        a_mid = int(median(range(len(avariants[aclass]))))
        for as_id, aparams in enumerate(avariants[aclass]):
            if as_id == 0 and ac_id > 0:
                ploti += cols

            for fc_id, fclass in enumerate(fclasses):
                if fc_id not in fundic:
                    # shared samples across all uses of one function
                    fun = fclass()
                    fwrap = FunctionWrapper(trials, fun, record_samples=True)
                    fwrap.nextSamples(maxbatchsize * (maxsteps + 10))
                    fundic[fc_id] = fwrap._seen
                data = fundic[fc_id]
                for fs_id, fsettings in enumerate(fvariants):
                    if fs_id == 0 and fc_id > 0:
                        ploti += 1
                    fun = fclass(**fsettings)
                    provider = DataFunctionWrapper(data, fun, shuffling=False)
                    pylab.subplot(rows, cols, ploti)
                    ploti += 1
                    plotHeatmap(provider, aclass, aparams, trials, maxsteps)
                    if ac_id == 0 and as_id == 0 and fs_id == f_mid:
                        pylab.title(fclass.__name__[5:])
                    if fs_id == 0 and as_id == a_mid:
                        pylab.ylabel(aclass.__name__[:6])
    pylab.subplots_adjust(left=0.1,
                          bottom=0.01,
                          right=0.99,
                          top=0.9,
                          wspace=0.05,
                          hspace=0.05)
Beispiel #5
0
def testPlot3(trials=100, maxsteps=2 ** 10):
    fwrap = FunctionWrapper(trials, StochQuad(noiseLevel=1, curvature=1))
    ploti = 1
    variants = [(SGD, {'learning_rate':0.1}),
                (SGD, {'learning_rate':0.01}),
                (AdaGrad, {'init_lr':0.3}),
                (Amari, {'init_lr':0.1, 'time_const':100}),
                (RMSProp, {'init_lr':0.1}),
                (OracleSGD, {}),
                ]
    ratio = 1
    tot = len(variants)
    rows = int(pylab.sqrt(tot) / ratio)     
    cols = (tot + rows - 1) / rows 
    for aclass, aparams in variants:
        pylab.subplot(rows, cols, ploti); ploti += 1
        plotHeatmap(fwrap, aclass, aparams, trials, maxsteps)
        pylab.title(aclass.__name__)        
    pylab.show()
Beispiel #6
0
def testPlot4(trials=40, maxsteps=512):
    fun = StochQuad(noiseLevel=100., curvature=1)
    fwrap = FunctionWrapper(trials, fun, record_samples=True)
    fwrap.nextSamples(100000)
    fwrap = DataFunctionWrapper(fwrap._seen, fun, shuffling=False)
    
    for i, (aclass, aparams) in enumerate([(vSGD, {'batch_size':1}),
                                           (vSGDfd, {'batch_size':1}),
                                           ]):
        pylab.subplot(2, 1, 2)
        fwrap.reset()
        ls = lossTraces(fwrap=fwrap, aclass=aclass, dim=trials,
                        maxsteps=maxsteps, algoparams=aparams)
        plotWithPercentiles(ls, algo_colors[aclass], aclass.__name__)
        pylab.semilogy()
        pylab.xlim(0, maxsteps)
        pylab.legend()
    
        pylab.subplot(2, 2, i + 1)
        fwrap.reset()
        plotHeatmap(fwrap, aclass, aparams, trials, maxsteps)
        
    pylab.show()