def __init__(self, dPrms, cPrms, netDefFn=get_net_def, solverDefFn=get_solver_def, isLog=True, addFiles=None): ''' dPrms: dict containing key 'expStr' and 'paths' contains dataset specific parameters cPrms: dict contraining 'expStr', 'resumeIter', 'nwPrms' contains net and sovler specific parameters isLog: if logging data should be recorded addFiles: if additional files need to be stored - not implemented yet ''' self.isLog_ = isLog dataExpName = dPrms['expStr'] caffeExpName = cPrms['expStr'] expDirPrefix = dPrms.paths.exp.dr snapDirPrefix = dPrms.paths.exp.snapshot.dr #Relevant directories. self.dPrms_ = copy.deepcopy(dPrms) self.cPrms_ = copy.deepcopy(cPrms) self.dirs_ = {} self.dirs_['exp'] = osp.join(expDirPrefix, dataExpName) self.dirs_['snap'] = osp.join(snapDirPrefix, dataExpName) self.resumeIter_ = cPrms.resumeIter self.runNum_ = cPrms.nwPrms.runNum self.preTrainNet_ = cPrms.nwPrms.preTrainNet solverFile = caffeExpName + '_solver.prototxt' defFile = caffeExpName + '_netdef.prototxt' defDeployFile = caffeExpName + '_netdef_deploy.prototxt' defRecFile = caffeExpName + '_netdef_reconstruct.prototxt' logFile = caffeExpName + '_log.pkl' snapPrefix = caffeExpName + '_caffenet_run%d' % self.runNum_ self.files_ = {} self.files_['solver'] = osp.join(self.dirs_['exp'], solverFile) self.files_['netdef'] = osp.join(self.dirs_['exp'], defFile) self.files_['netdefDeploy'] = osp.join(self.dirs_['exp'], defDeployFile) self.files_['netdefRec'] = osp.join(self.dirs_['exp'], defRecFile) self.files_['log'] = osp.join(self.dirs_['exp'], logFile) #snapshot self.files_['snap'] = osp.join(snapDirPrefix, dataExpName, snapPrefix + '_iter_%d.caffemodel') self.snapPrefix_ = '"%s"' % osp.join(snapDirPrefix, dataExpName, snapPrefix) self.snapPrefix_ = ou.chunk_filename(self.snapPrefix_, maxLen=242) #Chunk all the filnames if needed for key in self.files_.keys(): self.files_[key] = ou.chunk_filename(self.files_[key]) #Store the solver and the net definition files self.expFile_ = edict() self.expFile_.solDef_ = solverDefFn(cPrms.lrPrms) self.setup_solver() self.expFile_.netDef_ = netDefFn(dPrms, cPrms.nwPrms) #Other class parameters self.solver_ = None self.expMake_ = False
def __init__(self, dPrms, cPrms, netDefFn=get_net_def, solverDefFn=get_solver_def): ''' dPrms: dict containing key 'expStr' and 'paths' contains dataset specific parameters cPrms: dict contraining 'expStr', 'resumeIter', 'nwPrms' contains net and sovler specific parameters ''' dataExpName = dPrms['expStr'] caffeExpName = cPrms['expStr'] expDirPrefix = dPrms.paths.exp.dr snapDirPrefix = dPrms.paths.exp.snapshot.dr #Relevant directories. self.dirs_ = {} self.dirs_['exp'] = osp.join(expDirPrefix, dataExpName) self.dirs_['snap'] = osp.join(snapDirPrefix, dataExpName) self.resumeIter_ = cPrms.resumeIter self.runNum_ = cPrms.nwPrms.runNum self.preTrainNet_ = cPrms.nwPrms.preTrainNet solverFile = caffeExpName + '_solver.prototxt' defFile = caffeExpName + '_netdef.prototxt' defDeployFile = caffeExpName + '_netdef_deploy.prototxt' defRecFile = caffeExpName + '_netdef_reconstruct.prototxt' logFile = caffeExpName + '_log.pkl' snapPrefix = caffeExpName + '_caffenet_run%d' % self.runNum_ self.files_ = {} self.files_['solver'] = osp.join(self.dirs_['exp'], solverFile) self.files_['netdef'] = osp.join(self.dirs_['exp'], defFile) self.files_['netdefDeploy'] = osp.join(self.dirs_['exp'], defDeployFile) self.files_['netdefRec'] = osp.join(self.dirs_['exp'], defRecFile) self.files_['log'] = osp.join(self.dirs_['exp'], logFile) #snapshot self.files_['snap'] = osp.join(snapDirPrefix, dataExpName, snapPrefix + '_iter_%d.caffemodel') self.snapPrefix_ = '"%s"' % osp.join(snapDirPrefix, dataExpName, snapPrefix) self.snapPrefix_ = ou.chunk_filename(self.snapPrefix_, maxLen=242) #Chunk all the filnames if needed for key in self.files_.keys(): self.files_[key] = ou.chunk_filename(self.files_[key]) #Store the solver and the net definition files self.expFile_ = edict() self.expFile_.solDef_ = solverDefFn(cPrms.lrPrms) self.setup_solver() self.expFile_.netDef_ = netDefFn(dPrms, cPrms.nwPrms) #Other class parameters self.solver_ = None self.expMake_ = False
def get_snapshot_name(self, numIter=10000, getSolverFile=False): ''' Find the name with which models are being stored. ''' assert self.solDef_ is not None, 'Solver has not been formed' snapshot = self.solDef_.get_property('snapshot_prefix') #_iter_%d.caffemodel is added by caffe while snapshotting. snapshotName = snapshot[1:-1] + '_iter_%d.caffemodel' snapshotName = ou.chunk_filename(snapshotName) #solver file solverName = snapshot[1:-1] + '_iter_%d.solverstate' solverName = ou.chunk_filename(snapshotName) if getSolverFile: return solverName else: return snapshot
def get_snapshot_name(self, numIter=10000, getSolverFile=False): ''' Find the name with which models are being stored. ''' assert self.expFile_.solDef_ is not None, 'Solver has not been formed' snapshot = self.expFile_.solDef_.get_property('snapshot_prefix') #_iter_%d.caffemodel is added by caffe while snapshotting. snapshotName = snapshot[1:-1] + '_iter_%d.caffemodel' % numIter snapshotName = ou.chunk_filename(snapshotName) #solver file solverName = snapshot[1:-1] + '_iter_%d.solverstate' % numIter solverName = ou.chunk_filename(solverName) if getSolverFile: return solverName else: return snapshotName