def compare(self, networks, losses): folders = [ dir for dir in os.listdir('.') if os.path.isdir(dir) and not dir.startswith('.') ] networks = tb.wildcardMatch(folders, networks) logs = [] measureNames = [] for net in networks: logfile = '%s/training/log.txt' % net print 'reading %s' % logfile logs.append(Log(net, logfile)) for name in logs[-1].measureNames(): if name not in measureNames: measureNames.append(name) if losses is not None: selectedNames = tb.unique(tb.wildcardMatch(measureNames, losses)) else: selectedNames = tb.unique(measureNames) print 'comparing networks:' for net in networks: print " ", net print 'comparing losses: ' for name in selectedNames: print " ", name Log.plotComparison(selectedNames, logs)
def plot(self, select=''): measureList = [] if select == '': measureList = self._measureList else: selections = select.split(',') for selection in selections: measureList += tb.wildcardMatch(self._measureList, selection) measureList = tb.unique(measureList) plot = Plot("loss/accuracy for %s" % self._networkName) def plotMeasure(name, label, color): plot.plotList(label, self._measures[name], color) measureList.remove(name) for name, (label, style) in Config.plotMeasureStyles.iteritems(): if name in measureList: plotMeasure(name, name, style) styles = tb.styleList() for name in measureList[:]: if name.startswith('test_'): plotMeasure(name, name, styles.pop(0)) for name in measureList[:]: plotMeasure(name, name, styles.pop(0)) plot.finish()
def plot(self, select=''): measureList = [] if select == '': measureList = self._measureList else: selections = select.split(',') for selection in selections: measureList += tb.wildcardMatch(self._measureList, selection) measureList = tb.unique(measureList) plot = Plot("loss/accuracy for %s" % self._networkName) def plotMeasure(name,label,color): plot.plotList(label, self._measures[name], color) measureList.remove(name) for name, (label, style) in Config.plotMeasureStyles.iteritems(): if name in measureList: plotMeasure(name, name, style) styles = tb.styleList() for name in measureList[:]: if name.startswith('test_'): plotMeasure(name, name, styles.pop(0)) for name in measureList[:]: plotMeasure(name, name, styles.pop(0)) plot.finish()
def __init__(self, networkName, filename): lines = open(filename, 'r').readlines() iter = -1 self._networkName = networkName self._lines = [] self._measures = {} self._measureList = [] def appendMeasure(name, iter, value): if name not in self._measures: self._measures[name] = [] self._measureList.append(name) self._measures[name].append((iter, float(value))) for l in lines: if ']' not in l: self._lines.append((iter, l)) continue msg = l.split(']')[1].strip() if msg.startswith('Iteration'): match = re.compile('Iteration ([0-9]+)').match(msg) if match: iter = int(match.group(1)) match = re.compile( 'Iteration [0-9]+, loss = (([0-9]|\.)+)').match(msg) if match: appendMeasure('train_loss', iter, match.group(1)) if msg.startswith('Test loss'): value = re.compile('Test loss: (([0-9]|\.)+)').match( msg).group(1) appendMeasure('test_loss', iter, value) if msg.startswith('Train net output'): match = re.compile( 'Train net output ..: ([a-zA-Z0-9_-]+) = (([0-9]|\.)+)' ).match(msg) if match: name = match.group(1) value = match.group(2) appendMeasure('train_' + name, iter, value) if msg.startswith('Test net output'): match = re.compile( 'Test net output #[a-zA-Z0-9_-]+: ([a-zA-Z0-9_-]+) = (([0-9]|\.)+)' ).match(msg) if match: name = match.group(1) value = match.group(2) appendMeasure('test_' + name, iter, value) self._lines.append((iter, l)) self._measureList = tb.unique(self._measureList)
def __init__(self, networkName, filename): lines = open(filename,'r').readlines() iter = -1 self._networkName = networkName self._lines = [] self._measures = {} self._measureList = [] def appendMeasure(name, iter, value): if name not in self._measures: self._measures[name]=[] self._measureList.append(name) self._measures[name].append((iter,float(value))) for l in lines: if ']' not in l: self._lines.append((iter, l)) continue msg = l.split(']')[1].strip() if msg.startswith('Iteration'): match = re.compile('Iteration ([0-9]+)').match(msg) if match: iter = int(match.group(1)) match = re.compile('Iteration [0-9]+, loss = (([0-9]|\.)+)').match(msg) if match: appendMeasure('train_loss', iter, match.group(1)) if msg.startswith('Test loss'): value = re.compile('Test loss: (([0-9]|\.)+)').match(msg).group(1) appendMeasure('test_loss', iter, value) if msg.startswith('Train net output'): match = re.compile('Train net output ..: ([a-zA-Z0-9_-]+) = (([0-9]|\.)+)').match(msg) if match: name = match.group(1) value = match.group(2) appendMeasure('train_'+name, iter, value) if msg.startswith('Test net output'): match = re.compile('Test net output #[a-zA-Z0-9_-]+: ([a-zA-Z0-9_-]+) = (([0-9]|\.)+)').match(msg) if match: name = match.group(1) value = match.group(2) appendMeasure('test_'+name, iter, value) self._lines.append((iter, l)) self._measureList = tb.unique(self._measureList)
def compare(self, networks, losses): folders = [dir for dir in os.listdir('.') if os.path.isdir(dir) and not dir.startswith('.')] networks = tb.wildcardMatch(folders, networks) logs = [] measureNames = [] for net in networks: logfile = '%s/training/log.txt' % net print 'reading %s' % logfile logs.append(Log(net, logfile)) for name in logs[-1].measureNames(): if name not in measureNames: measureNames.append(name) if losses is not None: selectedNames = tb.unique(tb.wildcardMatch(measureNames, losses)) else: selectedNames = tb.unique(measureNames) print 'comparing networks:' for net in networks: print " ", net print 'comparing losses: ' for name in selectedNames: print " ", name Log.plotComparison(selectedNames, logs)
def getSelectedCollections(): collectionNames = collections.keys() selectedNames = [] if args.collections == '': selectedNames = collectionNames else: exprs = args.collections.split(',') for expr in exprs: selectedNames += tb.wildcardMatch(collectionNames, expr) selectedNames = tb.unique(selectedNames) selectedCollections = {} for name in selectedNames: for collectionName, collection in collections.iteritems(): if collectionName == name: selectedCollections[name] = collection return selectedCollections