Deep learning 反褶积层不接受带有双线性填充的5D斑点

Deep learning 反褶积层不接受带有双线性填充的5D斑点,deep-learning,caffe,Deep Learning,Caffe,有人有解决这个问题的办法吗?是否有其他类似的填充选项?或者我应该省略填充重量选项吗?我已经调整了文件,以便它对5D斑点执行双线性填充: def upsample_filt(size): """ Make a 2D bilinear kernel suitable for upsampling of the given (h, w) size. """ factor = (size + 1) // 2 if size

有人有解决这个问题的办法吗?是否有其他类似的填充选项?或者我应该省略填充重量选项吗?

我已经调整了文件,以便它对5D斑点执行双线性填充:

def upsample_filt(size):
        """
        Make a 2D bilinear kernel suitable for upsampling of the given (h, w) size.
        """
        factor = (size + 1) // 2
        if size % 2 == 1:
            center = factor - 1
        else:
            center = factor - 0.5
        og = np.ogrid[:size, :size, :size]

        return (1 - abs(og[0] - center) / factor) * \
               (1 - abs(og[1] - center) / factor) * \
               (1 - abs(og[2] - center) / factor)

def interp(net, layers):
    """
    Set weights of each layer in layers to bilinear kernels for interpolation.
    """
    for l in layers:
        m, k, d, h, w = net.params[l][0].data.shape

        if m != k and k != 1:
            print('input + output channels need to be the same or |output| == 1')
            raise
        if h != w or h != d or w != d:
            print('filters need to be square')
            raise
        filt = upsample_filt(h)
        net.params[l][0].data[range(m), range(k), :, :, :] = filt


caffe.set_device(0)
caffe.set_mode_gpu()

solver = caffe.SGDSolver('solver.prototxt')

# surgeries
interp_layers = [k for k in solver.net.params.keys() if 'Deconv' in k]
interp(solver.net, interp_layers)

#print(interp_layers)

solver.solve();

始终可以从外部手动填充图层。注意他们是如何用双线性系数(第23行)填充deconv层的。你们有你们的“第23行”的参考资料吗@对不起,我忘了提供链接:在
.prototxt
中没有其他方法来解决这个问题吗@阿比达拉曼克你能正确回答我的问题吗?这样我就可以给你信用了?当查看链接时,我无法真正看到填充层的代码@阿比德拉赫曼克