Как получить свертку на канал в тензорном потоке, как параметр conv2d "groups" в Pytorch? - PullRequest
1 голос
/ 22 июня 2019

Я работаю над проектом, для которого я имею в виду сеть, которая была построена в Pytorch.Один из его слоев имеет слой conv2d с группой = какое-то значение.Пока я строю проект в Tensorflow.Как мне сделать этот конкретный слой, учитывая, что я не нашел ни одного группового параметра в conv2d слое тензорного потока.Я искал в Интернете, но не смог найти ничего конкретного, например, что говорит группа, это свертка для каждого канала.Ближе всего я обнаружил tf.nn.separable_conv2d, но все еще не уверен, как установить в нем аргументы.

Слой Pytorch имеет значение conv2d(input ,weight , groups = x ), где вход и вес - 4d тензоры.Может кто-нибудь помочь, как я создаю этот слой в Tensorflow.

Ответы [ 2 ]

0 голосов
/ 22 июня 2019

Групповая свертка поддерживается в Tensorflow 1.14.0.Пожалуйста, обратитесь к этому запросу:

https://github.com/tensorflow/tensorflow/pull/25818

Разница заключается не в том, что вместо параметра 'groups' форма глубины входа может быть кратна количеству входных фильтров.

0 голосов
/ 22 июня 2019

Я думаю, вы должны проверить определение conv2d в PyTorch.Первые два параметра должны быть целыми числами, а не 4D-тензорами.

По умолчанию группа равна 1, что не следует изменять в вашем случае.Я думаю, что в Tensorfolow, если группа> 1, вы должны использовать SeparableConv2D.

Если вы увеличите группу, вы получите глубинную свертку, где каждый входной канал получает конкретные ядра как таковые.

Единственное правило, которое вы должны иметь, это то, что оба входных и выходных канала должны делиться на номер группы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...