В чем разница между global_max_pool/global_avg_pool и avg_pool_2d/1d/3d?

Я попытался сравнить код учебника по классификации текста из tflearn: https://github.com/tflearn/tflearn/blob/master/examples/nlp/cnn_sentence_classification.py

И один из dennybritz: https://github.com/dennybritz/cnn-text-classification-tf

Эти 2 кода показывают разные результаты, я понимаю, что это может быть из-за того, что в учебнике по tflearn используется 1d свертка, но есть одна строка кода, которую я не понимаю:

сеть = global_max_pool (сеть)

В чем разница между global_max_pool и max_pool_2d?


person Aryo Pradipta Gema    schedule 11.03.2017    source источник


Ответы (1)


Глядя на код, они делают разные вызовы библиотеки тензорного потока:

2d_max_pool

Делает в целом то, что вы ожидаете, и возвращает (а также делает некоторые другие вещи):

tf.nn.max_pool(incoming, kernel, strides, padding)

С указанными аргументами. Это 4d тензор, аналогичный входному

global_max_pool

На самом деле выполняет довольно резкое сокращение входного тензора. Входной тензор имеет размерность:

[batch, height, width, in_channels]

Затем функция global_max_pool возвращает значение (а также выполняет некоторые другие действия)

tf.reduce_max(incoming, [1, 2])

Я думаю, что дает максимальное значение каждого тензора по всем каналам in_channels.

person user3684792    schedule 31.03.2017
comment
Я думаю, что это ответ на мой вопрос. Спасибо! - person Aryo Pradipta Gema; 31.03.2017