Функция, которая в настоящее время широко используется в учебниках и других местах, имеет вид:
conv_out = conv2d(
input= x, # some 4d tensor
filters= w, # some shared variable
filter_shape= [ nkerns, stack_size, filter_height, filter_width ],
image_shape= [ batch_size, stack_size, height, width ]
)
Если для первого слоя CNN у меня есть
filter_shape
как[ 20, 1 , 7, 7 ]
, что означает количество ядер, равное 20, каждое 7 X 7, что означает «1»? Мойimage_shape
это[100, 1, 84, 84 ]
.Эта свертка теперь выводит тензор формы
[ 100, 20, 26, 26]
, которую я понимаю. Мой следующий слой теперь принимает параметрыfilter_shape
=[50, 20, 5 ,5 ]
,image_shape
=[ 100, 20 ,26, 26 ]
и выдает форму[ 100 ,50 ,11 ,11 ]
. Кажется, я понимаю эту операцию, за исключением того, что если я хочу использовать слой фильтров «50», каждый из которых работает с предыдущими 20 созданными картами объектов, не должен ли я создавать всего 1000 карт объектов вместо создания всего 50 карт объектов? Чтобы повторить мой вопрос, у меня есть стек из 20 карт функций, каждая из которых запускает 50 ядер свертки, не должна ли моя выходная форма быть[100, 1000, 11, 11]
вместо[ 100, 50 , 11, 11]
?