|
Constant declaration in Python (const.py) |
Accueil Précédent Suivant |
# -*- coding: UTF-8 -*-
#=================================================
#
# const.py
#
# Auteur J.L. PLOIX
# Societe NETRAL
#
#=================================================
class _const(object):
MonalCfgDef = "Monal.cfg"
DLLKey = 'general.monaldll'
xmldatefmt = "%Y-%m-%dT%H:%M:%S"
datetimefmt = "%d/%m/%Y %H:%M:%S"
datetimesfmt = "%d/%m/%Y %H:%M"
datetimessfmt = "%d/%m/%y %H:%M"
sqldatetime = "%d-%m-%Y %H:%M:%S"
sqldatetime2 = "%d-%m-%Y %H:%M"
datefmt = "%d/%m/%Y"
SecPerDay = 86400
MinPerDay = 1440
MaxInt2 = 32767
# constantes de fonctions d'activation
(IDENTITY, # 0
UNIT, # 1
TANH, # 2
STEP, # 3
GAUSS, # 4
SINE, # 5
EXP, # 6
QUADRATIC, # 7
ATAN, # 8
MOMENT0, # 9
MOMENT1, # 10
REVERSE, # 11
LOG, # 12
CUBIC, # 13
QUASIABS, # 14
SIGMOID, # 15
COMPLEMLENT, # 16
ROOT, # 17
ARCSH, # 18
SQR , # 19
COS, # 20
ERF, # 21
GAUSSN # 22
) = range(23)
# constantes des fonction de cout
(NULL, # 0
SQUAREDELTA, # 1
SQUARELOGDELTA, # 2
LEASTSQUAREDELTA, # 3
WEIGHTEDSQUAREDELTA, # 4
UNCLASSIFIED, # 5
WEIGHTEDCLASSIFICATION, # 6
RELATIVESQUAREDELTA, # 7
GAUSSSQUAREDELTA, # 8
CROSSEDENTROPY, # 9
EXPSQUAREDELTA # 10
) = range(11)
# constantes des fonction de proximite (Kohonen)
PSQUARE, PGAUSS = range(2)
# constantes des fonction de decroissance (Kohonen)
DREVERSE, DREVERSEROOT, DEXPONENT = range(3)
# constantes de type de fonction
ACTIVATION, COST, PROXY, DECAY = range(4)
# constantes d'appel a getInfo
(INPUT_COUNT, # 0
OUTPUT_COUNT, # 1
ORDER, # 2
TRAINABLE, # 3
TRANSPOSED, # 4
DIMENSION, # 5
LAYER_COUNT, # 6
DRIVER_CLASS, # 7
HIDDEN_COUNT, # 8
TRAIN_COUNT, # 9
BOOTSTRAP, # 10
STATUS, # 11
NODE_COUNT, # 12
MODEL_INPUT_COUNT, # 13
SYNAPSE_COUNT, # 14
DATA_COUNT, # 15
TRAIN_FUNC_INDEX, # 16
TRAINING_END, # 17
DATA_LOADED, # 18
IS_LIN, # 19
COMMENT_COUNT, # 20
MODEL_CLASS, # 21
FUNC_ACT_COUNT, # 22
FUNC_COST_COUNT, # 23
FUNC_PROX_COUNT, # 24
FUNC_DECAY_COUNT, # 25
VALID_HANDLE, # 26
BIN_STORE, # 27
TRAIN_MODEL_COUNT, # 28
BOOTSTRAP_TYPE, # 29
TRAINING_ALGORITHM,# 30
SELECTED_OUTPUT, # 31
PROXIMITY, # 32
DECAY, # 33
PROXIMITYDECAY, # 34
REVERSEMODE # 35
) = range(36)
# const de minimisation des inputs
(icNone,
icMinimisation,
icMaximisation,
icReverse,
icReverseSqrMin,
icReverseSqrDeltaMin) = range(6)
# const d'appel de GetIndexInfo
(iipIsTest, # 1 La ligne de datas fait partie du test
iipLayer, # 1 Couche du neurone dans son modèle
iiNodeNetIndex, # 1 Modele contenant le neurone (si multi modèles)
iiNLayer, # 1 number de couches dans le modele d'index Index
iipNodeLayerIndex, # 1 Index du neurone dans sa couche
iipNeuronClass, # 2 Class du neurone
iipLayerLength, # 2 Longueur de la couche d'index Index
iipSynChildren, # 2 number de synapses enfants du neurone
iipSynChildChild , # 2 Numero du neurone enfant d'indice Hi(Index) du neurone d'indice Lo(Index)
iipSynChildType, # 2 Type de lien du lien d'indice Hi(Index) du neurone d'indice Lo(Index)
iipSynChildNum, # 2 Numero de la synapse enfant d'indice Hi(Index) du neurone d'indice Lo(Index)
iiRangJacob, # 2 Rang du Jacobien de la output d'index Index
iiStateLayer, # 3 Couche du neurone de output d'state d'index Index
iiStateNodeLayerIndex # 3 Indixe dans sa couche du neurone de output d'state d'index Index *)
) = range(14)
# const de NeuronType
(ntNone,
ntSigma, # neurone somme pondéré
ntSigma2, # obsolete (somme des carrés pondérés)
ntPi, # neurone produit pondéré
ntSigmaPlus # reserve
) = range(5)
# const de fin d'apprentissage (return de TRAINING_END)
(Current, # 0
OKTarget, # 1
EpochCount, # 2
Accuracy, # 3
HighWeight, # 4
ComputeError, # 5
UserDemand, # 6
BestValid # 7
) = range(8)
# constantes de type de fichier model (return de TestFile)
(NotAModel, # 0
BinaryModelFile, # 1
ASCIIModelFile, # 2
XMLModelFile, # 3
XMLModelString, # 4
XMLMetaModelFile, # 5
CompiledModelFile # 6
) = range(7)
# constantes de type de fichier paramétres (return de TestFile)
(BinaryParamFile, # 129
ASCIIParamFile, # 130
XMLParamFile, # 131
XMLParamString, # 132
) = range(129, 129 + 4)
# const de Classes de driver (return de DRIVER_CLASS)
(UnknownClass, TRnDrv, TRnDrv_Stat, TRnDrv_Dyn, TRnDrvReseauFonction) = range(5)
(TRealVector, TRealMatrix, TSquareRealMatrix, TSymetricRealMatrix) = range(11, 15)
TLibModel = 32
ClassList = range(5)
ClassList.extend(range(11, 15))
ClassList.append(32)
# const de Classes de modeles (return de MODEL_CLASS)
(Unknown, TNeuronNetwork, TLibModel, TKohonenNetwork, TNodeModel,
TMultiParallelModel, TMultiSerieModel, TMultiModel, TModel) = range(9)
# styles de modification de reseau, avec le type du parametre
(UnknownClass, # 0
BetonnerReseau, # 1 -> NA
ModifierNeurone, # 2 -> TNeuronData
AjoutBoucle, # 3 -> TLoopDataEx
BouclageDifferentiel, # 4 -> TBoucleDiff
AjoutNeurone, # 5 -> TNeuronData
SupprimerNeurone, # 6 -> TNeuronData
DeplacerNeurone, # 7 -> TSynapseData
AbsorberNeurone, # 8 -> TSynapseData
NouvelleSynapse, # 9 -> TSynapseData
DetruireSynapse, # 10 -> TSynapseData
ModifierSynapse, # 11 -> TSynapseData
NouvelleCouche, # 12 -> TLayerData
DetruireCouche, # 13 -> TLayerData
FusionReseauNDK, # 14 -> ResFusionRec
CompacterReseau # 15 -> NA Compactage du modèle
) = range(16)
StyleModifList = range(16)
# listes de styles de modification
_ActionsNeuron = [ModifierNeurone, AjoutNeurone, SupprimerNeurone]
_ActionsSynazpse = [DeplacerNeurone, AbsorberNeurone, NouvelleSynapse, DetruireSynapse, ModifierSynapse]
_ActionsLayer = [NouvelleCouche, DetruireCouche]
_ActionsNetwork = [BetonnerReseau, CompacterReseau]
# TIndexPilotInfo = (
(iipIsTest,
iipNeuronClass,
iipLayer,
iipNodeLayerIndex,
iipLayerLength,
iipNSynEnfants,
iipSynEnfantEnfant,
iipSynEnfantType,
iipSynEnfantNum,
iiStateLayer,
iiStateNodeLayerIndex
) = range(11)
# Style de callback par les fonctions de training
(cbk_None, # = 0
cbk_TrainNumber, # = 1
cbk_TrainProgress, # = 2
cbk_TrainEnd, # = 3
cbk_InitWeight, # = 4
cbk_StartCycle, # = 5
cbk_EndCycle # = 6
) = range(7)
cbkstr = ["None", "TrainNumber", "TrainProgress", "TrainEnd", "InitWeight",
"StartCycle", "EndCycle"]
# style d'action modele
(maInitParams, # Initialisation des paramètres
maLoadTrainingData, # Chargement des training data
maNormalizeData, # Normalisation des datas
maClearComment, # Effacement des commentaires.
maConfidenceComputation,# Calcul de la matrix de dispersion
maClearTrainModelList # Effacement de la liste de modèles d'apprentissage
) = range(6)
# style d'apprentissage
TrS_Std = 0 # 1 Apprentissage standard
TrS_Simple = 0 # 1 Apprentissage standard
(
TrS_InitParam, # = 1 1 Apprentissage avec initialisation des poids dès le premier cycle
TrS_Quiet, # = 2 1 Apprentissage silencieux (pas d'envoi d'information dans ACallBack)
TrS_leverage, # = 4 1 Apprentissage puis calcul des leviers.
TrS_BootStrap # = 8 3 Apprentissage de bootstrap
) = (2**i for i in range(4))
# style de value reelle
(rpNone, # rien
rpNoiseVar, # 1 ecart-type du bruit
rpInputPotentiel, # 3 Potentiel d'input
rpMaxError, # 1 Residu Max
rpTrainAccuracy, # 1 Précision de l'apprentissage
rpStdDev, # 1 EQMA
rpPress, # 1 EQVC
rpMu, # 1 Mu
rpTrainParam, # 3 Parametre supplémentaire de la fonction de coût
rpCost, # 1 Coût d'apprentissage
rpIniDev, #
rpScale, # 1 Echelle de normalisation
rpConfLevel, # 2 Level de confiance
rpWeighting,
rpBootStrapAccuracy,
rpAmplitudeParam,
rpDecayParam,
rpProximityParam,
rpProximityInitParam
) = range(19)
# style de lectture et d'ecriture de vector
(veTrainingData, # 1 : table interne, complet, dans l'ordre de la table
veTrainingDataLong,
veTrain, # 1 : table interne, apprentissage, ordre de l'apprentissage
veTest, # 1 : table interne, test
veOutputVector, # 1 : table interne, outputs
veStateVector, # 3 : table interne, states
veLocalCost, # 2 : table interne, cout local
veErrors,
veVariables, # 1 : poids ( ou inputs pour les pilotes d'optimisation)
veNormalizationSet, # 1 : jeu de normalisation
veInOutNormalizationSet, # 1 : jeu de normalisation
veExperimentalDomain, # 2 : domaine expérimental
veOutputDomain, # 2 : domaine de output
veParamDomain, # 2 : domaine paramètrique
veParamIni, # 1 : paramètres d'initialisation des poids
veJacobian, # 2 : matrix jacobienne
veDispersionMatrix, # 2 : matrix de dispersion.
veConfidenceParam, #
veConfidenceMultiplyer, #
veParamUpDownList, #
veBoolInputs,
veTrainingResult,
veBootStrapParam,
veLeverages, # 2 : table interne, leviers
veResiduals # 2 : table interne, residus
) = range(25)
# style de transfert
(trSimple, # 1 Transfert simple
trConfidence, # 2 Transfert avec confiance
trGradDir, # 3 Transfert avec gradient direct
trGrad, # 1 Transfert avec gradient
trGrads, # 2 Transfert avec gradient/poids et gradient/inputs
trGradHess, # 2 Transfert avec gradient et hessien
trGradLev, # 2 Transfert avec gradient et leviers
trInGrad, # 2 Transfert avec gradeint/inputs
trInGradHess, # 2 Transfert avec gradeint/inputs et hessien/inputs
trLev , # 2 Transfert avec leviers
trMixHess, # 3 Transfert avec Hessien mixte.
trBootstrap, # 2 Transfert avec bootstrap.
trKohonen # 2 Transfert de Kohonen.
) = range(13)
# Style de creation de code
(cd_Unknown, # = 0
cd_MainUse, # = 1
cd_MainTrain, # = 2
cd_Transfer, # = 3
cd_Gradient, # = 4
cd_TransferLev, # = 5
cd_Training, # = 6
cd_MakeUse, # = 7
cd_MakeTrain, # = 8
cd_MakeDLM, # = 9
cd_SourceDLM # = 10
) = range(11)
# Style de lecture/écriture de texte
# value Handle Ind0 Ind1 Level Returnne :
(gt_Caller, # = 0 NA NA NA 1 programme appelant
gt_ProductInfo, # = 1 NA NA NA 1 info sur NDK
gt_Version, # = 2 NA NA NA 1 version NDK
gt_FunctionName, # = 3 NA fType Index 2 fonctions disponibles(activation, co?t, voisinnage, decroissance)
gt_ModelName, # = 4 Handle NA NA 1 nom du mod?le
gt_Formula, # = 5 Handle NA NA 1 formule de calcul du mod?le
gt_ModelString, # = 6 Handle NA NA 1 XML du mod?le
gt_Comment, # = 7 Handle Index NA 1 Commentaire
gt_InputName, # = 8 Handle Index NA 1 Nom d'entr?e
gt_OutputName, # = 9 Handle Index NA 1 Nom de output
gt_Sticker, # = 10 Handle IndLayer IndNeuron 2 Etiquette d'un noeud
gt_ParameterName, # = 11 Handle Index NA 1 Nom d'un poids
gt_ModelClassName, # = 12 Handle NA NA 3 Nom de classe du mod?le
gt_StateName, # = 13 Handle Index NA 3 Nom d'?tat
gt_NodeName, # = 14 Handle IndLayer IndNeuron 2 Nom d'un noeud
gt_SaveDir, # = 15 NA NA NA 2 Repertoire de sauvegarde
gt_MatrixSubDir, # = 16 NA NA NA 2 Sous repertoire de sauvegarde des matrixs
gt_ParamFile, # = 17 Handle Index NA 0 Fichier de sauvegarde des apprentissages indexé
gt_MGL, # = 18 Handle NA NA 3 code MGL du mod?le
gt_NoiseModelFile, # = 19 Handle NA NA 3 Fichier de modèle de bruit (Ecart-typa fonction des inputs)
gt_MMLFunction, # = 20 Handle NA NA 3 Enregistrement d'une fonction MathML (Activation, Cost, Proxy, Decay)
gt_AddTrainModel, # = 21 Handle NA NA 2 Enregistrement d'un fichier de modele en liste pour l'apprentissage
gt_WorkSheet, # = 22 Handle Ind0 Ind1 2 code feuille de calcul Excel / a developper
# Ind0:
# Ind1:
gt_Code # = 23 Handle IndLang IndFct 3 code du mod?le / a developper
# IndLang : 1: C
# IndFct : Style de creation de code
) = range(24)
# IndLang du code fourni avec gt_Code
(cl_None, # 0
cl_VB, # 1 Macro Excel
cl_CHead, # 2 En-tete C
cl_CBody # 3 Corps C
) = range(4)
# IndFct du code fourni avec gt_Code
(cd_Unknown, # = 0
cd_MainUse, # = 1
cd_MainTrain, # = 2
cd_Transfer, # = 3
cd_Gradient, # = 4
cd_TransferLev, # = 5
cd_Training, # = 6
cd_MakeUse, # = 7
cd_MakeTrain, # = 8
cd_MakeDLM, # = 9
cd_SourceDLM # = 10
) = range(11)
def __init__( self ):
# dictionnaire des noms des classes de pilotes
self.driverClassNames = {
self.UnknownClass: 'Unknown',
self.TRnDrv: 'TRnDrv',
self.TRnDrv_Stat: 'TRnDrv_Stat',
self.TRnDrv_Dyn: 'TRnDrv_Dyn',
self.TRnDrvReseauFonction: 'TRnDrvReseauFonction',
self.TRealVector: 'TRealVector',
self.TRealMatrix: 'TRealMatrix',
self.TSquareRealMatrix: 'TSquareRealMatrix',
self.TSymetricRealMatrix: 'TSymetricRealMatrix',
self.TLibModel: 'TLibModel'}
# dictionnaire des noms des classes de modeles
self.modelClassNames = {
self.UnknownClass: 'Unknown',
self.TNeuronNetwork: 'TNeuronNetwork',
self.TLibModel: 'TLibModel',
self.TKohonenNetwork: 'TKohonenNetwork',
self.TNodeModel: 'TNodeModel',
self.TMultiParallelModel: 'TMultiParallelModel',
self.TMultiSerieModel: 'TMultiSerieModel',
self.TMultiModel: 'TMultiModel',
self.TModel: 'TModel'}
# dictionnaire des noms des motifs d'arrete d'apprentissage
self.trainingEndNames = {
self.Current: 'Current',
self.OKTarget: 'OKTarget',
self.EpochCount: 'EpochCount',
self.Accuracy: 'Accuracy',
self.HighWeight: 'HighWeight',
self.ComputeError: 'ComputeError',
self.UserDemand: 'UserDemand',
self.BestValid: 'BestValid'}
# dictionnaire des noms de fonctions d'activation
self.activName = {
self.IDENTITY: "IDENTITY",
self.UNIT: "UNIT",
self.TANH: "TANH",
self.STEP: "STEP",
self.GAUSS: "GAUSS",
self.SINE: "SINE",
self.EXP: "EXP",
self.QUADRATIC: "QUADRATIC",
self.ATAN: "ATAN",
self.MOMENT0: "MOMENT0",
self.MOMENT1: "MOMENT1",
self.REVERSE: "REVERSE",
self.LOG: "LOG",
self.CUBIC: "CUBIC",
self.QUASIABS: "QUASIABS",
self.SIGMOID: "",
self.COMPLEMLENT: "SIGMOID",
self.ROOT: "ROOT",
self.ARCSH: "ARCSH",
self.SQR: "SQR",
self.COS: "COS",
self.ERF: "ERF",
self.GAUSSN: "GAUSSN",
}
# dictionnaire des indices de fonction d'activation
self.activByName = {
'': self.IDENTITY,
'IDENTITY': self.IDENTITY,
'UNIT': self.UNIT,
'UNITY': self.UNIT,
'TANH': self.TANH,
'TH': self.TANH,
'STEP': self.STEP,
'GAUSS': self.GAUSS,
'GAUSSIAN': self.GAUSS,
'SINE': self.SINE,
'SIN': self.SINE,
'EXP': self.EXP,
'EXPONENT': self.EXP,
'QUADRATIC': self.QUADRATIC,
'ATAN': self.ATAN,
'ARCTAN': self.ATAN,
'MOMENT0': self.MOMENT0,
'MOMENT1': self.MOMENT1,
'REVERSE': self.REVERSE,
'LOG': self.LOG,
'LOGARITHM': self.LOG,
'CUBIC': self.CUBIC,
'QUASIABS': self.QUASIABS,
'SIGMOID': self.SIGMOID,
'COMPLEMLENT': self.COMPLEMLENT,
'ROOT': self.ROOT,
'ARCSH': self.ARCSH,
'SQR': self.SQR,
'SQARE': self.SQR,
'COS': self.COS,
'COSINE': self.COS,
'ERF': self.ERF,
'ERRORFUNCTION': self.ERF,
'NORMALIZEDGAUSS': self.GAUSSN,
'GAUSSN': self.GAUSSN}
# dictionnaire des indices des fonctions de cout
self.costByName = {
'NULL': self.NULL,
'SQUAREDELTA': self.SQUAREDELTA,
'LEASTSQUAREDELTA': self.LEASTSQUAREDELTA,
'LEASTSQUAREDELTA': self.LEASTSQUAREDELTA,
'WEIGHTEDSQUAREDELTA': self.WEIGHTEDSQUAREDELTA,
'UNCLASSIFIED': self.UNCLASSIFIED,
'BADCLASSICATION': self.UNCLASSIFIED,
'WEIGHTEDCLASSIFICATION': self.WEIGHTEDCLASSIFICATION,
'RELATIVESQUAREDELTA': self.RELATIVESQUAREDELTA,
'GAUSSSQUAREDELTA': self.GAUSSSQUAREDELTA,
'CROSSEDENTROPY': self.CROSSEDENTROPY,
'EXPSQUAREDELTA': self.EXPSQUAREDELTA,
'EXPONENTSQUAREDELTA': self.EXPSQUAREDELTA}
# dictionnaire des indices de fonctions de proximite de Kohonen
self.proxyByName = {
'SQUARE': self.PSQUARE,
'GAUSS': self.PGAUSS}
# dictionnaire des indices des fonctions de decroissance de Kohonen
self.decayByName = {
'REVERSE': self.DREVERSE,
'REVERSEROOT': self.DREVERSEROOT,
'EXPONENT': self.DEXPONENT}
def getActivIndex(self, activ):
"""Recherche de l'indice de la fonction d'activation decrite par activ.
"activ" peut etre un indice entierou un nom raccourci de fonction. Les noms
acceptes sont :
'': Identite
'IDENTITY': Identite
'UNIT': Unite
'UNITY': Unite
'TANH': Tangente hyperbolique
'TH': Tangente hyperbolique
'STEP': Echelon
'GAUSS': Gaussienne
'GAUSSIAN': Gaussienne
'SINE': Sinus
'SIN': Sinus
'EXP':Exponentielle,
'EXPONENT': Exponentielle
'QUADRATIC': Demi carre
'ATAN': Arc tangente
'ARCTAN': Arc tangente
'MOMENT0': Moment 0
'MOMENT1': Moment 1
'REVERSE': self.REVERSE,
'LOG': Logarithme
'LOGARITHM': Logarithme
'CUBIC': Cibique
'QUASIABS': Quasi absolu
'SIGMOID': Sigmoïde,
'COMPLEMLENT': Complement à 1
'ROOT': Racine carree
'ARCSH': Argument Sinus Hyperbolique
'SQR': Carre,
'SQARE': Carre,
'COS': Cosinus
'COSINE': Cosinus
'ERF': Fonction d'erreur
'ERRORFUNCTION': Fonction d'erreur
'NORMALIZEDGAUSS':Gaussienne normalisee
'GAUSSN': Gaissienne normalisee"""
import const
try:
if isinstance(activ, (int, long)): return activ
if isinstance(activ, (str, unicode)):
try:
return int(activ)
except:
return self.activByName[activ.upper()]
except: pass
raise Exception("Cannot find activation function %s" % str(activ))
class ConstError(TypeError): pass
def __setattr__(self, name, value):
if name in self.__dict__:
raise self.ConstError, "Cannot rebind const.%s" % name
self.__dict__[name] = value
def __delattr__(self, name):
if name in self.__dict__:
raise self.ConstError, "Cannot unbind const.%s" % name
raise NameError, name
import sys
sys.modules[__name__] = _const()