React Native调用Keras表情识别模型报conv2d_input维度错误如何解决
问题解决办法
核心不匹配点
- 维度数量不匹配:模型要求4维输入
(batch_size, 48, 48, 1),你当前生成的张量只有3维(48,48,3) - 通道数不匹配:模型训练用的是单通道灰度图,你当前输出的是3通道RGB图
修改后的代码逻辑
你只需要在原有图片张量处理的基础上,增加RGB转灰度、添加batch维度两步即可,完整处理代码如下:
// 原有解码+尺寸调整逻辑不变 const rgbTensor = decodeJpeg(imageData).resizeBilinear([48,48]) // 3通道RGB转单通道灰度:对最后一维(通道维)做加权平均,保留维度输出shape为[48,48,1] const grayTensor = tf.mean(rgbTensor, -1, true) // 在最前方添加batch维度,得到符合模型要求的4维张量[1,48,48,1] const inputTensor = grayTensor.expandDims(0) // 可选归一化:和训练阶段预处理对齐,若训练时将像素值除以255缩放到0~1区间,需添加这一步 const normalizedInput = inputTensor.div(255.0) // 后续直接用normalizedInput传入model.predict()即可 const prediction = model.predict(normalizedInput)
额外注意事项
推理结束后及时调用tf.dispose()清理不需要的中间张量,避免React Native端出现内存泄漏问题。
内容的提问来源于stack exchange,提问作者Areej Fatimah
相关产品推荐
相关产品推荐

