Я хочу сравнить предсказанные значения yp
с моей нейронной сетью по-разному, и поэтому я использовал (обратно в моей старой реализации numpy):
idx = np.repeat(np.arange(len(yp)), len(yp))
jdx = np.tile(np.arange(len(yp)), len(yp))
s = yp[[idx]] - yp[[jdx]]
В основном создайте индексирующую сетку, которую я тогда использую. idx=[0,0,0,1,1,1,...]
while jdx=[0,1,2,0,1,2...]
. Я не знаю, есть ли более простой способ сделать это...
Во всяком случае, TensorFlow имеет tf.tile()
, но, похоже, отсутствует tf.repeat()
.
idx = np.repeat(np.arange(n), n)
v2 = v[idx]
И я получаю сообщение об ошибке:
TypeError: Bad slice index [ 0 0 0 ..., 215 215 215] of type <type 'numpy.ndarray'>
Также не работает использование константы TensorFlow для индексации:
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'>
Идея состоит в том, чтобы преобразовать мою RankNet в TensorFlow.