debug: add logging for Math ONNX output
This commit is contained in:
@@ -311,16 +311,30 @@ func (h *Handler) Math(imageBase64 string) (result string, err error) {
|
|||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
// 不调用 GetOutputShape,直接从 output 大小推断
|
// DEBUG: 打印输出前10个值
|
||||||
// Math 模型输出固定为 [51, 1, 19] = 969 个元素 或 [19, 1, 51] = 969 个元素
|
debugStr := "ONNX output first 10: "
|
||||||
outputLen := len(output)
|
for i := 0; i < 10 && i < len(output); i++ {
|
||||||
if outputLen == 0 {
|
debugStr += fmt.Sprintf("%.4f ", output[i])
|
||||||
|
}
|
||||||
|
fmt.Println(debugStr)
|
||||||
|
|
||||||
|
// DEBUG: 对第一个位置 argmax
|
||||||
|
maxIdx := 0
|
||||||
|
maxProb := float32(-math.MaxFloat32)
|
||||||
|
for c := 0; c < 19; c++ {
|
||||||
|
if output[c] > maxProb {
|
||||||
|
maxProb = output[c]
|
||||||
|
maxIdx = c
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fmt.Printf("DEBUG: Position 0 argmax = %d (char: %s)\n", maxIdx, string("0123456789+-*/÷×=?."[maxIdx-1]))
|
||||||
|
|
||||||
|
if len(output) == 0 {
|
||||||
return "", fmt.Errorf("模型输出为空")
|
return "", fmt.Errorf("模型输出为空")
|
||||||
}
|
}
|
||||||
|
|
||||||
// 推断输出形状:已知 numChars=51, batch=1, timesteps=19, total=969
|
|
||||||
// 尝试两种格式
|
|
||||||
expr := decodeMathFromOutput(output)
|
expr := decodeMathFromOutput(output)
|
||||||
|
fmt.Printf("DEBUG: Decoded expression = '%s'\n", expr)
|
||||||
if expr == "" {
|
if expr == "" {
|
||||||
return "", fmt.Errorf("无法识别表达式")
|
return "", fmt.Errorf("无法识别表达式")
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user