Übersicht über die EvalDLL-Auswertung
Die EvalDLL-Bibliothek stellt Methoden bereit, um vorab trainierte CNTK Modelle zu bewerten, die im CNTK Model-v1-Format gespeichert werden. Es ist in C++ (auf Windows und Linux) und C# (nur auf Windows) verfügbar.
Auswerten verschiedener Datentypen und Ebenen
Derzeit unterstützt die Eval-Bibliothek Vektoren für Eingabe und Ausgabe. Das bedeutet, dass der Eingabevektor den Eingabeknoten im Modell (Features) entspricht. Einige Modelle werden jedoch mit Bildern (z. B. CIFAR-10) trainiert, diese Bilder werden jedoch zuerst vektorisiert und dann in das Netzwerk eingespeist. Beispielsweise besteht der CIFAR-10-Datensatz aus kleinen Bildern (32 Pixel um 32 Pixel) oder RGB-Werten. Obwohl jede eine 3dimensionale Koordinate (Breite, Höhe, Farbe) ist, wird die Daten in einen 1-dimensionalen Vektor vektorisiert. Daher ist es wichtig, die Rohdaten vor der Auswertung in das Vektorformat zu konvertieren. Diese Konvertierung sollte auf dieselbe Weise durchgeführt werden, wie bei der Einführung in das Netzwerk für Schulungen.
Weitere Informationen finden Sie auf der Seite "Bildtransformationen auswerten ", insbesondere beim Umgang mit Bildern.
Obwohl ein bereits trainiertes Modell über einen bestimmten Satz von Ausgabeknoten verfügt, ist es manchmal wünschenswert, die Werte anderer Knoten während der Auswertung zu erhalten (z. B. ausgeblendete Ebenen). Dies ist mit der programmgesteuerten Schnittstelle möglich, finden Sie auf der Seite "Ausgeblendete Ebenen auswerten " weitere Informationen.
Aktuelle Einschränkungen
- Einzelne Thread-Auswertung. Die CNTK AuswertungS-EvalDll-Bibliothek und durch Erweiterung die verwaltete EvalWrapper-Bibliothek sind single threaded und single re-entrancy. Gleichzeitige Auswertungen einer einzelnen Modellinstanz werden nicht unterstützt. Es ist jedoch möglich, mehrere Instanzen eines Modells zu laden und jedes Modell mit einem einzelnen Thread zu bewerten. Dadurch können mehrere Modelle parallel ausgewertet werden, aber jedes Modell mit einem einzelnen Thread.
- Jedes Programm, das die vordefinierten Auswertungsbibliotheken (
Cntk.Eval
undCntk.Eval.Wrapper
DLLs in Windows undlibCntk.Eval
linux) des CNTK Binärpakets verknüpft, sollte die gleiche Compilerversion verwenden, wie dies zum Erstellen der vordefinierten Bibliotheken verwendet wird.