2017-12-18 3 views
1

Ich möchte den Tensorflow's Estimator verwenden, um das Training mit LSTM-Netzwerken zu vereinfachen. Offenbar tensorflow des Estimator zu verwenden, muss man eine Modellfunktion wie so definieren:Verwenden von Tensorflow Estimator für LSTMs zum Akzeptieren von Bildern

def some_model_fn(features, labels, mode): 
    ... 

Ich habe kein Problem Platzhalter mit den Eingängen und Etiketten zu bekommen. Wie verwandle ich Bilder in die von tensorflow lstms akzeptierte Form, die [batch_size, num_time_steps, num_features] ist?

+0

Sie müssen die Bilder glätten, bevor Sie sie in ein LSTM einspeisen, es sei denn, Sie implementieren Ihre eigene Ebene (wie eine Convolutional/lstm). Sie können das mit 'np.flatten()' tun. Für 'num_time_steps' müssen Sie das LSTM mit nachfolgenden Bildern (wie einem rollenden Fenster) füttern. Wenn Sie keine sequenziellen Bilder verarbeiten, die bei der Vorhersage des nächsten Bildes helfen würden, ist es besser, ein Faltungsnetzwerk zu verwenden oder eine Bildabflachungsstrategie anzupassen (z. B. die Zeilen- oder Spaltenpixel in einer Sequenz an LSTM zu übergeben usw.) – umutto

+0

Die Aufgabe ist Handschrifterkennung und ich füttere das Bild in vertikalen Streifen. Ich lese das Bild zuerst, dann transponiere ich es, um dies zu tun. –

Antwort

0

Ich empfehle, mit numpy Bilder zu einem mehrdimensionalen Array zu laden. Je nach Bildgröße und Anzahl der Zeitschritte ist das ziemlich viel Speicherplatz.

+0

Was ich frage ist, muss ich die Bildmaße auf Rnn Dims reduzieren oder füttere ich die Bilder, wie sie gelesen werden? –

+0

Ja, Sie müssen die Größe ändern. Sie können die Größe der Bilder mit cv2.resize oder scipy.misc.imresize ändern. Wenn die Features in Ihrem Netzwerk als 1D-Vektor eingegeben werden, können Sie das Bild nach der Größenanpassung abflachen. – Totoro

Verwandte Themen