CoreML:异常 Espresso 异常:“无效状态”:空输出 blob
Posted
技术标签:
【中文标题】CoreML:异常 Espresso 异常:“无效状态”:空输出 blob【英文标题】:CoreML: exception Espresso exception: "Invalid state": Null output blobs 【发布时间】:2021-03-25 15:23:24 【问题描述】:我使用 CoreML 在我的 ios 应用程序中运行 keras 模型,但我无法完全理解这个问题,但我认为它与应用程序无关,而是与 Keras 模型有关。我使用的是 48x48 图像,CoreML 是否支持这种尺寸?
[Espresso::handle_ex_plan] exception=Espresso 异常:“无效状态”:空输出 blob [来自第 5 层的异常:sequential/conv2d_3/BiasAdd]
2020-12-15 01:06:31.245711+0100 TSD[41213:1753543] [coreml] 错误 计算 NN 输出 -1
2020-12-15 01:06:31.245849+0100 TSD[41213:1753543] [coreml] 失败 -执行计划:错误:。计算 NN 输出时出错。
def cnn_model():
model = Sequential()
model.add(Conv2D(32, (3, 3), padding='same',
activation='relu'))
model.add(Conv2D(32, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.2))
model.add(Conv2D(64, (3, 3), padding='same', activation='relu'))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.2))
model.add(Conv2D(128, (3, 3), padding='same', activation='relu'))
model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.2))
model.add(Flatten())
model.add(keras.layers.InputLayer(input_shape=(X.shape[1],)))
model.add(Dense(512, activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(CLASSNAME_SIZE, activation='softmax'))
return model
编辑 1
根据错误描述这是有问题的层(conv2d_3/biasadd)
【问题讨论】:
【参考方案1】:我会删除这一行,
model.add(keras.layers.InputLayer(input_shape=(X.shape[1])))
从您的 Keras 模型中重试。其他一切似乎都很好,但在模型转换为 Core ML 期间,这条线可能会搞砸。
【讨论】:
移除 x.shape[1] 也降低了预测阶段的精度 好的,很高兴知道。 :-) 我真的看不出其他明显错误的东西。此时我会使用 Netron 之类的工具来查看实际的 mlmodel,看看是否有什么不合适的地方。 好的,我可以在 Netron 中查看模型后将屏幕截图发送给它吗? 用 Netron 截图编辑了问题 仅仅因为 Core ML 说错误发生在某个层上并不一定是真的。 ;-) 我会尝试到该层的模型(通过删除该层和之后的所有内容)。如果这行得通,我会尝试包括该层。如果这仍然可以,我将一个接一个地添加所有剩余的层,直到你得到错误。您添加的最后一层是存在实际问题的层。以上是关于CoreML:异常 Espresso 异常:“无效状态”:空输出 blob的主要内容,如果未能解决你的问题,请参考以下文章
Espresso 测试被后台线程阻塞。应用程序未空闲异常:“AppNotIdleException”。
CoreML 出错:源文件无效,导入 mymodel.mlmodel 时
异常类型:ValueError at /music/1/favourite/ 异常值:int() 的无效文字,基数为 10:'on'