如何解决将keras模型转换为core ml模型时出错
我一直在尝试将 Keras 模型转换为核心 mlmodel。但是,在这样做的同时,我得到了多个输入和输出。我只想要以下作为输入和输出。
name: "input"
type {
imageType {
width: 256
height: 64
colorSpace: GRAYSCALE }
}
name: "output"
type {
dictionaryType {
stringKeyType {
}
}
}
我得到的当前模型。
type {
imageType {
width: 256
height: 64
colorSpace: GRAYSCALE
}
},name: "lstm1_h_in"
type {
multiArrayType {
shape: 256
dataType: DOUBLE
}
isOptional: true
},name: "lstm1_c_in"
type {
multiArrayType {
shape: 256
dataType: DOUBLE
}
isOptional: true
},name: "lstm1_h_in_rev"
type {
multiArrayType {
shape: 256
dataType: DOUBLE
}
isOptional: true
},name: "lstm1_c_in_rev"
type {
multiArrayType {
shape: 256
dataType: DOUBLE
}
isOptional: true
},name: "lstm2_h_in"
type {
multiArrayType {
shape: 256
dataType: DOUBLE
}
isOptional: true
},name: "lstm2_c_in"
type {
multiArrayType {
shape: 256
dataType: DOUBLE
}
isOptional: true
},name: "lstm2_h_in_rev"
type {
multiArrayType {
shape: 256
dataType: DOUBLE
}
isOptional: true
},name: "lstm2_c_in_rev"
type {
multiArrayType {
shape: 256
dataType: DOUBLE
}
isOptional: true
}
]
[name: "output"
type {
dictionaryType {
stringKeyType {
}
}
},name: "lstm1_h_out"
type {
multiArrayType {
shape: 256
dataType: DOUBLE
}
},name: "lstm1_c_out"
type {
multiArrayType {
shape: 256
dataType: DOUBLE
}
},name: "lstm1_h_out_rev"
type {
multiArrayType {
shape: 256
dataType: DOUBLE
}
},name: "lstm1_c_out_rev"
type {
multiArrayType {
shape: 256
dataType: DOUBLE
}
},name: "lstm2_h_out"
type {
multiArrayType {
shape: 256
dataType: DOUBLE
}
},name: "lstm2_c_out"
type {
multiArrayType {
shape: 256
dataType: DOUBLE
}
},name: "lstm2_h_out_rev"
type {
multiArrayType {
shape: 256
dataType: DOUBLE
}
},name: "lstm2_c_out_rev"
type {
multiArrayType {
shape: 256
dataType: DOUBLE
}
},name: "classLabel"
type {
stringType {
}
}
]
我正在使用此代码进行转换:
from keras.models import load_model
import coremltools as ct
class_labels = ["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","-"]
tf_keras_model = load_model("HTRAdam.h5")
mlmodel = ct.converters.keras.convert('HTRAdam.h5',input_names=['image'],output_names=['output'],class_labels=class_labels,image_input_names='image')
mlmodel.save('HTR.mlmodel')
当我在此输入图像时,我没有得到任何输出。我的意思是图像输出为零。 我进入调试模式,但在模型预测中找不到任何错误。
我猜问题可能出在编译模型上,但我不知道如何解决。 感谢您的帮助。
解决方法
如果您的模型包含 LSTM 层,Core ML 期望您手动传入 LSTM 状态,这就是您获得所有这些额外输入和输出的原因。 Keras 会为您管理此状态,但 Core ML 不会。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。