MXNet Gluon - 以编程方式访问神经网络层维度?
MXNet Gluon - programmatically accessing neural net layer dimensions?
让我们首先在 MXNet Gluon 中创建一个非常基本的深度神经网络(灵感来自 this tutorial):
import mxnet as mx
from mxnet import gluon
ctx = mx.cpu()
net = gluon.nn.Sequential()
with net.name_scope():
net.add(gluon.nn.Conv2D(channels=20, kernel_size=5, activation='relu'))
net.add(gluon.nn.MaxPool2D(pool_size=2, strides=2))
现在,如果我们想打印出图层的尺寸,我们所要做的就是...
print(net[0])
# prints: Conv2D(None -> 20, kernel_size=(5, 5), stride=(1, 1), Activation(relu))
print(net[1])
# prints: MaxPool2D(size=(2, 2), stride=(2, 2), padding=(0, 0), ceil_mode=False)
但是,如果我们想以编程方式检查net[1]
的padding
,而不是将其打印出来怎么办?
- 当我尝试
net[1].padding
时,出现错误 AttributeError: 'MaxPool2D' object has no attribute 'padding'
。
- 当我尝试
net[1]['padding']
时,出现错误 TypeError: 'MaxPool2D' object is not subscriptable
。
那么,在 MXNet Gluon 中以编程方式访问神经网络层维度的正确方法是什么?
print(net[1]._kwargs["pad"])
尝试从 kwargs 字典中获取它们。在 this source.
寻找其他键
This 是代码的 Colab link。
其他键是 kernel
用于内核大小,stride
用于步幅,.
获取所有键和值:
for k, v in net[1]._kwargs.items():
print(k, v)
让我们首先在 MXNet Gluon 中创建一个非常基本的深度神经网络(灵感来自 this tutorial):
import mxnet as mx
from mxnet import gluon
ctx = mx.cpu()
net = gluon.nn.Sequential()
with net.name_scope():
net.add(gluon.nn.Conv2D(channels=20, kernel_size=5, activation='relu'))
net.add(gluon.nn.MaxPool2D(pool_size=2, strides=2))
现在,如果我们想打印出图层的尺寸,我们所要做的就是...
print(net[0])
# prints: Conv2D(None -> 20, kernel_size=(5, 5), stride=(1, 1), Activation(relu))
print(net[1])
# prints: MaxPool2D(size=(2, 2), stride=(2, 2), padding=(0, 0), ceil_mode=False)
但是,如果我们想以编程方式检查net[1]
的padding
,而不是将其打印出来怎么办?
- 当我尝试
net[1].padding
时,出现错误AttributeError: 'MaxPool2D' object has no attribute 'padding'
。 - 当我尝试
net[1]['padding']
时,出现错误TypeError: 'MaxPool2D' object is not subscriptable
。
那么,在 MXNet Gluon 中以编程方式访问神经网络层维度的正确方法是什么?
print(net[1]._kwargs["pad"])
尝试从 kwargs 字典中获取它们。在 this source.
寻找其他键This 是代码的 Colab link。
其他键是 kernel
用于内核大小,stride
用于步幅,.
获取所有键和值:
for k, v in net[1]._kwargs.items():
print(k, v)