2017-11-13 3 views
1

Ich habe einen benutzerdefinierten Dateniterator geschrieben mit mx.io.DataIter Klasse. Was ist der einfachste Weg, um diesen Dateniterator mit Gluon Schnittstelle zu verwenden?Mxnet Gluon benutzerdefinierter Dateniterator

Ich ging durch die Dokumentation und konnte keinen einfachen Weg finden, dies zu tun. Eine meiner Ideen bestand darin, sie als Iterator zu verwenden und Daten und Label von jedem Batch wie folgt zu erhalten.

Aber das ist möglicherweise nicht optimal, da ich pro Batch verketten muss.

  1. Was ist der optimale Weg, dies zu erreichen? d. h. gibt es eine systematische
    Möglichkeit, einen einfachen benutzerdefinierten Iterator für Gluon zu schreiben?

  2. Wie füge ich Kontextinformationen in obigen Fällen hinzu?

Antwort

1

Ich denke, Ihr Ansatz funktioniert. Grundsätzlich können Sie data von batch_data.data und label von batch_data.label erhalten und sie in das Netzwerk einspeisen.

Ich bin nicht sicher, warum Sie die Daten und Beschriftungen concat - vielleicht mit Ihrer Netzwerkdefinition zu tun haben.

Wenn Sie die Daten teilen und auf mehreren GPUs trainieren müssen, können Sie dazu die Funktion gluon.utils.split_and_load verwenden.

+0

Danke Eric. Ich wünschte mir nur, es gäbe einen viel saubereren Weg, Chargendaten zu implementieren. Keine gluon-kompatible API zu haben, erscheint sehr merkwürdig und überraschend! – krishnakamathk