def batchloop(): c = 0 numex = 0 prevperc = -1. terr = [0.0] numdigs = 2 tt = TT("iter progress", verbose=verbose) tt.tick() while datafeeder.hasnextbatch(): perc = round(c * 100. * (10**numdigs) / datafeeder._numbats) / (10**numdigs) if perc > prevperc: terr0 = terr[0] * 1.0 / numex if numex > 0 else 0.0 s = ("%." + str(numdigs) + "f%% \t error: %.3f") % (perc, terr0) tt.live(s) prevperc = perc sampleinps, batsize = datafeeder.nextbatch(withbatchsize=True) numex += batsize sampleinps = sampletransf(*sampleinps) eterr = trainf(*sampleinps) if len(terr) != len(eterr) and terr.count(0.0) == len(terr): terr = [0.0] * len( eterr ) # ensure compatible size of terr (number of output scores) if self.average_err is True: terr = [ xterr + xeterr * batsize for xterr, xeterr in zip(terr, eterr) ] else: terr = [ xterr + xeterr for xterr, xeterr in zip(terr, eterr) ] c += 1 tt.stoplive() if self.average_err is True: terr = [xterr * 1.0 / numex for xterr in terr] return terr