Exemplo n.º 1
0
    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(
                    '<', '&lt;')

        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)
Exemplo n.º 2
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('<', '&lt;')
                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