为什么 MXnet 中的卷积函数有一个内核参数
Why Convolution function in MXnet have a kernel parameter
我是mxnet的新手,在官方文档中,卷积层的生成可以是
conv = nd.Convolution(data=data, weight=W, bias=b, kernel=(3,3), num_filter=10)
但要求weight
参数需要取4-D张量
W = [weight_num, stride, kernel_height, kernel_width]
那么为什么我们还需要在Convolution
函数中设置一个kernel
参数呢?
kernel
参数设置内核大小,可以是:
- (width,) - 对于一维卷积
- (height, width) - 对于二维卷积
- (深度, 高度, 宽度) - 对于 3D 卷积
它只定义形状。
weight
和 bias
参数包含将要训练的实际参数。实际值将在这里。
虽然您可能可以通过提供的 weight
找出 kernel
(形状),但要求明确提供 kernel
形状而不是尝试根据传递给 weight
.
的参数
下面是一个二维卷积的例子:
# shape is batch_size x channels x height x width
x = mx.nd.random.uniform(shape=(100, 1, 9, 9))
# kernel is just 3 x 3,
# weight is num_filter x channels x kernel_height x kernel_width
# bias is num_filter
mx.nd.Convolution(data=x,
kernel=(3, 3),
num_filter=5,
weight=mx.nd.random.uniform(shape=(5, 1, 3, 3)),
bias=mx.nd.random.uniform(shape=(5,)))
在 1D、2D 或 3D 卷积的情况下解释各种参数形状的文档非常好:https://mxnet.incubator.apache.org/api/python/ndarray/ndarray.html#mxnet.ndarray.Convolution
我是mxnet的新手,在官方文档中,卷积层的生成可以是
conv = nd.Convolution(data=data, weight=W, bias=b, kernel=(3,3), num_filter=10)
但要求weight
参数需要取4-D张量
W = [weight_num, stride, kernel_height, kernel_width]
那么为什么我们还需要在Convolution
函数中设置一个kernel
参数呢?
kernel
参数设置内核大小,可以是:
- (width,) - 对于一维卷积
- (height, width) - 对于二维卷积
- (深度, 高度, 宽度) - 对于 3D 卷积
它只定义形状。
weight
和 bias
参数包含将要训练的实际参数。实际值将在这里。
虽然您可能可以通过提供的 weight
找出 kernel
(形状),但要求明确提供 kernel
形状而不是尝试根据传递给 weight
.
下面是一个二维卷积的例子:
# shape is batch_size x channels x height x width
x = mx.nd.random.uniform(shape=(100, 1, 9, 9))
# kernel is just 3 x 3,
# weight is num_filter x channels x kernel_height x kernel_width
# bias is num_filter
mx.nd.Convolution(data=x,
kernel=(3, 3),
num_filter=5,
weight=mx.nd.random.uniform(shape=(5, 1, 3, 3)),
bias=mx.nd.random.uniform(shape=(5,)))
在 1D、2D 或 3D 卷积的情况下解释各种参数形状的文档非常好:https://mxnet.incubator.apache.org/api/python/ndarray/ndarray.html#mxnet.ndarray.Convolution