In eigen, kann man ganz leicht Tensorverjüngung tun mit:Wie mache ich äußere Produkt von Tensoren in Eigen?
Tensor<double, 1> tensor1;
Tensor<double, 2> tensor2;
// fill with data so that
// tensor1 is of dimensions [10] and tensor2 of dimensions [5,10]
std::array<Eigen::IndexPair<int>, 1> product_dims1 = { IndexPair<int>(1, 0) };
auto tensor = tensor2.contract(tensor1, product_dims1);
// now tensor is of dimensions [5]
ich für ein Verfahren suchen, die das Gegenteil von Kontraktion der Fall ist, dauert es zwei Tensoren A bedeutet und B, sagen der Dimensionen 5 x 10 und 3 x 2 und definiert einen neuen Tensor C Abmessungen 5 x 10 x 3 x 2, so dass
C_ijkl = A_ij * B_kl
ich leicht, ein solches Verfahren, wenn notwendig schreiben könnte, aber ich habe das Gefühl, es wäre mehr optimiert werden, wenn ich gebraucht eine native Eigenmethode. Ich möchte auch GPU-Unterstützung verwenden können, die mit eigen ziemlich einfach ist, wenn Sie die nativen Methoden verwenden.
Danke.
Haben Sie versucht, den '*' Operator? –
@Kerrek funktioniert das nicht, siehe hier: http://StackOverflow.com/Questions/41098944/Why-does-the-following-fail-with-eigen – kloop