在领先的DeepLearning库中,过滤器卷积层中的(也称为核或权重)也在“通道”维度上进行卷积,还是同时采用所有通道?例如,如果输入维度为(60,60,10)(其中最后一个维度通常被称为“声道”)并且声道的期望输出数量是5,过滤器可以是(5,5,5,5)还是应该是(5,5,10,5)?
(60,60,10)
(5,5,5,5)
(5,5,10,5)
7fyelxc51#
它应该是(5,5,10,5)。如果忽略空间维度,Conv2d操作就像线性一样。来自TensorFlow文档link(https://www.tensorflow.org/api_docs/python/tf/nn/conv2d):给定shape batch_shape +[in_height,in_width,in_channels]的输入Tensor和shape**[filter_height,filter_width,in_channels,out_channels]**的过滤器/内核Tensor,此操作将执行以下操作:1.将滤镜展平为形状为[filter_height * filter_width * in_channels,output_channels]的二维矩阵。1.从输入Tensor中提取图像面片以形成形状的虚拟Tensor[batch,out_height,out_width,filter_height * filter_width * in_channels]。1.对于每个面片,将过滤器矩阵和图像面片向量右乘。
zpf6vheq2#
它一次占用所有通道,所以5×5×10×5应该是正确的。
julia> using Flux julia> c = Conv((5,5), 10 => 5); # make a layer, 10 channels to 5 julia> c.weight |> summary "5×5×10×5 Array{Float32, 4}" julia> c(randn(Float32, 60, 60, 10, 1)) |> summary # check it works "56×56×5×1 Array{Float32, 4}" julia> Conv(rand(Float32, (5,5,5,5))) # different weight size Conv((5, 5), 5 => 5) # 630 parameters
2条答案
按热度按时间7fyelxc51#
它应该是(5,5,10,5)。如果忽略空间维度,Conv2d操作就像线性一样。
来自TensorFlow文档link(https://www.tensorflow.org/api_docs/python/tf/nn/conv2d):
给定shape batch_shape +[in_height,in_width,in_channels]的输入Tensor和shape**[filter_height,filter_width,in_channels,out_channels]**的过滤器/内核Tensor,此操作将执行以下操作:
1.将滤镜展平为形状为[filter_height * filter_width * in_channels,output_channels]的二维矩阵。
1.从输入Tensor中提取图像面片以形成形状的虚拟Tensor[batch,out_height,out_width,filter_height * filter_width * in_channels]。
1.对于每个面片,将过滤器矩阵和图像面片向量右乘。
zpf6vheq2#
它一次占用所有通道,所以5×5×10×5应该是正确的。