2016-07-24 19 views
0

Ich verwende derzeit Eigen, um Deep Learning und insbesondere Faltungs neuronalen Netzen zu tun.3D Tensor für Deep Learning: Verwenden Sie ein MatrixXd <ArrayXD, Dynamisch, Dynamisch>

Sie ein Beispiel hier sehen können: https://en.wikipedia.org/wiki/Convolutional_neural_network#/media/File:Typical_cnn.png

Da jeder Schritt könnte eine Schicht eine Faltungsschicht (eine Reihe von Funktionen Karte), eine vollständig verbundene Schicht (eine einzelne eindimensionale Vektor) oder irgendetwas anderes .

Also wähle ich MatrixX<ArrayXd, Dynamic, Dynamic>, um meine Daten zu vertreten.

Aber wenn ich es (mit Matrixprodukt) verwende, habe ich segfaults.

Ich bin mir nicht sicher, aber ich denke, weil ArrayXd ist kein guter skalarer Typ für MatrixX.

Kann ich ArrayXd als Skalar in Eigen verwenden?

Wenn die Antwort nein ist, was kann ich tun?

+0

Was ist 'ArrayX'? MatrixXd 'kann nicht verwendet werden, es sollte Matrix sein, aber das wird wahrscheinlich nicht das machen, was Sie wollen. –

+0

Ja, es ist 'MatrixX '. –

+0

Siehe kangshiyins [antworten] (http://stackoverflow.com/a/38552257/2899559). –

Antwort

1

ArrayXd ist keine gute Wahl, um ein skalarer Typ zu sein, besonders wenn Sie einen Tensor haben wollen.

Eigen hat Tensor-Unterstützung in seinem Dev-Zweig/v3.3-bata1. Sie können das Dokument hier finden.

http://eigen.tuxfamily.org/index.php?title=Tensor_support

https://bitbucket.org/eigen/eigen/src/fefbb833ed5442fb21292bdaa3320543868e41b8/unsupported/Eigen/CXX11/src/Tensor/?at=default#markdown-header-eigen-tensors

https://eigen.tuxfamily.org/dox-devel/unsupported/group__CXX11__Tensor__Module.html

+0

Danke dir, ich werde mir diese Lösung anschauen. –