-1
var examples = new double[1000][][];

 for (int i = 0; i < 1000; i++)
 {
  examples[i]= new double[2][]; //the Set
  examples[i][0] = new double[] { x(i), y(i) }; //the Inputs
  examples[i][1] = new double[] { Math.Sin(x(i) * y(i)), Math.Sin(x(i) / y(i)) }; //the Target
 }

x(i)xに依存することを意味しますi

examples[][0] = new double[1000][] そして、そのような新しい配列を作成するためにより多くのメモリを消費するため、そのような入力を収集する必要があります

for (int i = 0; i < 1000; i++)
{
   input[i][0]=x(i);
   input[i][1]=y(i);
}
4

1 に答える 1

1

私が最初に考えたのは、[1000][2][2] 配列で終わった設計上の決定を再考することです。特定の中央配列値を取得して、平坦化された [1000][2] 配列を引き出します。 ..

メモリを再割り当てせずにアクセスする限り、より多くのメモリを使用せずに配列として取得することはできませんIEnumerable<double[]>yield列挙するたびに、各結果を個別に評価します)。

例えば:

public IEnumerable<double[]> GetResults()
{
  for (int i = 0; i < 1000; x++)
  {
    yield return examples[i][0];
  }
}

これがどのように役立つかは、結果をどのように使用するかによって異なりますが、より多くのメモリを使用せずに新しい配列を取得することはできません。

于 2012-06-28T00:32:29.967 に答える