Esempio n. 1
0
    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)
Esempio n. 2
0
    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()
Esempio n. 3
0
    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()
Esempio n. 4
0
    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)
Esempio n. 5
0
    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)
Esempio n. 6
0
    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)
Esempio n. 7
0
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
Esempio n. 8
0
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