def writePmml(pmmlObj, filepath, lockForPMML): try: lockForPMML.acquire() pmmlObj = removeExtraNewLinesFromWeights(pmmlObj) scrptVal2 = [] scrptVal = pmmlObj.script if len(scrptVal) > 0: for num, sc in enumerate(scrptVal): urlOfScript = sc.class_ useFor = sc.for_ code = None scripCode = sc.get_valueOf_() code = scripCode.lstrip('\n') lines = [] code = scripCode.lstrip('\n') leading_spaces = len(code) - len(code.lstrip(' ')) for line in code.split('\n'): lines.append(line[leading_spaces:]) code = '\n'.join(lines) scriptCode = code.replace('<', '<') # print (scriptCode) scrp = pml.script(content=scriptCode, class_=urlOfScript, for_=useFor) scrptVal2.append(scrp) pmmlObj.script = scrptVal2 # print ('Code Step 10.1') pmmlObj.export(open(filepath, 'w'), 0) # print('>>>>>>>>>>>, PMML written') except Exception as e: print('>>>>>>>>>>>> ', str(e)) finally: lockForPMML.release()
def writePmml(pmmlObj, filepath, lockForPMML): _deepNetworkObj = pmmlObj.DeepNetwork[0] _deepNetworkObj.modelName = 'model1' _deepNetworkObj.taskType = "trainAndscore" pmmlObj.DeepNetwork[0] = _deepNetworkObj # print ('came to write') try: lockForPMML.acquire() pmmlObj = removeExtraNewLinesFromWeights(pmmlObj) scrptVal2 = [] scrptVal = pmmlObj.script if len(scrptVal) > 0: for num, sc in enumerate(scrptVal): scriptPurpose = sc.scriptPurpose modelVal = sc.for_ classVal = sc.class_ filePathUrl = sc.filePath scriptOutput = sc.scriptOutput code = None scripCode = sc.get_valueOf_() code = scripCode.lstrip('\n') lines = [] code = scripCode.lstrip('\n') leading_spaces = len(code) - len(code.lstrip(' ')) for line in code.split('\n'): lines.append(line[leading_spaces:]) code = '\n'.join(lines) scriptCode = code.replace('<', '<') # scrp=pml.script(content=scriptCode,for_=modelVal,class_=taskTypeVal,scriptPurpose=scriptPurpose,scriptOutput=scriptOutput,filePath=filePathUrl) scrp = pml.script(content=scriptCode, for_=modelVal, class_=classVal, scriptPurpose=scriptPurpose, scriptOutput=scriptOutput, filePath=filePathUrl) scrptVal2.append(scrp) pmmlObj.script = scrptVal2 # print ('Code Step 10.1') pmmlObj.export(open(filepath, 'w'), 0) # print('>>>>>>>>>>>, PMML written') except Exception as e: print('>>>>>>>>>>>> ', str(e)) finally: lockForPMML.release()
def addLayerToPMML(_positionOfLayer, toUpdateLayer, processedOutput, pmmlObject): def checkIfFlushRequired(_oldPosition, _newPositon, _pmmlLayer, _networkLayers): if _oldPosition == _newPositon: if (_pmmlLayer.LayerParameters.inputDimension == _networkLayers[_oldPosition].LayerParameters. inputDimension) & ( _pmmlLayer.LayerParameters.outputDimension == _networkLayers[_oldPosition]. LayerParameters.outputDimension): return False else: return True else: return True if processedOutput['itemType'] == 'LAYER': _inputForPMML = nyokaPMMLUtilities.convertToStandardJson( processedOutput) # print ('',_inputForPMML) _pmmlOfLayer = nyokaPMMLUtilities.addLayer(_inputForPMML) # print('>>>>>>>',_pmmlOfLayer.__dict__) _deepNetworkObj = pmmlObject.DeepNetwork[0] # print ('step 1') _NetworkLayersObject = _deepNetworkObj.NetworkLayer # print ('step 2') _idsOfNetworklayer = [i.layerId for i in _NetworkLayersObject] flushMemory = False if toUpdateLayer == True: _oldPositionOFLayer = _idsOfNetworklayer.index( processedOutput['layerId']) # print('>>>> layer id is ',processedOutput['layerId']) # print('>>>> old position to delete',_oldPositionOFLayer) # print('>>>> new position ',_positionOfLayer) # print ('_idsOfNetworklayer',_idsOfNetworklayer) flushMemory = checkIfFlushRequired(_oldPositionOFLayer, _positionOfLayer, _pmmlOfLayer, _NetworkLayersObject) # print('flushmemory is ',flushMemory) if flushMemory == False: _NetworkLayersObject[ _oldPositionOFLayer].Extension = _pmmlOfLayer.Extension _pmmlOfLayer = _NetworkLayersObject[ _oldPositionOFLayer] del _NetworkLayersObject[_oldPositionOFLayer] _NetworkLayersObject.insert(_positionOfLayer, _pmmlOfLayer) # print ('step 3') if flushMemory == True: _NetworkLayersObject = resetNetworkLayer( _NetworkLayersObject, _positionOfLayer) # print ('step 6') _NetworkLayersObject = reorderIdsOfPmml(_NetworkLayersObject) _deepNetworkObj.NetworkLayer = _NetworkLayersObject _deepNetworkObj.numberOfLayers = len(_NetworkLayersObject) _deepNetworkObj.modelName = 'model1' _deepNetworkObj.taskType = "trainAndscore" pmmlObject.DeepNetwork[0] = _deepNetworkObj elif processedOutput['itemType'] == 'DATA': # print ("DATA layer came",processedOutput['filePath']) try: dataUrl = processedOutput['filePath'] # if processedOutput['for']: # dataTagValues=pml.Data(filePath=dataVal,for_=processedOutput['for']) # else: dataTagValues = pml.Data(filePath=dataUrl, for_='model1') pmmlObject.Data = [dataTagValues] # print ('Data Step 3') # pmmlObject.export(sys.stdout,0) except: pass elif processedOutput['itemType'] == 'CODE': print("CODE layer came") # print ('processedOutput',processedOutput) try: scrptVal = pmmlObject.script urlOfScript = processedOutput['url'] filePathUrl = processedOutput['filePath'] scriptFile = open(processedOutput['filePath'], 'r') scriptCode = scriptFile.read() scriptCode = scriptCode.replace('<', '<') # print (scriptCode) modelVal = 'model1' taskTypeVal = processedOutput['taskType'] scriptPurpose = processedOutput['scriptPurpose'] scriptOutput = processedOutput['scriptOutput'] scrp = pml.script(content=scriptCode, for_=modelVal, class_=taskTypeVal, scriptPurpose=scriptPurpose, scriptOutput=scriptOutput, filePath=filePathUrl) scrp.export(sys.stdout, 0) scrptVal.append(scrp) pmmlObject.script = scrptVal # print ('Code Step 10') # pmmlObject.export(sys.stdout,0) except: pass return (pmmlObject)
def addLayerToPMML(_positionOfLayer, toUpdateLayer, processedOutput, pmmlObject): def checkIfFlushRequired(_oldPosition, _newPositon, _pmmlLayer, _networkLayers): if _oldPosition == _newPositon: if (_pmmlLayer.LayerParameters.inputDimension == _networkLayers[_oldPosition].LayerParameters. inputDimension) & ( _pmmlLayer.LayerParameters.outputDimension == _networkLayers[_oldPosition]. LayerParameters.outputDimension): return False else: return True else: return True if processedOutput['itemType'] == 'LAYER': _inputForPMML = nyokaPMMLUtilities.convertToStandardJson( processedOutput) # print ('',_inputForPMML) _pmmlOfLayer = nyokaPMMLUtilities.addLayer(_inputForPMML) # print('>>>>>>>',_pmmlOfLayer.__dict__) _deepNetworkObj = pmmlObject.DeepNetwork[0] # print ('step 1') _NetworkLayersObject = _deepNetworkObj.NetworkLayer # print ('step 2') _idsOfNetworklayer = [i.layerId for i in _NetworkLayersObject] flushMemory = False if toUpdateLayer == True: _oldPositionOFLayer = _idsOfNetworklayer.index( processedOutput['layerId']) # print('>>>> layer id is ',processedOutput['layerId']) # print('>>>> old position to delete',_oldPositionOFLayer) # print('>>>> new position ',_positionOfLayer) # print ('_idsOfNetworklayer',_idsOfNetworklayer) flushMemory = checkIfFlushRequired(_oldPositionOFLayer, _positionOfLayer, _pmmlOfLayer, _NetworkLayersObject) # print('flushmemory is ',flushMemory) if flushMemory == False: _NetworkLayersObject[ _oldPositionOFLayer].Extension = _pmmlOfLayer.Extension _pmmlOfLayer = _NetworkLayersObject[ _oldPositionOFLayer] del _NetworkLayersObject[_oldPositionOFLayer] _NetworkLayersObject.insert(_positionOfLayer, _pmmlOfLayer) # print ('step 3') if flushMemory == True: _NetworkLayersObject = resetNetworkLayer( _NetworkLayersObject, _positionOfLayer) # print ('step 6') _NetworkLayersObject = reorderIdsOfPmml(_NetworkLayersObject) _deepNetworkObj.NetworkLayer = _NetworkLayersObject _deepNetworkObj.numberOfLayers = len(_NetworkLayersObject) pmmlObject.DeepNetwork[0] = _deepNetworkObj elif processedOutput['itemType'] == 'DATA': # print ("DATA layer came") extensionInfoForData = [ pml.Extension(value=[], anytypeobjs_=['']) ] dataVal = {} try: dataVal['dataUrl'] = processedOutput['filePath'] extensionInfoForData = [ pml.Extension(value=dataVal, anytypeobjs_=['']) ] pmmlObject.Header.Extension = extensionInfoForData # print ('Data Step 3') # pmmlObject.export(sys.stdout,0) except: pass elif processedOutput['itemType'] == 'CODE': # print ("CODE layer came") try: scrptVal = pmmlObject.script urlOfScript = processedOutput['url'] scriptFile = open(processedOutput['filePath'], 'r') scriptCode = scriptFile.read() scriptCode = scriptCode.replace('<', '<') # print (scriptCode) useFor = processedOutput['useFor'] scrp = pml.script(content=scriptCode, class_=urlOfScript, for_=useFor) # scrp.export(sys.stdout,0) scrptVal.append(scrp) pmmlObject.script = scrptVal # print ('Code Step 10') # pmmlObject.export(sys.stdout,0) except: pass return (pmmlObject)
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