2016-12-21 1 views
0

Ich arbeite mit Theano Bibliothek. Ich habe 1000 Objekt der Größe 114, definiert als eine Variable der Größe 1000x114. Ich habe eine Funktion, die diese Variable nimmt und 1000 Zahlen zwischen 0 und 113 erzeugt. Ich muss eine Funktion erstellen, die für jedes der 1000 Objekte die Zahl an der Position der vorherigen Funktion annimmt. Wie kann ich es tun?Funktion zum Zugriff auf einen Tensor in Theano

das ist, was funktioniert:

input_var = T.imatrix('inputs') 
index = something 
index_fn = theano.function([input_var], index, name="index function") 

Dies ist, was nicht funktioniert:

num = input_var[:][index + 48] 
num_fn = theano.function([input_var], num, name="num function") 

Das Ergebnis der num_fn ist einfach die gleichen Daten, die ich es als Input geben.

Antwort

1

Ich weiß nicht, was die +48 tun soll, aber ich nehme an, dass Index + 48 der Vektor der Indizes ist, die Ihre Funktion zurückgegeben hat. Die Art und Weise, wie die Indexierung funktioniert (und numpy), ist, dass Ihr zweiter Ansatz mit:, die Zeilen mit Indizes im Index zurückgibt. Stattdessen müssen Sie einen Bereich verwenden, z. B .:

num = input_var[T.arange(T.shape(input_var)[0]), index + 48] 
num_fn = theano.function([input_var], num, name="num function") 
Verwandte Themen