通过神经网络中的函数将数据从二维数组保存到文件中

时间:2015-02-04 10:26:11

标签: c++ multidimensional-array 2d neural-network

我是神经网络的新手。我有2个功能。初始化权重和保存权重。当我初始化权重时,我还需要将它们保存在单独的文件中。

我有以下代码:

//Function for saving weights
void saveWeights(int Hidden, int Inputs, double arr[][?]){
  //double arr[][?];
  ofstream myfile;
  myfile.open("weights.txt");
     for(int j = 0;j<Hidden;j++){
        for(int i = 0;i<Inputs;i++){
            myfile<<arr[i][j]<<endl;
        }
     }
    myfile.close();
}

// set weights to random numbers
void initWeights(void){
     for(int j = 0;j<numHidden;j++){
        weightsHO[j] = getRand(0,1);
        for(int i = 0;i<numInputs;i++){
         weightsIH[i][j] = getRand(0,1);
         cout<<"Weights = "<<weightsIH[i][j]<<endl;
         saveWeights(numHidden, numInputs, weightsIH[i][j]);             
        }
      }
}

问题是我不知道要为2D数组中的列传递什么值,因为它是一个可变长度数组。

你能指导下一步做什么吗?

我也尝试了以下内容:

    //Function for saving weights
void saveWeights(double w){
  ofstream myfile;
  myfile.open("weights.txt");
            myfile<<w<<endl;
    myfile.close();
}

// set weights to random numbers
void initWeights(void){
     for(int j = 0;j<numHidden;j++){
        weightsHO[j] = getRand(0,1);
        for(int i = 0;i<numInputs;i++){
         weightsIH[i][j] = getRand(0,1);
         z = weightsIH[i][j];
         //cout<<"Weights = "<<weightsIH[i][j]<<endl;
         saveWeights(z);             
        }
      }
}

显示如何执行此操作的通用代码会很有帮助。 在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

有许多可能的解决方案。

1)将数组的维度写为文件中的第一个数字(数字集)。

2)在写入文件并按空格分隔数字时,在每行之后插入NEW_LINE_CARACTER(&#39; \ n&#39;,即endl)。

     for(int j = 0;j<Hidden;j++){
        for(int i = 0;i<Inputs;i++){
            myfile<<arr[i][j]<<" ";
        }
        myfile<<endl
     }

3)使用尺寸等设置制作附加文件。

4)使用与C风格数组不同的数据结构并尝试序列化。