Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从方法c返回数据#_C#_Methods_Return - Fatal编程技术网

C# 从方法c返回数据#

C# 从方法c返回数据#,c#,methods,return,C#,Methods,Return,我使用这种方法,需要返回权重s8spr,但我不知道如何返回。 有人能帮我吗?最简单的返回(weights8spr)不起作用,因为在输入Im中没有给出双数组 public class Run { public Run(List<dataVM2> TrainDataForStations) { double[] resultMAX1 = new double[] { 40.0, 1200.0, 100.0, 100.0, 10000.0 };

我使用这种方法,需要返回
权重s8spr
,但我不知道如何返回。 有人能帮我吗?最简单的
返回(weights8spr)
不起作用,因为在输入Im中没有给出双数组

public class Run {
    public Run(List<dataVM2> TrainDataForStations)
    {
        double[] resultMAX1 = new double[] { 40.0, 1200.0, 100.0, 100.0, 10000.0 };
        double[] resultMIN1 = new double[] { -50.0, 0.0, 0.0, 0.0, 0.0 };
        double d1 = 0.0;
        double d2 = 1.0;
        int numItemsspr = TrainDataForStations.Count;
        double[][] trainData = new double[numItemsspr][];
        Random rnd = new Random(1);
        double[][] MassiveDataspr8 = new double[numItemsspr][];
        for (var i = 0; i < numItemsspr; ++i)
        {

            trainData[i] = new double[] { TrainDataForStations[i].TemperatureC1, TrainDataForStations[i].SolarRadiation1, TrainDataForStations[i].Wetness1, TrainDataForStations[i].WindSpeed1, TrainDataForStations[i].gen1 };
        }
        int maxcol = 0;
        for (int i = 0; i < trainData.Length; i++)
        {
            if (trainData[i].Length > maxcol)
                maxcol = trainData[i].Length;
        }
        //data normalization 
        for (int j = 0; j < MassiveDataspr8.Length; j++)
        {
            MassiveDataspr8[j] = new double[maxcol];
            for (int i = 0; i < maxcol; i++)
            {
                MassiveDataspr8[j][i] = (((trainData[j][i] - resultMIN1[i]) * (d2 - d1)) / (resultMAX1[i] - resultMIN1[i])) + d1;

            }
        }
        int NumInput = 4;
        int NumHidden = 25;
        int NumOutput = 1;
        int rndSeed = 0;

        NeuralNetworkData neuralform = new NeuralNetworkData(NumInput, NumHidden, NumOutput, rnd);
        int maxEpochs = 1000;
        double learnRate = 0.005;
        double momentum = 0.001;
        double[] weights8spr = new NeuralNetworkTrainer(neuralform, rnd).Train(MassiveDataspr8, maxEpochs, learnRate, momentum);

    }
}
公共类运行{
公共运行(车站列车数据列表)
{
double[]resultMAX1=新的double[]{40.0,1200.0,100.0,100.0,10000.0};
double[]resultMIN1=新的double[]{-50.0,0.0,0.0,0.0};
双d1=0.0;
双d2=1.0;
int numItemsspr=列车数据统计。计数;
双精度[]列车数据=新双精度[numItemsspr][];
随机rnd=新随机(1);
double[]MassiveDataspr8=新的double[numItemsspr][];
对于(变量i=0;i最大列)
maxcol=列车数据[i]。长度;
}
//数据规范化
对于(int j=0;j
方法必须具有返回类型。如果它不返回值,那么这将是伪类型
void
,否则将是实类型

public class StationsTrainer {
    public double[] Run(List<dataVM2> TrainDataForStations)
    {
        ...
        double[] weights8spr = new NeuralNetworkTrainer(neuralform, rnd)
            .Train(MassiveDataspr8, maxEpochs, learnRate, momentum);
        return weights8spr;
    }
}
公共类站点培训师{
公共双[]运行(列出列车数据)
{
...
双[]权重S8SPR=新的NeuralNetworkTrainer(neuralform,rnd)
.列车(MassiveDataspr8、maxEpochs、learnRate、momentum);
返回权重s8spr;
}
}

并为该类选择一个更好的名称。例如,
StationsTrainer

您正在类的构造函数中执行该代码,并且不能更改构造函数的返回类型

您应该在类中创建一个方法并稍微重构代码

public class Run 
{        
    // default constructor not needed
    public Run()
    {
    }

    public double[] RunMethod(List<dataVM2> TrainDataForStations)
    {
        // put your code here
        // ...

        // return the double[]
        return weights8spr;
    }
}

我尝试了这个,但在
Run
中有一个错误。错误是“成员名称不能与其封闭类型相同”将类的名称更改为
StationsTrainer
。异常消息告诉您,类名称不能与方法名称相同。(成员=方法、属性等;封闭类型=类或结构。)
var run = new Run();
var weights = run.RunMethod(listOfTrainDataForStations);