2017-04-07 3 views
1

Ich versuche, die Convolutional Neural Net example of tflearn anzupassen, um eine Klassifizierung mit ~ 12000 verschiedenen Klassenlabels und mehr als 1 Million Trainingsbeispiele zu tun. Die Anzahl der Etiketten ist anscheinend ein Problem in Bezug auf den Speicherverbrauch, wenn sie nur ein einziges Mal codiert werden. Ich ordne zuerst meine String-Labels kontinuierlichen Ganzzahlen zu, übergebe diese dann als Liste an die to_categorical()-Funktion. Der folgende Code führt zu einem Memory:tflearn Label-Codierung mit einer großen Anzahl von Klassen

trainY = to_categorical(trainY, nb_classes=n_classes) 

Muss ich die Etiketten so kodieren, oder sollte ich eine andere Verlustfunktion als Quer Entropie verwenden? Kann ich mit tflearn in Chargen trainieren - kann ich einen Generator an die DNN.fit() Funktion übergeben?

Danke für jede Beratung!

+0

Möchten Sie alle Ihre Etiketten gleichzeitig verarbeiten? Der Ansatz kann ohne große Änderungen angepasst werden, aber Sie müssen diese Bilder in Stapeln verarbeiten. Es ist einfach zu viel, um es sofort in den Speicher zu laden. – mattdeak

Antwort

1

In der Regressionsschicht link können Sie festlegen, dass die Etiketten, die in sollte auf der Flucht

tflearn.layers.regression(incoming_net, 
          loss = 'categorical_crossentropy', 
          batch_size = 64, 
          to_one_hot = True, 
          n_classes = 12000) 

Auf diese Weise codiert One-Hot-Feed sind Sie bei nicht einen Speicherfehler haben sollte, weil Etiketten während des Trainings chargenpflichtig sein.

+0

Danke, genau was ich brauchte! :-) – cookiedealer

Verwandte Themen