XML-Exporter
Einordnung der XML-Exporter
Die von Beckhoff bereitgestellten XML-Exporter können frei genutzt und verändert werden. Sie sind quelloffen und unter MIT-Lizenz. Dies bietet Kunden die Möglichkeit, die XML-Exporter entsprechend ihren Bedürfnissen anzupassen, bspw. durch Einfügen unternehmens- oder projektspezifisicher CustomAttributes, vgl. Abschnitt XML Tag CustomAttributes.
Die XML-Exporter werden nach Installation des Produkts im Ordner
<TwinCATPath>\Functions\TF38xx-Machine-Learning\Utilities\exporter bereitgestellt.
Die XML-Exporter basieren auf speziellen Versionen der Bibliotheken Empfohlen wird das Exportieren von erstellen ML-Modellen über das ONNX-Format sowie entsprechender Konvertierung in XML oder BML. Die XML-Exporter waren in der frühen Phase von TwinCAT Machine Learning als Übergangslösung gedacht, bis alle einschlägigen Bibliotheken einen umfänglichen ONNX Support anbieten. Dies ist heute der Fall, sodass die XML-Exporter nicht mehr mit neueren Bibliotheken getestet und geupdatet werden. |
Direkter XML-Export eines MLP
Es werden nur Netzarchitekturen unterstützt, die eine sequenzielle Struktur im folgenden Sinne aufweisen: Jedes Neuron einer Schicht ist ausschließlich mit jedem Neuron der darauffolgenden Schicht verknüpft. Es ist möglich, Layer ohne Bias zu exportieren.
Export aus Keras/Tensor Flow
- Datei: KerasMlp2Xml.py
- Beispielaufruf: Beispielcode
- Voraussetzungen an die Python-Umgebung:
- Keras mit TensorFlow-Backend (Tensor Flow Version 1.15.0)
- Numpy (Version 1.17.4)
- Matplotlib
- Unterstützte Aktivierungsfunktionen: tanh, sigmoid, softmax, relu, linear/identity, exp, softplus, softsign
- Es können nur sequential models und keine functional models mit dem XML-Exporter exportiert werden. Das Modell ist entsprechend zu erzeugen mit:
from tensorflow.keras.models import Sequential
model = Sequential()
- Dropout Layer werden unterstützt (nur für Training relevant, werden beim Export ignoriert)
- Dense Layer werden unterstützt. Die Aktivierungsfunktionen müssen als Argument der Layer übergeben werden und nicht als eigenständige Aktivierungs-Layer.
from keras.layers import Activation, Dense
# this will not work !!!
model.add(Dense(64))
model.add(Activation(‘tanh’))
# this will work
model.add(Dense(64,activation=’tanh’))
- Die API ist ausführlich im Kopf der Datei KerasMlp2Xml.py beschrieben.
net2xml(net,output_scaling_bias=None,output_scaling_scal=None)
net
, obligatorisch, Klasse des trainierten Modellsoutput_scaling_bias
, optional, Liste (bei mehreren Features) sonst float oder intoutput_scaling_scal
, optional, Liste (bei mehreren Features) sonst float oder int- Rückgabe ist ein String-Dokument, welches als XML gespeichert werden kann.
Export aus MATLAB®
- Datei: MatlabMlp2Xml.m
- Beispielaufruf: ExampleMatlabMLP
- Voraussetzungen an die MATLAB®-Umgebung:
- MATLAB®
- Deep Learning Toolbox
- Unterstützte Aktivierungsfunktionen: tanh, sigmoid, softmax, relu, linear/identity
- Unterstützte Modelle der Deep Learning Toolbox: fitnet, patternnet
- ProcessFcns werden unterstützt vom Typ mapminmax und mapstd
- Die Nutzung von ProcessFcns ist optional
- Wird eine ProcessFcn in der Ouput-Layer verwendet, muss dessen Aktivierungsfunktion purelin sein
- Die API ist ausführlich im Kopf der Datei MatlabMlp2Xml.m beschrieben
MatlabMlp2Xml(net, fnstr, varargin)
- net, obligatorisch, Klasse des trainierten Modells
- fnstr, obligatorisch, String mit Pfad und Dateiname
- output_scaling_bias, optional, Vektor
- output_scaling_scal, optional, Vektor
Direkter XML-Export einer SVM
Export aus Scikit-learn
- Datei: SciKitLearnSvm2Xml.py
- Beispielaufruf: ExampleScikitLearnSVM
- Voraussetzungen an die Python-Umgebung:
- Python Interpreter: 3.6 oder höher
- Scikit-learn: Version 0.22.0 oder höher
- Matplotlib
- Numpy
- Es können nur numerische Class-Labels exportiert werden.
- Unterstützte Klassen bzw. Modelle: SVC, NuSVC, OneClassSVM, SVR, NuSVR
- LinearSVR und LinearSVC werden vom Exporter nicht unterstützt, können aber alternativ über die Klassen SVR und SVC mit jeweils linearem Kernel umgesetzt werden.
- Unterstützte Kernel-Funktionen: Linear, rbf, sigmoid, polynomial
- Individuelle Kernel-Funktionen sowie precomputed Funktionen werden nicht unterstützt
- Anmerkungen zu Modellparametern:
- Gamma = scale wird nicht unterstützt
- Gamma = auto_deprecated: Es wird exportiert gamma = 0.0
- Gamma = auto: Es wird gamma = 1/n_features exportiert.
- C = inf wird nicht unterstützt
- decision_function_shape = ovr wird nicht unterstützt. Es muss decision_function_shape = ovo verwendet werden. Default in Scikit-learn ist ovr!
- break_ties wird ignoriert, da decision_function_shape = ovr nicht unterstützt wird.
- Die API ist ausführlich im Kopf der Datei SciKitLearnSvm2Xml.py beschrieben.
svm2xml(svm, input_scaling_bias=None, input_scaling_scal=None)
net
, obligatorisch, Klasse des trainierten Modellsinput_scaling_bias
, optional, Liste (bei mehreren Features) sonst float oder intinput_scaling_scal
, optional, Liste (bei mehreren Features) sonst float oder int- Rückgabe ist ein String-Dokument, welches als XML gespeichert werden kann.