我使用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)吗?但是如果我只使用重塑,我觉得它不是正确的权重。
答案 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