我使用Matlab对三维卷积层进行了预训练 . 权重是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 回答
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