C# 有没有办法创建多个输入参数?

C# 有没有办法创建多个输入参数?,c#,arrays,input,parameters,neural-network,C#,Arrays,Input,Parameters,Neural Network,我为ctrader与cAlgo合作,需要许多输入参数,如上面列出的神经网络权重。有没有一种方法可以根据需要生成尽可能多的输入参数 例如,当我需要3个隐藏层之间的权重时,其中每个层有8个神经元(需要8x2个权重),我可以告诉程序类似于“double[2,8,8]”的内容,它会创建这些参数吗?当我把神经网络做得更大,并且不得不手动编写几千个输入参数时,这会非常烦人 如果权重可以直接存储在三维数组中(在哪个隐藏层之间,从哪个左节点到哪个右节点),那就更好了 (它是用c#写的) 任何帮助或提示都将不胜感

我为ctrader与cAlgo合作,需要许多输入参数,如上面列出的神经网络权重。有没有一种方法可以根据需要生成尽可能多的输入参数

例如,当我需要3个隐藏层之间的权重时,其中每个层有8个神经元(需要8x2个权重),我可以告诉程序类似于“double[2,8,8]”的内容,它会创建这些参数吗?当我把神经网络做得更大,并且不得不手动编写几千个输入参数时,这会非常烦人

如果权重可以直接存储在三维数组中(在哪个隐藏层之间,从哪个左节点到哪个右节点),那就更好了

(它是用c#写的)


任何帮助或提示都将不胜感激

把它做成一个结构就行了

public void MyAwesomeMethod(MyParamaterSruct s)
{
...
}
公共结构MyParameterStruct
{ 
公共双n11;
公共双n12;
公共双n13;
公共双n14;
}
还可以通过在每次调用方法时不复制结构(或每个值)来提高性能:

public void MyAwesomeMethod(在MyParamaterSruct s中)
{
...
}

您会发现JIT编译器通常都会为您执行这种性能技巧,从而避免您必须使参数可变。什么?不编译器需要对这样的事情非常谨慎。你在这里谈论的是100行程序的边缘案例。相反:您需要明确声明您的结构是不可变的,方法是将其设置为只读结构。PS:可变结构没有什么错。它被认为是不好的做法的唯一原因(看看这里的Microsoft;)是因为人们混淆了结构和类的行为。但是如果你能处理它,特别是需要性能,可变结构是很好的。如果你检查JIT创建的汇编代码,你会发现JIT非常有能力决定结构是否会变异,调用方是否关心它是否会变异。只读结构是C#编译器的东西,JIT并不理解它们
        [Parameter("n11", DefaultValue = 0, MinValue = -1, MaxValue = 1, Step = step)]
        public double n11 { get; set; }
        [Parameter("n12", DefaultValue = 0, MinValue = -1, MaxValue = 1, Step = step)]
        public double n12 { get; set; }
        [Parameter("n13", DefaultValue = 0, MinValue = -1, MaxValue = 1, Step = step)]
        public double n13 { get; set; }
        [Parameter("n14", DefaultValue = 0, MinValue = -1, MaxValue = 1, Step = step)]
        public double n14 { get; set; }