Я просмотрел документацию tf.nn.max_pool_with_argmax, где написано
Performs max pooling on the input and outputs both max values and indices.
The indices in argmax are flattened, so that a maximum value at position [b, y, x, c] becomes flattened index ((b * height + y) * width + x) * channels + c.
The indices returned are always in [0, height) x [0, width) before flattening, even if padding is involved and the mathematically correct answer is outside (either negative or too large). This is a bug, but fixing it is difficult to do in a safe backwards compatible way, especially due to flattening.
Переменные b, y, x и c не были явно определены, поэтому у меня возникли проблемы с реализацией этого метода. Может ли кто-нибудь предоставить то же самое.






Я не могу комментировать из-за репутации.
Но я думаю, что переменные ссылаются на положение и размер окна Max Pooling. x и y - координаты x и y ядра при его перемещении вдоль входной матрицы, а b и c - ширина и высота ядра. Вы должны установить b и c в размере ядра.
Если у вас возникла проблема с реализацией максимального пула с помощью argmax, это не имеет ничего общего с этими переменными. Возможно, вы захотите указать проблему, с которой вы столкнулись с Max Pooling.
Как вы могли видеть, эти значения возвращаются в плоском формате. Поэтому для их извлечения мне пришлось бы применить математику вроде: c = ((return_value)% channels) и так далее, после этого мне пришлось использовать координаты полученного пикселя для выполнения операции кластеризации. Теперь моя проблема в том, являются ли x и y координатами пикселя в исходном изображении или (b, c) координатами. Я просмотрел исходный код github и до сих пор не могу найти, что такое b, c, x и y.