Ich versuche hier eine einfache Matrix zu erstellen, die für jede Probe in meinem Batch wiederholt wird. HierKeras backend.repeat_elements funktioniert nicht?
ist die Matrix:
balanceMatrix = np.array([[[5,10,10],[1,1,1],[1,1,1]]])
print(balanceMatrix.shape)
balanceMatrix = K.constant(balanceMatrix)
print(K.shape(balanceMatrix).eval())
So weit, so gut, ich habe die erwartete Matrix geformt (1,3,3). Nun möchte ich es für jede Probe in der Charge (sagen wir 60000 Proben) wiederholen. Von keras documentation, alles, was ich tun sollte, ist dies:
balanceMatrix = K.repeat_elements(balanceMatrix, 60000,axis=0)
print(K.shape(balanceMatrix).eval())
Aber dies wirft die folgenden Fehler, die ich nicht einfach zu verstehen:
IndexError Traceback (most recent call last)
<ipython-input-28-4356baf13de8> in <module>()
20 balanceMatrix = K.constant(balanceMatrix)
21 print(K.shape(balanceMatrix).eval())
---> 22 balanceMatrix = K.repeat_elements(balanceMatrix, 60000,axis=0)
23 print(K.shape(balanceMatrix).eval())
24
c:\users\ut65\appdata\local\programs\python\python35\lib\site-packages\keras\backend\theano_backend.py in repeat_elements(x, rep, axis)
743 if hasattr(x, '_keras_shape'):
744 y._keras_shape = list(x._keras_shape)
--> 745 repeat_dim = x._keras_shape[axis]
746 if repeat_dim is not None:
747 y._keras_shape[axis] = repeat_dim * rep
IndexError: tuple index out of range
Was ist los ?? Ich weiß, ich kann das mit np.repeat(balanceMatrix,60000,axis=0)
zuerst tun und dann den Keras Tensor erstellen, aber sollte nicht die Keras-Option auch funktionieren?
Thanks :) - Weißt du, warum? --- Nach dem Testen ist die Option numpy viel schneller ... –
@Daniel Entschuldigung Ich war unterwegs und konnte nicht viel in mein Handy schreiben:/Ich kenne den genauen Grund nicht, aber ich hatte ein identisches Problem in der Vergangenheit. Meine Vermutung wäre, dass Keras versucht, die Struktur * inplace * zu wiederholen und eine Konstante zu verwenden, die es zum Absturz bringt (nicht sicher, tho). Und ja, für diese Operationen, die Wiederholungsstrukturen sind, wird numpy fast immer schneller sein. Jedoch sollte die Wiederholung in numpy und dann alles zu Keras zu bewegen ähnliche Leistung haben, die sich zu Keras bewegt und dann darin wiederholt (für eine genügend große Wiederholungen). –