Unity部署ONNX模型与训练验证不一致问题

         使用全连接神经网络训练了一个模型,并将模型格式转为ONNX,可以在Unity中部署的模型格式。但是遇见在python中验证输入-输出的关系时正确的,但是在unity中却出现输入输出不一致问题。

最终经过一番查找发现了问题所在,我在在Python中,对输入数据进行了标准化处理。因此在Unity中需要对输入数据执行相同的标准化过程。

scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

以下是我的代码

using UnityEngine;
using System.IO;
using System.Linq;

public class StandardizeInput : MonoBehaviour
{
    private float[] inputData;
    private float mean;
    private float stdDev;

    void Start()
    {
        string filePath = Path.Combine(Application.dataPath, "FCNN", "input_values.txt");

        if (File.Exists(filePath))
        {
            // 读取文件中的数据
            string[] fileLines = File.ReadAllLines(filePath);
            inputData = fileLines.Select(line => float.Parse(line)).ToArray();

            // 计算均值
            mean = inputData.Average();

            // 计算标准差
            stdDev = Mathf.Sqrt(inputData.Select(val => (val - mean) * (val - mean)).Average());

            Debug.Log("Mean: " + mean);
            Debug.Log("Standard Deviation: " + stdDev);

            // 对数据进行标准化
            float[] standardizedData = inputData.Select(val => (val - mean) / stdDev).ToArray();

            // 打印标准化后的数据
            foreach (var val in standardizedData)
            {
                Debug.Log("Standardized Value: " + val);
            }
        }
        else
        {
            Debug.LogError("File not found: " + filePath);
        }
    }

    // 进行标准化
    public float Standardize(float inputValue)
    {
        return (inputValue - mean) / stdDev;
    }
}

  • 10
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值