首页 > 解决方案 > 带有 Keras 和 MXNet 模型的 AWS Deeplens:未找到符号“数据”的 ValueError

问题描述

我有一个使用 MXNet 作为后端的 Keras 制作的 CNN 模型。我能够毫不费力地创建、训练和导出模型。但是,当我尝试将此模型加载到 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'))

有没有办法解决这个问题,或者使用 Keras 和 MXNet 作为后端来解决这个问题?我必须在 Amazon Deeplens 上运行命令吗?有什么我必须添加到模型中的吗?

标签: pythonmachine-learningkerasmxnetaws-deeplens

解决方案


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

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

推荐阅读