эквивалент tf.dense в цепочке - PullRequest
       7

эквивалент tf.dense в цепочке

0 голосов
/ 20 декабря 2018

Поскольку документация состояний tf.dense для этого слоя, тензор вывода имеет ту же форму, что и входные данные, за исключением того, что последнее измерение имеет размерные единицы.Я пытался иметь похожее поведение в Chainer, но у меня ничего не получилось.

В Tensorflow можно получить (32, 28, 28, 512) тензор и передать его в качестве входных данных в линейный слой и получить (32, 28, 28, 256).Как я исследовал в отношении tf.dense, похоже, что когда вход имеет более двух измерений, он разделяет веса и не выравнивает ввод перед выполнением функции.

chainer.links.Linear действительно сглаживает ввод, и в результате он не помещается в память.Мне было интересно, возможно ли иметь такую ​​же функциональность, как в tf.dense, как-нибудь в Chainer?

1 Ответ

0 голосов
/ 20 декабря 2018

Как насчет reshape ввода до и после применения L.Linear?

import chainer.functions as F
import chainer.links as L

l = L.Linear(512, 256)

# x is (32, 28, 28, 512)
s0, s1, s2, s3 = x.shape
h= F.reshape(x, (s0*s1*s2, s3)
h = l(h)
h = F.reshape(x, (s0, s1, s2, 256))
# Now h should be (32, 28, 28, 256)
...