2017-07-26 5 views
1

J'essaye de mettre en application le réseau de neurones en C++ en utilisant armadillo bibliothèque linéaire d'algèbre. J'utilise Cube pour stocker inputs et weights du réseau et je veux être en mesure d'ajouter bias unité dans la matrice 3d. Je suis tombé sur plusieurs façons de le faire qui impliquent la conversation du cube à la matrice qui semblait inefficace. Alors, quel est le moyen le plus efficace d'ajouter une colonne de zéros au début de chaque matrice dans le cube?Moyen efficace d'ajouter une colonne de 1s dans le tatouage de bras

Répondre

1

Malheureusement, join_slices, prend uniquement en charge la jonction de cubes avec le même nombre de lignes et de colonnes. Par conséquent, vous devez faire une boucle à travers chaque tranche et ajouter une ligne vecteur en utilisant insert_rows, comme ceci:

#include<armadillo> 

using namespace arma; 

uword nRows = 5; 
uword nCols = 3; 
uword nSlices = 3; 

/*original cube*/ 
cube A(nRows , nCols, nSlices, fill::randu); 
/*new cube*/ 
cube B(nRows+1, nCols, nSlices, fill::zeros); 
/*row vector to append*/ 
rowvec Z(nCols, fill::zeros); 

/*go through each slice and change mat*/ 
for (uword i = 0; i < A.n_slices; i++) 
{ 
    mat thisMat = A.slice(i); 
    thisMat.insert_rows(0, Z); 
    B.slice(i) = thisMat; 
} 

Cela devrait donner:

A: 
[cube slice 0] 
    0.0013 0.1741 0.9885 
    0.1933 0.7105 0.1191 
    0.5850 0.3040 0.0089 
    0.3503 0.0914 0.5317 
    0.8228 0.1473 0.6018 

[cube slice 1] 
    0.1662 0.8760 0.7797 
    0.4508 0.9559 0.9968 
    0.0571 0.5393 0.6115 
    0.7833 0.4621 0.2662 
    0.5199 0.8622 0.8401 

[cube slice 2] 
    0.3759 0.8376 0.5990 
    0.6772 0.4849 0.7350 
    0.0088 0.7437 0.5724 
    0.2759 0.4580 0.1516 
    0.5879 0.7444 0.4252 


B: 
[cube slice 0] 
     0  0  0 
    0.0013 0.1741 0.9885 
    0.1933 0.7105 0.1191 
    0.5850 0.3040 0.0089 
    0.3503 0.0914 0.5317 
    0.8228 0.1473 0.6018 

[cube slice 1] 
     0  0  0 
    0.1662 0.8760 0.7797 
    0.4508 0.9559 0.9968 
    0.0571 0.5393 0.6115 
    0.7833 0.4621 0.2662 
    0.5199 0.8622 0.8401 

[cube slice 2] 
     0  0  0 
    0.3759 0.8376 0.5990 
    0.6772 0.4849 0.7350 
    0.0088 0.7437 0.5724 
    0.2759 0.4580 0.1516 
    0.5879 0.7444 0.4252