TensorFlow: numpy.répéter() alternative

Je veux comparer les valeurs prédites yp de mon réseau de neurones par paires de la mode, et j'ai donc été à l'aide de (de retour dans mon ancien numpy mise en œuvre):

idx = np.repeat(np.arange(len(yp)), len(yp))
jdx = np.tile(np.arange(len(yp)), len(yp))
s = yp[[idx]] - yp[[jdx]]

Ce créer une indexation mesh que j'utilise ensuite. idx=[0,0,0,1,1,1,...] tout jdx=[0,1,2,0,1,2...]. Je ne sais pas si il y a une manière plus simple de le faire...

De toute façon, TensorFlow a un tf.tile(), mais il semble manquer un tf.repeat().

idx = np.repeat(np.arange(n), n)
v2 = v[idx]

Et j'obtiens l'erreur:

TypeError: Bad slice index [  0   0   0 ..., 215 215 215] of type <type 'numpy.ndarray'>

Il ne fonctionne pas à utiliser un TensorFlow constante pour l'indexation:

idx = tf.constant(np.repeat(np.arange(n), n))
v2 = v[idx]

-

TypeError: Bad slice index Tensor("Const:0", shape=TensorShape([Dimension(46656)]), dtype=int64) of type <class 'tensorflow.python.framework.ops.Tensor'>

L'idée est de convertir mon RankNet mise en œuvre de TensorFlow.

InformationsquelleAutor Ricardo Cruz | 2016-02-12