如何重塑预训练的权重,将它们输入到三维卷积神经网络中?

时间:2016-11-08 14:40:59

标签: filter 3d tensorflow reshape

我使用Matlab对3d卷积层进行了预训练。权重是5d张量,尺寸(512,4,4,4,160)。 [out_channels,filter_depth,filter_height,filter_width,in_channels]

现在我想将其作为初始权重输入,以便在tensorflow的tf.nn.conv3d中进行微调。我看到3d卷积神经网络的权重形状应该是:(4,4,4,160,512)。[filter_depth,filter_height,filter_width,in_channels,out_channels]。我可以使用tf.Variable()。reshape(4,4,4,160,512)吗?但是如果我只使用重塑,我觉得它不是正确的权重。

1 个答案:

答案 0 :(得分:0)

tf.transpose操作可以重新排序轴:https://www.tensorflow.org/versions/r0.11/api_docs/python/array_ops.html#transpose

如果张量input的初始形状为(512,4,4,4,160)tf.transpose(input, perm=[4,1,2,3,0])的输出张量将具有(160,4,4,4,512)的形状。

此外,您可能需要沿某些轴或轴反转权重。在张量流中,卷积实现为互相关:https://www.tensorflow.org/versions/r0.11/api_docs/python/nn.html#convolution