- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试利用 Tensorflow 的内置稀疏矩阵乘法 API 的性能优势。
和 keveman推荐 tf.embedding_lookup_sparse 是正确的方法。
但是,似乎的表现embedding_lookup_sparse 对my experiments有些失望.尽管它执行了相当小的矩阵乘法,<1, 3196> 和 <3196, 1024>,但具有 0.1 稀疏度的稀疏 matmul 未能赢得密集矩阵乘法。
如果我的实现是正确的,我认为原因之一是 Tensorflow 使用 COO 格式保存所有索引非零对。我不是这个领域的专家,但是,CSR 格式在这种计算上的性能更高,难道不是众所周知的吗? Tensorflow 在内部使用 COO 格式而不是 CSR 进行稀疏矩阵表示有什么明显的原因吗?
最佳答案
只是为了记录,你说矩阵乘法,但你的矩阵之一实际上是一个向量(1 x 3196)。所以这将使它成为矩阵向量乘法(不同的 BLAS 内核)。我假设你的意思是我的答案是矩阵向量乘法。
是的,对于矩阵向量乘法,CSR 理论上应该比 COO 更快;这是因为CSR格式的存储大小是O(2nnz + n)
对比 O(3nnzs)
并且稀疏矩阵向量乘法在许多情况下是内存限制的。
尽管基于问题大小、稀疏模式、数据类型和实现,与密集矩阵乘法相比,确切的性能差异会有所不同。很难说哪个应该更快,因为稀疏存储格式引入了间接性,这可能会导致局部性降低和算术单元的利用率低下(例如,不使用向量化)。
特别是当矩阵和向量的大小太小以至于几乎所有东西都适合缓存时,我预计性能优势有限。稀疏矩阵结构通常对真正的大矩阵更有用,范围从 10sK x 10sK 到 1B x 1B,使用密集表示甚至不适合主内存。对于小问题,根据我的经验,与密集格式相比,存储优势通常会被局部性和算术效率的损失所抵消。在某种程度上,这是通过混合存储格式(例如 Block CSR)来解决的,它试图两全其美,并且对某些应用程序非常有用(看起来不像 tensorflow
支持这一点)。
在 tensorflow
,我假设使用 COO 格式是因为它对其他操作更有效,例如它支持 O(1)
数据结构中的更新、插入和删除。在稀疏矩阵向量乘法中牺牲 ~50% 的性能来提高这些操作的性能似乎是合理的。
关于tensorflow - Tensorflow 使用 CSR 以外的 COO 格式来处理稀疏矩阵是否有任何明显的原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37702692/
(Python)任何人都可以建议用另一个大小为 400k*800k 的 csr 矩阵 B 的列中的值填充 csr 矩阵 A 的最简单和最快的方法。我失败的尝试: #x is a list of siz
我必须以 pem 格式提交 CSR。 我已经使用 OpenSSL 生成了 CSR,但在将其转换为 PEM 格式时遇到了困难。 我必须从 example.csr 获取示例 - csr.pem。如何实现?
两年前,我获得了 VeriSign/Symantec SSL 证书。发起此请求时,我们在与证书的通用名称无关的随机服务器上创建了一个 CSR。为了创建 Java keystore ,我执行了以下两个步
由于一些不愉快的原因,我一直在尝试使用 bouncycaSTLe API 手动构建我自己的证书签名请求。 从表面上看,我选择这样做是因为我需要 CSR 的预签名版本,以便使用存储在 HSM 中的 ke
我正在使用 OpenSSL C API 构建 CSR。代码如下: static void seedPRNG() { const int openSSLseedsize = 128; uint8_t *
我正在关注 https://godaddy.com/help/windows-generate-csr-for-code-or-driver-signing-certificate-7282 生成 C
包含公钥和组织详细信息的 CSR(证书签名请求)是否使用私钥加密? - 如果是,证书颁发机构如何解密它,因为 CSR 中的公钥也被加密了? - 如果没有,CA 如何确定 CSR 颁发者拥有私钥? 最佳
我正在 iPhone 开发者门户中使用开发配置助手,但是当我到达它要求我生成并上传 CSR 的部分时,我尝试上传它,但它只是给了我这个错误: 所选的 CSR 无效。请检查文件并重试。 有人知道这意味着
我通过钥匙串(keychain)访问生成 .certSigningRequest 文件(钥匙串(keychain)访问 -> 证书助理 -> 从证书颁发机构请求证书...,我填写了我的邮件并将其保存到
我们可以从签名的证书中生成用于证书签名的 CSR(证书签名请求)吗?当使用不同的权限再次签名时,它应该与原始私钥一起使用。 最佳答案 你不能用你现有的 key 创建一个新的 CSR 吗? openss
我正在尝试使用 Python 加密将挑战 OID 添加到 CSR 的属性部分。我已经查看了文档,到目前为止,我只能向主题添加额外的属性,但这不是我需要的。使用以下代码: OID_CHALLENGE =
我正在创建我的第一个 iOS 应用程序,并尝试设置我的推送通知证书。当我上传 CSR 证书以生成证书时,我只是看到一个旋转的轮子,上面写着“正在加载...”,该过程持续了几个小时。这个过程需要多长时间
我想找到一种方法来操作 scipy.sparse.csr_matrix,以便根据列获得其元素的总和。例如,如果我有这个: (2, 883) 0.0194935608679 (10, 883)
我目前正在学习证书签名请求 (certificates Signing Requests, csr) 的工作原理。我的 csr 的内容是这样的 openssl req -text -noout -ve
我想为 2 个域购买多域通配符证书:*.domain1.org 和 *.domain2.org 我应该如何生成 CSR?因为我尝试使用通用名称 *.domain1.org 生成它,但我尝试购买的网站不
如何在cmd.exe上运行csr生成命令 openssl req -nodes -newkey rsa:2048 -keyout www_mydomain_com.key -out www_mydom
我有一个证书请求(见底部),我希望最好从命令行 (Unix) 获取指纹。如果我的目标只是验证两台机器上 PEM 文件的完整性,我可以使用例如sha256sum csr.pem 值,但我想获得与 Pup
我想做的是,创建一个 CSR 并使用受密码保护的私钥( key )。 在 OpenSSL 中,我可以创建一个带有密码的私钥,如下所示: openssl genrsa -des3 -out privke
我正在创建一个网页来获取敏感的客户信息,并希望它位于受 SSL 保护的页面上。 CA 要求我提供 CSR。 我计划在服务器上安装 OpenSSL 并创建其中一个。 这是否意味着我在其上创建 CSR 的
我正在尝试通过以下方法创建证书请求 (CSR),我需要在其中提供私钥,我的理解是 CSR 需要/仅包含公钥信息以及有关请求者的其他详细信息,例如公司名称等等。但是如果在创建 CSR 时提取公钥并传递它
我是一名优秀的程序员,十分优秀!