我有一個訓練有素的神經網路,用于 Matlab 中的分類問題。我想使用經過訓練的權重并將其應用到 C 中。我的神經網路輸出給了我一個 7 ( output2[i])的向量。
如何在 Matlab 中使用相同的 vec2ind 函式,該函式采用向量矩陣,每個向量包含一個 1,并回傳這些向量的索引,并在找到 1 后立即停止?
我想用C語言實作它。
我附上了部分代碼
謝謝
double sum = 0;
/// matrix multiplication
for (int i = 0; i < 29; i )
{
for (int k = 0; k < 2; k )
{
sum = inputs[k] * weights[i][k];
}
/// apply activation function
output[i] = tanh_func(sum biases[i]);
sum = 0;
}
/// output layer
for (int i = 0; i < 7; i )
{
for (int k = 0; k < 29; k )
{
sum = output[k] * weights2[i][k];
}
/// apply activation function
output2[i] = sigmoid(sum biases2[i]);
sum = 0;
}
uj5u.com熱心網友回復:
為了更好地理解,您可以使用三重指標 double*** tensor3d
用它初始化
tensor3d = malloc( dim0 * sizeof( double** ));
for( int i = 0; i < dim0; i )
{
tensor3d[i] = malloc( dim1 * sizeof( double* ));
for( int j = 0; j < dim1; j )
{
tensor3d[i][j] = malloc( dim2 * sizeof( double ));
}
}
如果你已經復制了那個 3dim-array 中的向量矩陣,你可以這樣做
int indices[dim0][dim1];
for( int i = 0; i < dim0; i )
{
for( int j = 0; j < dim1; j )
{
for( int k = 0; k < dim2; k )
{
if( tensor3d[i][j][k] > 0.99 && tensor3d[i][j][k] < 1.01 )
{
indices[i][j] = k;
break;
}
}
}
}
但在現實生活中,您會使用 1 個暗淡陣列flattensor3d[]和
tensor3d[i][j][k] == flattensor3d[i * dim0 * dim1 j * dim1 k]
uj5u.com熱心網友回復:
要在 C 中僅撰寫 vec2ind,請參閱其他答案。
或者,如果您有權訪問 MATLAB Coder,它可以自動將 MATLAB 代碼(整個演算法)轉換為 C 代碼:https : //www.mathworks.com/help/coder/index.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/330824.html
上一篇:JAVA大資料的第五十二天——在linux中安裝jdk
下一篇:在默認包裝器中回傳回應
