chainer中tf.densed的等价物

chainer中tf.densed的等价物,chainer,Chainer,作为该层tf.稠密态的记录,输出张量的形状与输入相同,但最后一个维度是大小单位。我试图在Chainer中有类似的行为,但没有成功 在Tensorflow中,可以有一个(32,28,28,512)张量,并将其作为输入输入输入到线性层,得到一个(32,28,28,256)。正如我所说的tf.dense,似乎当输入有两个以上的维度时,它共享权重,并且在执行函数之前不会展平输入 chainer.links.Linear会将输入展平,因此无法放入内存中。我想知道是否有可能在Chainer中具有与tf.de

作为该层tf.稠密态的记录,输出张量的形状与输入相同,但最后一个维度是大小单位。我试图在Chainer中有类似的行为,但没有成功

在Tensorflow中,可以有一个(32,28,28,512)张量,并将其作为输入输入输入到线性层,得到一个(32,28,28,256)。正如我所说的tf.dense,似乎当输入有两个以上的维度时,它共享权重,并且在执行函数之前不会展平输入


chainer.links.Linear会将输入展平,因此无法放入内存中。我想知道是否有可能在Chainer中具有与tf.dense相同的功能?

在应用
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)

我想这也行。但如果有人想避免所有的重塑,我想也可以使用一个接一个的卷积,因为它在28*28轴上共享权重。请注意,Chainer的卷积假设(N,C,H,W)顺序,所以卷积在默认情况下应用于第1轴(从0开始计数)。@corochann情况并非如此。一维卷积核的形状为(C,),而所需的形状为(CHW,)。