Ich glaube, die Theano Vektor __getitem__
Methode erwartet ein Tupel als Argument! wie folgt aus:
class Vect (object):
def __init__(self,data):
self.data=list(data)
def __getitem__(self,key):
return self.data[key[0]:key[1]+1]
a=Vect('hello')
print a[0,2]
print a[0,2]
Hier wenn a
eine gewöhnliche Liste ist eine Ausnahme erhöhen wird:
>>> a=list('hello')
>>> a[0,2]
Traceback (most recent call last):
File "<string>", line 1, in <module>
TypeError: list indices must be integers, not tuple
Aber hier ist die __getitem__
Methode ist anders und es nimmt ein Tupel als Argument.
Sie können die :
Zeichen __getitem__
wie dies passieren, wie :
bedeutet Scheibe:
class Vect (object):
def __init__(self,data):
self.data=list(data)
def __getitem__(self,key):
return self.data[0:key[1]+1]+list(key[0].indices(key[1]))
a=Vect('hello')
print a[:,2]
Sprechen über None
, kann es verwendet werden, wenn auch in einfachen Python indizieren:
>>> 'hello'[None:None]
'hello'
Ich habe nicht mit Theano, aber es scheint, es hat eine enge Integration mit NumPy, die stellt die Syntax, die Sie beschäftigen sich mit gearbeitet erreicht werden. scipy.org/doc/numpy/reference/arrays.indexing.html –
Ondrej Slinták ist korrekt. Wenn Sie den Code in https://github.com/Theano/Theano betrachten, werden Theano-Tensoren als NumPy-Arrays implementiert und lstm.py zeigt, dass slice() ein 2- oder 3-dimensionales NumPy-Array zurückgibt. Beim NumPy.array-Slicing stimmt None mit dem newaxis-Objekt überein, das einem Array eine Achse (Dimension) hinzufügt, so dass m_ [:, None] jedes Element von m_ in ein Array, z. gegeben import numpy als np; a = np.array ([[1,2], [3,4]]), dann ist a [:, None] np.array ([[[1, 2]], [[3, 4]]]) –
Stellen Sie sicher, ein grundlegendes numpy Tutorial zu tun, das vom Theano Tutorium gefolgt wird. Das wird viele Fragen beantworten. – eickenberg