Bearbeiten

FAQ (Häufig gestellte Fragen)

Diese Seite enthält Antworten auf die häufigsten Fragen aus der Community.

Woher weiß ich, ob das ONNX-Modell, das ich verwende, unter Windows ML ausgeführt werden kann?

Die einfachste Möglichkeit, um zu überprüfen, ob das Modell mit Windows ML ausgeführt wird, ist die Verwendung des WinML Model Runner-Tools. Alternativ können Sie ONNX-Versionen und Windows-Builds überprüfen, um weitere Informationen über alle unterstützten ONNX-Versionen für eine bestimmte Windows-Version zu erhalten.

Wie konvertiere ich ein Modell mit einem anderen Format in ONNX?

Sie können WinMLTools verwenden, um Modelle verschiedener Formate, etwa Apple CoreML und scikit-learn, in ONNX zu konvertieren.

Ich erhalte Fehler beim Versuch, mein Modell in ONNX zu exportieren und/oder zu konvertieren, die besagen, dass mein Modell „nicht unterstützte Operatoren“ aufweist.   Wie sollte ich vorgehen?

Einige Operatoren im nativen Trainingsframework werden möglicherweise derzeit nicht von einer ONNX-Version unterstützt. Zunächst wird empfohlen, dass Sie die unterstützten ONNX-Versionen für das Ziel Ihres Windows-Builds überprüfen und versuchen, Ihr Modell in die maximal unterstützte Version zu konvertieren. Spätere Versionen von ONNX enthalten Unterstützung für eine größere Sammlung von Operatoren im Vergleich zu früheren Versionen.

Wenn weiterhin Probleme auftreten, empfiehlt es sich, mit Ihrem Data Science-Team zusammenzuarbeiten, um die nicht unterstützten Operatoren zu testen und zu vermeiden. Einer der von uns empfohlenen Ansätze ist es, die Architektur des Modells im Quellframework zu ändern und zu versuchen, das Modell in die ONNX-Zielversion zu konvertieren/exportieren. Beachten Sie, dass Sie das Modell noch nicht neu trainieren müssen: Sie können versuchen, die Architektur zu konvertieren. Wenn dies erfolgreich ist, können Sie mit dem vollständigen erneuten Trainieren des Modells fortfahren.

Warum kann ich ein Modell nicht laden?

Es gibt mehrere Gründe, warum Probleme beim Laden eines Modells auftreten können, aber einer der häufigsten Gründe bei der Entwicklung unter UWP sind Einschränkungen des Dateizugriffs. Standardmäßig können UWP-Anwendungen nur auf bestimmte Teile des Dateisystems zugreifen und erfordern Benutzerberechtigungen oder zusätzliche Funktionen, um auf andere Speicherorte zugreifen zu können. Weitere Informationen finden Sie unter Berechtigungen für den Dateizugriff.

Welche Version von WinMLTools sollte ich verwenden?

Es wird immer empfohlen, dass Sie die neueste Version des winmltools-Pakets herunterladen und installieren. Dadurch wird sichergestellt, dass Sie ONNX-Modelle erstellen können, die die neuesten Versionen von Windows als Ziel verwenden.

Kann ich onnxmltools anstelle von winmltools verwenden?

Ja, das ist möglich, aber Sie müssen sicherstellen, dass Sie die richtige Version von onnxmltools installieren, um ONNX v1.2.2 als Ziel zu verwenden (die von Windows ML unterstützte ONNX-Mindestversion). Wenn Sie nicht sicher sind, welche Version installiert werden soll, empfiehlt es sich, stattdessen die neueste Version von winmltools zu installieren. Dadurch wird sichergestellt, dass Sie die von Windows unterstützte ONNX-Version als Ziel verwenden können.

Welche Version von Visual Studio sollte ich verwenden, um automatische Codegenerierung (mlgen) nutzen zu können?

Die empfohlene Mindestversion von Visual Studio mit Unterstützung für mlgen ist 15.8.7. In Windows 10, Version 1903 oder höher, ist mlgen nicht mehr im SDK enthalten. Daher müssen Sie die Erweiterung herunterladen und installieren. Es gibt eine Version für Visual Studio 2017 und eine Version für Visual Studio 2019.

Beim Versuch, mlgen auszuführen, wird eine Fehlermeldung angezeigt, und es wird kein Code generiert. Was ist die mögliche Ursache?

Die beiden häufigsten Fehler beim Ausführen von mlgen sind:

  • Das erforderliche Attribut 'consumed_inputs' fehlt: Wenn Sie diese Fehlermeldung erhalten, versuchen Sie wahrscheinlich, ein ONNX v1.2-Modell mit einer Version des Windows 10 SDKs auszuführen, die älter als 17763 ist. Es wird empfohlen, Ihre SDK-Version zu überprüfen und auf Version 17763 oder höher zu aktualisieren.
  • Typfehler: Der Typ (map(string,tensor(float))) des Ausgabearguments (loss) von Knoten (ZipMap) stimmt nicht mit dem erwarteten Typ überein...: Wenn Sie auf diesen Fehler stoßen, weist Ihr ONNX-Modell höchstwahrscheinlich eine ältere als die von WinML akzeptierte Version (von Build 17763 an aufwärts) auf. Es wird empfohlen, das Konverterpaket auf die neueste verfügbare Version zu aktualisieren und das Modell erneut in Version 1.2 von ONNX zu konvertieren.

Worunter wird WinML standardmäßig ausgeführt?

Wenn Sie kein Gerät für die Ausführung mit LearningModelDeviceKind angeben oder LearningModelDeviceKind.Default verwenden, entscheidet das System, welches Gerät das Modell auswertet. Dies ist normalerweise die CPU. Um WinML auf der GPU auszuführen, geben Sie einen der folgenden Werte an, wenn Sie das LearningModelDevice erstellen:

  • LearningModelDeviceKind.DirectX
  • LearningModelDeviceKind.DirectXHighPerformance
  • LearningModelDeviceKind.DirectXMinPower

Hinweis

Verwende die folgenden Ressourcen, wenn du Hilfe mit Windows ML benötigst:

  • Wenn du technische Fragen zu Windows ML stellen oder beantworten möchtest, verwende das Tag windows-machine-learning auf Stack Overflow.
  • Wenn du einen Fehler melden möchtest, erstelle eine Anfrage auf GitHub.