Tensorflow: получить самые большие записи 4D тензор - PullRequest
0 голосов
/ 23 января 2019

У меня есть тензор с именем «метки» формы [-1, 256, 256, 10], который включает в себя помеченные изображения размером 256x256, из которых я получаю три самые большие записи последнего измерения с помощью «tf.math.top_k».

Теперь я хочу извлечь три самые большие записи и сделать из них тензор формы [-1,256,256,1], чтобы отобразить его как изображение на тензорной доске.

Код работает, только это не дает мне самые большие записи в КАЖДОМ пакете, а только последний элемент в пакете.

Y = tf.placeholder_with_default(targets, shape=None, name="label")
labels = tf.reshape(Y, [-1, 256, 256, 10])
hot_labels = tf.reduce_max(labels,(1,2),keepdims=True)

top3_val,top3_idx = tf.nn.top_k(hot_labels,3)
top3_idx = tf.transpose(tf.squeeze(top3_idx))

top_labels0 = tf.gather(labels,top3_idx[0,-1],axis=-1)
top_labels0 = tf.reshape(top_labels0,[-1,256,256,1])

top_labels1 = tf.gather(labels,top3_idx[1,-1],axis=-1)
top_labels1 = tf.reshape(top_labels1,[-1,256,256,1])

top_labels2 = tf.gather(labels,top3_idx[2,-1],axis=-1)
top_labels2 = tf.reshape(top_labels2,[-1,256,256,1])

Конечная цель - найти три самые большие последние записи "меток" и показать ихв тензорном потоке каждый в виде изображения размером [-1,256,256,1].

...