AWS Deeplens with Keras 和 MXNet 模型:找不到符号'data'的 ValueError



我有一个CNN模型,我使用MXNet作为后端使用Keras制作。我能够顺利创建、训练和导出模型。但是,当我尝试将此模型加载到DeepLens时,出现以下错误:

ValueError: [91mYou created Module with Module(..., data_names=['data']) but input with name 'data' is not found in symbol.list_arguments(). Did you mean one of:
/conv2d_1_input1
conv2d_1/kernel1
conv2d_1/bias1
conv2d_2/kernel1
conv2d_2/bias1
conv2d_3/kernel1
conv2d_3/bias1
dense_1/kernel1
dense_1/bias1
dense_2/kernel1
dense_2/bias1
dense_3/kernel1
dense_3/bias1[0m

我从来没有为名为data的符号提出论据。所有其他符号都有意义,因为它们是从我的模型派生的。我在下面添加了与Keras CNN创建相关的所有代码。

model = Sequential()
model.add(Conv2D(8, (1,1), input_shape=inputShape))
model.add(Dropout(0.5))
model.add(Activation('relu'))
model.add(Conv2D(16, (1,1), padding='same'))
model.add(Dropout(0.5))
model.add(Activation('relu'))
model.add(Conv2D(32, (1,1), padding='same'))
model.add(Dropout(0.5))
model.add(Activation('relu'))
model.add(Flatten())
model.add(Dense(240))
model.add(Activation('relu'))
model.add(Dense(120))
model.add(Dense(2))
model.add(Activation('sigmoid'))

有没有办法解决这个问题,或者有办法使用 MXNet 作为后端的 Keras 来解决这个问题?我是否必须在 Amazon Deeplens 上运行命令?我必须向模型添加一些内容吗?

实际上,问题在于MXNet中输入符号的默认名称是data。在 Keras 中,用于输入符号的默认名称似乎是/conv2d_1_input1. 您可以做两件事:

  • -symbol.json文件中的/conv2d_1_input1符号重命名为data
  • 我不太熟悉深度镜头的管理方式,但是如果您可以访问以下代码:Module(..., data_names=['data'])将其替换为本教程中的Module(..., data_names=['/conv2d_1_input1'])

最新更新