2017-03-07 3 views
0

Ich versuche, eine 1x1 Faltung mit der Apple BNNS Bibliothek (Basic Neural Network Subroutine) in Accelerate durchzuführen.Verwenden von grundlegenden neuronalen Netzwerk-Subroutinen (BNN) Beschleunigen

Wenn ich auf einem 9x1 Spaltenvektor ausführen, erhalte ich unerwartete Ergebnisse.

Beispielcode geschrieben am: https://gist.github.com/cancan101/5887cb93cc91a2d10e2bfd23284bb438 (a modification of BNNS sample code.)

Erwartete Ergebnisse: Druck Zahlen 0-8.

Tatsächliche Ergebnisse:

o0: 0.000000 
o1: 0.000000 
o2: 0.000000 
o3: 3.000000 
o4: 0.000000 
o5: 5.000000 
o6: 0.000000 
o7: 7.000000 
o8: 0.000000 

Ich nehme ich das richtig mache, aber ich bin offen für Feedback auf dem verknüpften Code.

Antwort

0

Wenn Sie transponieren Vektoren rudern, dann würden Sie erwartete Ausgabe

aus sehen:

i_desc.width = 1; 
i_desc.height = 9; 
i_desc.row_stride = 1; 

dazu:

i_desc.width = 9; 
i_desc.height = 1; 
i_desc.row_stride = 9; 

gleiche für die Ausgabe:

o_desc.width = 9; 
o_desc.height = 1; 
o_desc.row_stride = 9; 

Ergebnis:

Input image stack: 9 x 1 x 1 
Output image stack: 9 x 1 x 1 
Convolution kernel: 1 x 1 
o0: 0.000000 
o1: 1.000000 
o2: 2.000000 
o3: 3.000000 
o4: 4.000000 
o5: 5.000000 
o6: 6.000000 
o7: 7.000000 
o8: 8.000000 
+0

Richtig, ich sah, dass das funktionierte, aber mache ich etwas falsch? Oder sollte was ich arbeite –

+0

Ich verstehe nicht, was Sie fragen. Faltung ist eine Matrixoperation. Wenn Sie die Eingabe transponieren, können Sie nicht erwarten, dass das Ergebnis gleich bleibt. – paiv

+0

Eine 1 × 1-Faltung (Gewicht 1) in einem Zeilenvektor Sollte einen übereinstimmenden Zeilenvektor erzeugen und eine 1 × 1-Faltung einen übereinstimmenden Spaltenvektor erzeugen. –

Verwandte Themen