matrix-multiplication相关内容

在时间t-1按顺序将列表中的矩阵乘以向量(递归)

我正在尝试将矩阵列表相乘,按照它们在列表中出现的顺序,从矩阵1开始,乘以初始向量,然后递归;所以列表中的矩阵2乘以结果向量。我尝试了lapply和map的各种迭代,但无法向前投影并递归执行。更明确地说:A[[1]] % * % allYears[,1],然后是A[[2]] % * % allYears[,2],.....,A[[4]] % * % allYears[,4],这将产生"allYear ..

在 Julia 中标量的 1 元素数组

将行向量和列向量相乘,我期望结果是标量,但它是一个一维、一元素数组: 朱莉娅>[1 2 3] * [4;5个;6]1 元素数组{Int64,1}:32 问题 1:这背后的基本原理是什么? 问题 2:接受这是 Julia 的一个怪癖,我想将 1 元素数组转换为标量.使用 [1] 获取第一个元素是一种选择,但可读性不强.这样做的特殊方法是什么? 解决方案 每个表达式都可以作用,所以你 ..
发布时间:2022-01-23 19:33:43 其他开发

使用 CUDA 进行动态矩阵乘法

我一直在尝试编写的简单程序的想法是从用户那里获取输入,以查看要乘以多大的矩阵. 我希望将输入 x 乘以 x,目前我不希望将两个不同的大小相乘. 你们会建议我如何完成这项工作? 很抱歉我的问题不够清楚,我想修改这个内核,以便它可以处理任何大小的矩阵(其中 x 和 y 是等价的,以保持简单).而不是 16 的倍数. 我不确定您是否需要我当前的代码,但这里是内核代码: //CU ..
发布时间:2022-01-10 15:58:41 其他开发

在 cuBLAS howto 中转置矩阵乘法

问题很简单:我有两个矩阵 A 和 B,它们是 M 乘 N,其中 M >> N.我想先对 A 进行转置,然后将其乘以 B (A^T *B)将其放入C中,即N乘N.我为A和B设置了所有内容,但是如何正确调用cublasSgemm而不返回错误的答案? 我知道 cuBlas 有一个 cublasOperation_t 枚举用于预先转换内容,但不知何故我并没有正确使用它.我的矩阵 A 和 B 以行优先 ..
发布时间:2022-01-10 15:40:26 其他开发

CUDA 确定每个块的线程数、每个网格的块数

我是 CUDA 范式的新手.我的问题是确定每个块的线程数和每个网格的块数.有一点艺术和试验的作用吗?我发现很多例子都为这些东西选择了看似任意的数字. 我正在考虑一个问题,我可以将任意大小的矩阵传递给乘法方法.因此,C 的每个元素(如 C = A * B)将由单个线程计算.在这种情况下,您将如何确定线程/块、块/网格? 解决方案 通常,您希望调整块/网格的大小以匹配您的数据并同时最大化 ..
发布时间:2022-01-10 15:25:12 其他开发

如何在 iOS 平台上实现快速图像过滤器

我正在开发 iOS 应用程序,用户可以在其中应用一组特定的照片过滤器.每个滤镜基本上都是一组带有特定参数的 Photoshop 动作.这些操作是: 级别调整 亮度/对比度 色相/饱和度 单层和多层叠加层 我在我的代码中重复了所有这些操作,使用算术表达式循环遍历图像中的所有像素.但是当我在 iPhone 4 上运行我的应用程序时,每个过滤器需要大约 3-4 秒才能应用,这对于用户来 ..

PyTorch - nn.Linear 权重的形状

昨天我遇到了 这个问题 并且第一次注意到线性层的权重nn.Linear 在应用matmul之前需要转置. 代码用于应用权重: output = input.matmul(weight.t()) 这是什么原因? 为什么权重不是一开始就在转置的形状中,所以在应用层之前不需要每次都转置? 解决方案 我在这里找到了答案:nn.Linear #2159 中的高效前向传递 这背后 ..

为什么GPU可以比CPU更快地做矩阵乘法?

我已经使用 GPU 一段时间了,但我没有质疑它,但现在我很好奇. 为什么GPU做矩阵乘法的速度比CPU快得多?是因为并行处理吗?但是我没有写任何并行处理代码.它自己会自动完成吗? 任何直觉/高级解释将不胜感激! 解决方案 你如何并行化计算? GPU 能够进行大量并行计算.比 CPU 能做的要多得多.看看这个向量相加的例子,假设有 1M 个元素. 使用 CPU 假设您 ..

不知道批量大小的 3-D 批量矩阵乘法

我目前正在编写一个 tensorflow 程序,该程序需要将一批二维张量(形状为 [None,...] 的 3-D 张量)与一个二维矩阵相乘W.这需要将 W 转换为 3-D 矩阵,这需要知道批量大小. 我无法做到这一点;tf.batch_matmul 不再可用,x.get_shape().as_list()[0] 返回 None,对于整形无效/平铺操作.有什么建议?我看到有些人使用 conf ..

二维卷积作为矩阵-矩阵乘法

我知道,在一维情况下,两个向量之间的卷积,a 和 b,可以计算为 conv(a, b),也可以作为T_a和b的乘积,其中T_a是a对应的托普利兹矩阵代码>. 是否可以将这个想法扩展到 2D? 给定 a = [5 1 3;1 1 2;2 1 3] 和 b=[4 3;1 2],是否可以将a转换成Toeplitz矩阵并计算T_a和b之间的矩阵乘积和一维情况一样? 解决方案 是的,这是 ..

使用涂料向量访问多维数组的任意轴向切片?

我正在构建一套函数来处理 多维数组数据结构,我希望能够定义数组的任意切片,这样我就可以实现两个任意矩阵的广义内积(也称为张量或nd数组). 我读过的一篇 APL 论文(老实说,我找不到哪篇——我读过很多)定义了左矩阵 X 上的矩阵乘积,维度为 A;B;C;D;E;F 和右矩阵 Y 维度为 G;H;I;J;K 其中 F==G 为 Z 其中+/ 是和,× 将逐个元素应用于两个相同长度的向量 ..

Google Cloud:使用 Bigquery 或其他服务进行矩阵乘法?

我正在使用 Google Analytics 并使用 Bigquery 处理数据,我需要做一个矩阵乘法. 在 Google Cloud 中实现矩阵乘法最可行的方法是什么?可以直接在Bigquery中完成吗? 解决方案 假设 MatrixA 是一个包含以下列的表格: i,k,值 和 MatrixB - 模式为 k, j, 值 并假设两个表中 k 值的范围相同: 这将模仿以 ..

如何优化矩阵乘法 (matmul) 代码以在单个处理器内核上快速运行

我正在研究并行编程概念并尝试在单核上优化矩阵乘法示例.到目前为止,我提出的最快的实现如下: /* 此例程执行 dgemm 操作* C := C + A * B* 其中 A、B 和 C 是以列优先格式存储的 lda-by-lda 矩阵.* 退出时,A 和 B 保持它们的输入值.*/void square_dgemm (int n, double* A, double* B, double* C){ ..

如何仅计算 Octave 中矩阵乘积的对角线?

Octave 有没有办法只计算和存储矩阵乘积的对角线? 基本上喜欢做:vector = diag(A*B); 除了对角线上的值,我不关心 A*B 的任何值.矩阵大小约为 80k x 12 和 12 x 80k,因此即使我不关心速度/额外内存,它也无法放入 RAM. 奇怪,因为 Octave 是一个大数据集的包,对角线很重要,所以应该是可以的. 解决方案 对角线的第一个元素是A ..
发布时间:2021-12-19 08:31:09 其他开发

什么是最好的矩阵乘法算法?

最好的矩阵乘法算法是什么?对我来说“最好的"是什么意思?这意味着速度最快,适合当今的机器. 如果可以,请提供伪代码链接. 解决方案 BLAS 是最好的即用型高效矩阵乘法库.有许多不同的实现.这是我在配备双核 Intel Core 2 Duo 2.66 GHz 的 MacBook Pro 上为某些实现所做的基准测试: gotoBLAS2(开源):https://www.tacc. ..
发布时间:2021-12-18 23:58:35 其他开发