You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何保存C#实现的神经元模型训练结果数据?

神经元训练结果保存实现方案

你这个神经元的核心学习结果是私有字段weight(权重),加上可配置的Smooth(平滑系数),只要持久化存储这两个值,下次启动直接加载即可复用训练结果,无需重复训练。


步骤1:修改Neuron类暴露可读写的权重参数

原类中weight是私有字段,外部无法读写,先补充公共属性:

public class Neuron
{
    private decimal weight = 0.5m;
    // 新增公共属性,暴露权重供存读
    public decimal Weight 
    { 
        get => weight; 
        set => weight = value; 
    }
    public decimal Errors { get; private set; }
    public decimal Smooth { get; set; } = 0.0000001m;

    // 剩余原有方法保持不变
    public decimal InputData(decimal input)
    {
        return input * weight;
    }
    public decimal RestoreInputData(decimal output)
    {
        return output / weight;
    }
    public void Training(decimal input, decimal expResult)
    {
        var mainResult = input * weight;
        Errors = expResult - mainResult;
        var correction = (Errors / mainResult) * Smooth;
        weight += correction;
    }
}

方案1:纯文本文件存读(极简方案,适合当前简单场景)

只有两个参数,直接写入普通文本文件即可,代码无需引入额外依赖。

保存代码(训练完成后执行)

// 训练完成后调用,保存到当前目录的neuron_config.txt
File.WriteAllLines("neuron_config.txt", new[]
{
    neuron.Weight.ToString(),
    neuron.Smooth.ToString()
});

加载代码(程序启动时优先执行)

Neuron neuron = new Neuron();
// 判断配置文件是否存在,存在直接加载,不存在再训练
if (File.Exists("neuron_config.txt"))
{
    var lines = File.ReadAllLines("neuron_config.txt");
    neuron.Weight = decimal.Parse(lines[0]);
    neuron.Smooth = decimal.Parse(lines[1]);
    Console.WriteLine("已加载训练好的神经元参数");
}
else
{
    // 这里放你原来的训练逻辑
    decimal uk = 100;
    decimal eu = 3.34m;
    int i = 0;
    do
    {
        i++;
        neuron.Training(uk, eu);
        if (i % 700000 == 0)
        {
            Console.WriteLine($"Iteration: {i}\tIssue:\t{neuron.Errors}");
        }
    } while (neuron.Errors > neuron.Smooth || neuron.Errors < -neuron.Smooth);
    // 训练完成后保存参数
    File.WriteAllLines("neuron_config.txt", new[]
    {
        neuron.Weight.ToString(),
        neuron.Smooth.ToString()
    });
    Console.WriteLine("训练完成,参数已保存");
}

方案2:JSON序列化(规范可扩展,适合后续神经元结构升级)

用.NET内置的System.Text.Json序列化整个Neuron对象,后续如果增加其他参数也不需要修改存读逻辑。

保存代码

using System.Text.Json;

// 训练完成后序列化保存
var json = JsonSerializer.Serialize(neuron);
File.WriteAllText("neuron_config.json", json);

加载代码

Neuron neuron;
if (File.Exists("neuron_config.json"))
{
    var json = File.ReadAllText("neuron_config.json");
    neuron = JsonSerializer.Deserialize<Neuron>(json);
    Console.WriteLine("已加载训练好的神经元参数");
}
else
{
    // 原有训练逻辑,训练完成后执行序列化保存
}

内容的提问来源于stack exchange,提问作者WarmingZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 23:45:03