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

时间:2019-02-15 04:14:47

标签: python machine-learning keras mxnet amazon-deeplens

我有一个使用Keras(使用MXNet作为后端)制作的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上运行命令?我必须在模型中添加一些内容吗?

1 个答案:

答案 0 :(得分:0)

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

  • /conv2d_1_input1文件中的-symbol.json符号重命名为data
  • 我对深度镜头的管理方式不是很熟悉,但是如果您可以访问执行以下操作的代码:Module(..., data_names=['data'])像下面的tutorial那样用Module(..., data_names=['/conv2d_1_input1'])代替