python - 带有 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 上运行命令吗?有什么我必须添加到模型中的吗?
解决方案
实际上,问题在于 MXNet 中输入符号的默认名称是data
. 在 Keras 中,用于输入符号的默认名称似乎是/conv2d_1_input1
. 你可以做两件事:
- 将文件中的
/conv2d_1_input1
符号重命名为.-symbol.json
data
- 我对深度镜头的管理方式不是很熟悉,但是如果您可以访问执行此操作的代码:在本教程
Module(..., data_names=['data'])
中将其替换为Module(..., data_names=['/conv2d_1_input1'])
like
推荐阅读
- xml - 在 GO 中解析 Xml 以获取标签中带有“:”的属性
- javascript - 从字符串中获取 xyw?
- java - 从 java pojo 生成 swagger yaml 模型定义
- c++ - 如何捕获 ofstream 异常
- sas - SAS:按ID分组并将ID变量中的条件数相加
- vba - VBA application.Ontime TimeValue 不运行
- android - Android防止后退按钮关闭应用程序
- java - Java:字体未在新窗口中显示
- proxy - 如何使 mitmproxy 使用反向代理拦截来自所有端口的所有流量?
- mysql - Laravel - 在 JS/Http 中使用 SQL id 的安全方式