def writePMML(self, model, predictedClass, fileName, dataSet): try: from nyokaBase.keras.keras_model_to_pmml import KerasToPmml pmmlToBack = KerasToPmml(model, model_name="TrainedModel", description="Keras Models in PMML", dataSet=dataSet, predictedClasses=predictedClass) except Exception as e: data_details = self.upDateStatus() data_details['status'] = 'Training Failed' data_details[ 'errorMessage'] = 'Error while converting Keras to PMML >> ' + str( e) data_details['errorTraceback'] = traceback.format_exc() with open(self.statusFile, 'w') as filetosave: json.dump(data_details, filetosave) # sys.exit() return -1 scriptCode = self.pmmlObj['script'] if scriptCode == []: scriptCode = None else: for sc in scriptCode: sc.__dict__['valueOf_'] = sc.get_valueOf_().replace( '<', '<') pmmlObjNew = pmmlToBack.__dict__ dDict = pmmlObjNew['DataDictionary'] netw = pmmlObjNew['DeepNetwork'] netw = self.updateSectionInfo(netw) extensionInfoForData = [ ny.Extension(value=self.hdExtDet, anytypeobjs_=['']) ] hd = ny.Header(copyright="Copyright (c) 2018 Software AG", Extension=extensionInfoForData, description="Neural Network Model", Timestamp=ny.Timestamp(datetime.now())) with open(fileName, 'w') as filetosave: jj = ny.PMML(version="4.3Ext", DeepNetwork=netw, DataDictionary=dDict, Header=hd, script=scriptCode) jj.export(filetosave, 0)
def getPmml(self, architecture): fName = 'classification' lenOfArch = len(architecture) mName = 'Keras Model' netWorkInfo = [] scriptVal = [] extensionInfoForData = [pml.Extension(value=[], anytypeobjs_=[''])] dataVal = {} for counta, j in enumerate(architecture): if counta == 0: someConectionId = 'na' else: someConectionId = tempConId if j['itemType'] in ['CODE']: # print ('##################',j) scriptFile = open(j['filePath'], 'r') scriptCode = scriptFile.read() scriptCode = scriptCode.replace('<', '<') scriptInfo = {} scrptVal = [] # dataVal['scriptUrl']=j['url'] useFor = j['useFor'] extensionInfoForScript = [ pml.Extension(value=scrptVal, anytypeobjs_=['']) ] scrp = pml.script(content=scriptCode, Extension=extensionInfoForScript, for_=useFor) scriptVal.append(scrp) tempConId = None elif j['itemType'] in ['DATA']: try: dataVal['dataUrl'] = j['filePath'] extensionInfoForData = [ pml.Extension(value=dataVal, anytypeobjs_=['']) ] except: pass tempConId = None elif j['itemType'] == 'FOLDING': # print (j) for k in j['children']: tempdata7 = self.convertToStandardJson(k) tempdata7['connectionLayerId'] = someConectionId tempConId = tempdata7['layerId'] pp = addLayer(tempdata7) netWorkInfo.append(pp) someConectionId = tempConId else: # print ('Start of tamasha$$$$$$$$$$',j) tempdata7 = self.convertToStandardJson(j) tempdata7['connectionLayerId'] = someConectionId tempConId = tempdata7['layerId'] # print ('pakda', tempdata7) pp = self.addLayer(tempdata7) netWorkInfo.append(pp) kk = pml.DeepNetwork(modelName=mName, functionName=fName, NetworkLayer=netWorkInfo, numberOfLayers=lenOfArch) tt = pml.Timestamp(datetime.now()) hd = pml.Header(copyright="Copyright (c) 2018 Software AG", Extension=extensionInfoForData, description="Neural Network Model", Timestamp=pml.Timestamp(datetime.now())) jj = pml.PMML(version="4.3Ext", script=scriptVal, Header=hd, DeepNetwork=[kk]) return jj