我是神经网络的新手。我有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);
}
}
}
显示如何执行此操作的通用代码会很有帮助。 在此先感谢您的帮助。
答案 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风格数组不同的数据结构并尝试序列化。
等