введите описание изображения здесь Я работал над своей проблемой, и все же я перегружен многими функциями. Я ищу использовать tf.top_k и вернуться к первому изображению. Может ли кто-нибудь, знакомый с tenorflow, помочь мне решить эту проблему?
Вопрос в деталях: изображение (4 на 4) в качестве тензора -> tf.top_k -> 4 значения (2 на 2) и 4 индекса (2 на 2) -> фрагмент -> изображение (4 4) в качестве тензора
Например, представьте, что у нас есть одно изображение
image = np.array([[1, 2, 3, 4],
[7, 8, 9, 10],
[19, 20, 21, 22],
[25, 26, 27, 28]])
x = tf.placeholder(tf.float32, [None, img_height, img_width, 1], name='x')
patches = tf.extract_image_patches(x, [1, 2, 2, 1], [1, 2, 2, 1], [1, 1, 1, 1], "SAME")
ktop, indices = tf.nn.top_k(patches, k=4, sorted=True, name=None)
Теперь я хочу дать ktop и индексы, чтобы снова получить изображение, подобное первому состоянию
image = np.array([[1, 2, 3, 4],
[7, 8, 9, 10],
[19, 20, 21, 22],
[25, 26, 27, 28]])
Я пробовал много вещей, таких как tf.one_hot, tf.gatter и т. Д., Но я не смог получить (4, 4) изображение. У меня должен быть тензор на входе и выходе, и кажется, что я не могу использовать NumPy или для циклов. Я задавал подобный вопрос раньше, но я спрашиваю здесь снова с более ясным объяснением.
Не могли бы вы, пожалуйста, кто-нибудь помочь решить этот вопрос. Это должно быть легко для других, но для меня это сложно.
Этот фрагмент дал мне первое изображение, но не как (1, 4, 4, 1), и вместо этого он дал как (2, 2, 2, 2) или другие формы.
z1 = tf.assign(z1, tf.reshape(tf.gather(ktop[0, 0, 0, :], [indices[0, 0, 0, :]]), [2, 2]))
z2 = tf.assign(z2, tf.reshape(tf.gather(ktop[0, 0, 1, :], [indices[0, 0, 1, :]]), [2, 2]))
z3 = tf.assign(z3, tf.reshape(tf.gather(ktop[0, 1, 0, :], [indices[0, 1, 0, :]]), [2, 2]))
z4 = tf.assign(z4, tf.reshape(tf.gather(ktop[0, 1, 1, :], [indices[0, 1, 1, :]]), [2, 2]))
z = tf.concat([[z1, z2], [z3, z4]], 0)