2015-04-20 35 views
-1
////////////////////MAKE INPUT VALUES//////////////////// 
double *NumOfInputsPointer = NULL; 
std::cout << "How many inputs?" << std::endl; 
int NumOfInputs; 
std::cin >> NumOfInputs; 
NumOfInputsPointer = new double[NumOfInputs]; 
std::cout << std::endl; 
double InputVal; 
for(int a = 0; a < NumOfInputs; a++) 
{ 
    std::cout << "What is the value for input " << a << std::endl; 
    a+1; 
    std::cin >> InputVal; 
    *(NumOfInputsPointer + a) = InputVal; 
} 

std::cout << std::endl; 

////////////////////MAKE WEIGHTS//////////////////// 
double *NumOfWeightsPointer = NULL; 
int NumOfWeights; 
NumOfWeightsPointer = new double[NumOfWeights]; 
double WightVal; 
for(int a = 0; a < NumOfInputs; a++) 
{ 
    *(NumOfWeightsPointer + a) = 0.5; 
} 

////////////////////Multiplication BRAIN BROKE!!!!!//////////////////// 
double *MultiplyPointer = NULL; 
MultiplyPointer = NumOfInputsPointer; 
for(int a = 0; a < NumOfInputs; a++) 
{ 
     //Stuff to do things 
} 

上面的代碼將製作單個人工神經元。我已經創建了一個與用戶想要的輸入數量組成陣列,然後自動使每個輸入權重爲0.5。從兩個陣列(人工神經元)乘以數值

我撞到的牆讓我拼命地將輸入值數組與它們的權重數組相乘,然後將這些數組保存在另一個數組中,以便將它們加在一起,然後通過修飾符。

我的努力是乘法並將其保存到數組中。我希望我能夠很好地解釋我的問題。

+0

您使用'一個+ 1;'在第一個for循環。如果你想做增量,可以使用'a = a + 1;'或'a ++;'。 – Himanshu

+0

分配你的新數組就像其他人一樣,然後'MultiplyPointer [a] = NumofInputsPointer [a] * NumOfWeightsPointer [a]'?還請閱讀std'vector' ...還請注意,在使用它之前,您沒有初始化'NumOfWeights' ...您的所有這些向量的意圖是相同的大小? –

+0

@Guy Sirton:做出你所建議的改變,它完美運作!修正了NumOfWeights,並且一定會查看std :: vector。可能幫助清理我的代碼。 –

回答

0

只是new它就像你與其他人一樣,並在那裏存儲乘法的結果。

MultiplyPointer = new double[NumOfInputs]; 
for (a = 0; a < NumOfInputs; a++) { 
    MultiplyPointer[a] = NumOfWeightsPointer[a] * NumOfInputsPointer[a]; 
} 

這就是說,有更好的方法來解決您的問題。已經提到了std::vector,這使得存儲器管理和循環比特更容易。我會更進一步,將圖書館與矩陣和矩陣表達式的概念相結合,如OpenCVdlib

實施例使用Mat從OpenCV的:

cv::Mat input(NumOfInputs, 1, CV_64F, NumOfInputsPointer); 
cv::Mat weights(NumOfInputs, 1, CV_64F, cv::Scalar(0.5)); 
cv::Mat result = input.mul(weights); 

如果權重向量不被修改,並重新使用,只是跳過整個事情:

cv::Mat result = input.mul(cv::Scalar(0.5)); 
2

這段代碼有很多問題。我強烈建議使用std :: vector而不是數組。如果每個輸入具有0.5的恆定權重,那麼創建一個所有元素都爲0.5的數組有什麼意義?只需創建一個代表0.5重量的常量變量並將其應用於每個輸入。第二個數組是不必要的,我可以告訴。創建最後一個數組(同樣,使用矢量會更容易)與第一個數組相似,因爲大小將相同。它基於輸入的數量。因此,只需創建一個相同大小的數組,循環遍歷第一個數組中的每個元素,使用上述常量進行乘法運算,然後將結果存儲到新數組中。

+0

謝謝你的幫助,本週我將花時間掌握媒介。似乎它會真正清理我的代碼。存在0.5值的數組的原因是由於反向傳播。所有這些價值觀將在路上進一步改變,因此他們需要爲了尊重他們的投入而改變陣容。 –