Eigen::Tensor
шаблон<typename Scalar_, int NumIndices_, int Options_, typename IndexType_>
класс Eigen::Tensor< Scalar_, NumIndices_, Options_, IndexType_ >
Класс тензора.
Класс Tensor является рабочим классом для всех плотных тензоров в библиотеке Eigen.
Класс Tensor пока охватывает только объекты с динамическим размером.
Первые два параметра шаблона обязательны:
- Параметры шаблона
-
Scalar_ Числовой тип, например, float, double, int или std::complex<float>. Также поддерживаются пользовательские типы скаляров (см. здесь).NumIndices_ Количество индексов (т.е. ранг тензора)
Остальные параметры шаблона необязательны – в большинстве случаев вам не нужно о них беспокоиться.
- Параметры шаблона
-
Options_ Сочетание RowMajor или ColMajor, и AutoAlign или DontAlign. Первый параметр управляет порядком хранения, и по умолчанию равен строчному. Последний параметр управляет выравниванием, необходимом для векторизации. По умолчанию тензоры выравниваются. Обратите внимание, что тензоры в настоящее время не поддерживают операции, которые выигрывают от векторизации. Поддержка таких операций (т.е. сложение двух тензоров и т.д.) планируется.
Вы можете получить доступ к элементам тензоров с помощью обычного индексирования:
Eigen::Tensor<double, 4> t(10, 10, 10, 10); t(0, 1, 2, 3) = 42.0;
Этот класс можно расширить с помощью механизма плагинов, описанного на странице Расширение MatrixBase (и других классов), определив препроцессорную метку EIGEN_TENSOR_PLUGIN.
Некоторые замечания:
- Связь с другими частями Eigen:
- Конечная цель разработки этого класса — иметь иерархию, аналогичную используемой в Eigen для матриц, чтобы извлечение блоков или использование тензоров в выражениях было простым, включая интерфейс с кодом векторов/матриц, предоставляя методы .asMatrix() и .asVector() (или аналогичные) для тензоров ранга 2 и 1. Однако в настоящее время класс Tensor не предоставляет ни одной из этих функций и доступен только как самостоятельный класс, который просто позволяет получить доступ к коэффициентам. Кроме того, при реализации тензоров фиксированного размера количество параметров шаблона, вероятно, значительно изменится.
| void | resize (const array< Index, NumIndices > &dimensions) |
| шаблон<typename std::ptrdiff_t... Indices> | |
| void | resize (const Sizes< Indices... > &dimensions) |
| Tensor (const array< Index, NumIndices > &dimensions) | |
Tensor()
| inlineexplicit |
Нормальный размер
resize() [1/2]
| inline |
Нормальный размер
resize() [2/2]
| inline |
Пользовательский размер
Документация для этого класса была сгенерирована из следующего файла:
© Eigen.
Licensed under the MPL2 License.
https://eigen.tuxfamily.org/dox/unsupported/classEigen_1_1Tensor.html