У меня следующая проблема: у меня есть скрипт в Керасе, который работает как шарм. Я хотел бы сейчас преобразовать этот скрипт в MXNet. CNN в Керасе выглядит следующим образом:
model=Sequential()
model.add(Convolution2D(128, (3, 3), padding='same', activation='relu', name='block1_conv1', input_shape=(80,120,3)))
model.add(MaxPooling2D((2, 2), strides=(2, 2)))
model.add(Convolution2D(256, (3, 3), padding='same', activation='relu', name='block2_conv1'))
model.add(MaxPooling2D((2, 2), strides=(2, 2)))
model.add(Flatten())
model.add(Dense(2, activation = 'softmax', name='final_fully_connected'))
Я подумал, что преобразование в MXNet не может быть таким сложным, я посмотрел соответствующую документацию и передал параметры, насколько мне известно.
model=gluon.nn.Sequential()
with model.name_scope():
model.add(gluon.nn.Conv2D(channels=128, kernel_size=(3, 3), activation='relu'))
model.add(gluon.nn.MaxPool2D(pool_size=(2, 2), strides=(2, 2)))
model.add(gluon.nn.Conv2D(channels=256, kernel_size=(3, 3), activation='relu'))
model.add(gluon.nn.MaxPool2D(pool_size=(2, 2), strides=(2, 2)))
# The Flatten layer collapses all axis, except the first one, into one axis.
model.add(gluon.nn.Flatten())
model.add(gluon.nn.Dense(2, activation='relu'))
Но если я попытаюсь обучить модель сейчас, я получу следующую ошибку:
"MXNetError: [17:01:34] C: \ ci \ libmxnet_1533399150922 \ work \ src \ operator \ nn \ pooling.cc: 145: Ошибка проверки: param.kernel [1] <= dshape [3] + 2 * param.pad [1] размер ядра (2) превышает ввод (1 дополняется до 1) "</p>
Я думаю, что это как-то связано с размерами ядра и слоя MaxPooling2D, но я не понимаю ошибки, потому что думал, что на самом деле строил ту же сеть, что и в Keras.
Для полноты: моя входная переменная X имеет размеры (80, 120, 3).
Я был бы очень признателен за помощь некоторых профессионалов Keras / MXNet.