- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经浏览了 Eigen 的教程
https://eigen.tuxfamily.org/dox-devel/group__TutorialMatrixArithmetic.html
它说
“注意:对于担心性能的 BLAS 用户,诸如 c.noalias() -= 2 * a.adjoint() * b; 之类的表达式已完全优化并触发单个类似 gemm 的函数调用。”
但是像 H.transpose() * H 这样的计算怎么样,因为它的结果是一个对称矩阵,所以它应该只需要正常 A*B 的一半时间,但在我的测试中,H.transpose() * H 花费与 H 相同的时间.transpose() * B. eigen 对这种情况有特殊的优化吗,和opencv一样,也有类似的功能。
我知道对称优化会破坏矢量化,我只想知道 Eigen 是否有可以提供对称优化和矢量化的解决方案
最佳答案
你是对的,你需要告诉 Eigen 结果是这样对称的:
Eigen::MatrixXd H = Eigen::MatrixXd::Random(m,n);
Eigen::MatrixXd Z = Eigen::MatrixXd::Zero(n,n);
Z.template selfadjointView<Eigen::Lower>().rankUpdate(H.transpose());
Z += H * H^T
在下三角部分内。上半部分保持不变。你想要一个完整的矩阵,然后将下半部分复制到上半部分:
Z.template triangularView<Eigen::Upper>() = Z.transpose();
rankUpdate
例程是完全矢量化的,可与 BLAS 等效项进行比较。对于小矩阵,更好地执行完整的产品。
关于optimization - 特征是否具有自转置乘法优化,如 H.transpose()*H,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39606224/
import numpy as np import matplotlib.pyplot as plt import scipy.linalg as la A = np.arra
在没有指定轴的情况下,numpy 的 np.transpose(matrix) 和 np.matrix.transpose() 在二维矩阵上是否存在功能差异? 另外,有人可以尝试直观地解释轴规范如何工
我想让公式数组函数更容易 我写了一些代码,但它没有像我预期的那样插入我的复制范围: Sub copy_link() Dim copyrange As Range Dim pasterange As R
我有一张 table ,看起来像这样: +---+---+---+---+---+---+ | | a | b | c | d | e | +---+---+---+---+---+---+ |
我正在尝试进行某种反向转置,其中 ID(ISIN) 变得重复,但特征“周期”定义时间段,并且值特征从 3 个特征变为同一特征。如何在Python中从dfs到dfs2? dfs = pd.DataFra
Numpy是高性能科学计算和数据分析的基础包,里面包含了许多对数组进行快速运算的标准数学函数,掌握这些方法,能摆脱数据处理时的循环。 1.首先数组转置(T) 创建二维数组data如下: 进
我有一个因子变量,我想检索每个级别的计数。使用 summary() 函数很容易: > h hf summary(hf) (142,147] (147,153] (153,158] (158,163
想知道是否有人可以帮我解决这个问题 使用 VBA,我设置了一个宏,它首先将数据透视表转换到另一个工作表中,然后自动将数据修改为一个整洁的小列表,供用户稍后在数据库中设置。 现在,在第一次为数据透视表构
np.transpose 的时间复杂度是多少? 在我看来,它在内部循环了两个 for 循环,这意味着它应该具有 O(n2) 复杂度,但有人可以确认吗? 另外,有什么办法可以降低矩阵转置的时间复杂度 最
我想定义一个 TS 函数来将对象转置为数组,例如: const original = { value: [1, 2, 3], label: ["one", "two", "three
我正在使用 WorksheetFunction.Transpose在 VBA 中将混合日期/字符串的一维数组转换为二维数组以写入工作表。 将我的 Windows 区域设置设置为 DMY ,被写回的日期
我需要在列中的两个文本字符串之间复制数字,将其“转置”到第一个文本字符串旁边的列,然后重复该列的其余部分。数据集有数百行。 “对齐”(例如放置 NA 来纠正数字位置)不是必需的,转置就足够了。 输入:
我有一个带有 ID 列和一些功能列的 DataFrame。我想查看每个列值有多少个唯一 ID 的描述。 以下代码有效,但我想知道是否有比 to_frame().unstack().unstack()
我不确定“转置”在这里是否是正确的术语,但我希望使用 jq 转置一个二维对象,如下所示: [ { "name": "A", "keys": ["k1", "k2
运行 100,000 次迭代的模拟后,我尝试将每次迭代的值转储到列中。这是代码的要点: Sub test() Application.ScreenUpdating = False Dim totalg
我需要在列中的两个文本字符串之间复制数字,将其“转置”到第一个文本字符串旁边的列,然后重复该列的其余部分。数据集有数百行。 “对齐”(例如放置 NA 来纠正数字位置)不是必需的,转置就足够了。 输入:
我有一个向量列表: asdf = list(c(1, 2, 3, 4, 5), c(10, 20, 30, 40, 50)) 现在我想“转置”它,即获得5对的列表而不是5对的列表。 更具体地说,我希望
我有一个如下所示的数据集,我需要单行中每个类别的所有不同权重和计数 Sample_data category weights 1 aa 3.2 2 aa 2.2
我在 test.cpp 文件中得到了以下代码来实现: cout << "Case 2: the non-static Transpose function" << endl; { double
我想创建一个程序来创建具有随机字符的“.txt”文件,但可以创建转置"file"。接下来,我按照我的意愿添加了两个“.txt”文件的示例。 文件1 A|B|C|D|E|F|G| H|I|J|K|L|M
我是一名优秀的程序员,十分优秀!