MXNet Gluon - программный доступ к размерам слоя нейронной сети? - PullRequest
0 голосов
/ 05 июля 2019

Давайте начнем с создания базовой глубокой нейронной сети в MXNet Gluon (вдохновленной этим руководством ):

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)

Однако, вместо того, чтобы распечатать его, что если мы хотим программно проверить padding из net[1]?

  • Когда я пытаюсь net[1].padding, я получаю ошибку AttributeError: 'MaxPool2D' object has no attribute 'padding'.
  • Когда я пытаюсь net[1]['padding'], я получаю ошибку TypeError: 'MaxPool2D' object is not subscriptable.

Итак, как правильно получить программный доступ к измерениям слоя нейронной сети в MXNet Gluon?

1 Ответ

1 голос
/ 05 июля 2019

print(net[1]._kwargs["pad"])

Попробуйте получить их из словаря kwargs.Ищите другие ключи в этот источник .

Этот является ссылкой Colab для кода.

Другие ключи kernel для размера ядра, stride для шага,.

Для получения всех ключей и значений:

for k, v in net[1]._kwargs.items():
    print(k, v)
...