问题标签 [dot-product]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - 如何在 Ruby on Rails 中使用 Redis 有效地获取两个哈希的点积
我在特征表的数据库中有一个这样的数据结构,称为token_vector
(哈希):
其中有 25 个功能。首先,我将数据输入到 Redis 中script/console
:
TokenVector.to_json
首先将哈希转换为 JSON 格式。存储在 Redis 中的 25 个 JSON 散列占用大约 8 MB。
我有一个方法,叫做Analysis#locate
. 此方法采用两个 token_vector 之间的点积。哈希的点积是这样工作的:
散列中的每个重叠键(在这种情况下为 a、b 和 c,而不是 d)将它们的值成对相乘,然后相加。
a
in的值为hash1
1,a
in的hash2
值为 4。将它们相乘得到1*4 = 4
。
b
in的值为hash1
2,b
in的hash2
值为 5。将它们相乘得到2*5 = 10
。
c
in的值为hash1
3,c
in的hash2
值为 6。将它们相乘得到3*6 = 18
。
d
in的值hash1
不存在,d
in的hash2
值为 7。在这种情况下,d = 0
为第一个散列设置。将这些相乘得到0*7 = 0
.
现在将相乘的值相加。4 + 10 + 18 + 0 = 32
. 这是 hash1 和 hash2 的点积。
我有一个经常使用的方法,Analysis#topicize
. 这个方法接受一个参数,token_vector
,它只是一个哈希,类似于上面。取25 个特征中的每一个Analysis#topicize
的点积,并创建这 25 个点积的新向量,称为。A只是一个数组。代码如下所示:token_vector
token_vectors
feature_vector
feature_vector
如您所见,它采用我在上面输入 Redistoken_vector
的每个特征的点积token_vector
,并将值推送到数组中。
我的问题是,每次调用该方法大约需要 18 秒。我在滥用 Redis 吗?我认为问题可能是我不应该将 Redis 数据加载到 Ruby 中。我是否应该向 Redis 发送数据 ( token_vector
) 并编写一个 Redis 函数来让它执行该dot_product
函数,而不是用 Ruby 代码编写它?
cuda - GPU 上的广义滑动窗口计算
这是一些在两个 3D 矩阵 X 和 Y 上实现滑动窗口计算的 Python 代码。
一般来说,Y 在第一和第二维度上总是比 X 小得多,但在第三维度上它们是相等的。
请注意,我们可以将 numpy.dot() 替换为 Y 和窗口的任何函数。这与卷积有点不同,因为 Y 仅沿 X 的第一和第二维度滑动。我正在寻找一种有效的策略来使用 CUDA 有效地实现这种滑动窗口计算。有人想给我一些方向吗?干杯!
更新:您可以在下面的回答中观看我在其他用户的帮助下完成优化过程的工作。
memory - numpy.dot(A,B) 时出现内存错误,其中 A 是 250000x108 浮点矩阵,B 是 A 的转置
做 A 点 B 的任何想法,没有内存错误?
matlab - 将 5D 矩阵与 2D 矩阵相乘
我有一个 5D 矩阵 Cij(3,3,Nx,Ny,Nz),其中 Nx,Ny 和 Nz 作为输入给出。
我需要执行以下操作:
问题是增加 Nx,Ny,Nz 循环需要非常长的时间来计算 H 矩阵。
有人知道获得 H 矩阵的更快方法吗?
numpy - Numpy:使用随机数据减少点积的内存占用
我有一个大型 numpy 数组,我将使用随机生成的值进行线性投影。
不幸的是,random_array
占用了大量内存,我的机器开始交换。在我看来,我实际上并不需要random_array
一次全部。理论上,我应该能够在点积计算期间懒惰地生成它......但我不知道如何。
如何减少计算output_array
from的内存占用input_array
?
algorithm - 3D空间:跟随对象指向的方向,使用鼠标指针
给定相机朝向的方向的 3D 向量和 3D 空间中 3D 对象的方向/方向向量,我如何计算鼠标指针在屏幕上必须遵循的 2 维斜率才能在视觉上是沿着所述物体的方向移动?
基本上,我希望能够单击箭头并通过拖动它使其前后移动,但前提是鼠标指针(大致)沿着箭头的长度拖动,即在它指向的方向上。
谢谢你
cuda - CUDA 点积
我正在尝试为双精度数组实现经典的点积内核,并对各个块的最终总和进行原子计算。我使用 atomicAdd 进行双精度,如编程指南第 116 页所述。可能我做错了。每个块中线程的部分总和计算正确,但原子操作似乎无法正常工作因为每次我用相同的数据运行我的内核时,我都会收到不同的结果。如果有人能发现错误或提供替代解决方案,我将不胜感激!这是我的内核:
这是我的设备函数 atomicAdd:
cuda - 多 GPU Cuda 计算
我是多 GPU 编程的新手,我对多 GPU 计算有一些疑问。例如,让我们以点积为例。我正在运行一个创建 2 个大数组 A[N] 和 B[N] 的 CPU 线程。由于这些数组的大小,我需要将其点积的计算拆分为 2 个 GPU,均为 Tesla M2050(计算能力 2.0)。问题是我需要在我的 CPU 线程控制的 do-loop 内多次计算这些点积。每个点积都需要前一个点积的结果。我读过关于创建 2 个不同的线程来分别控制 2 个不同的 GPU(如 cuda 中的示例所述),但我不知道如何在它们之间同步和交换数据。还有其他选择吗?我真的很感谢任何形式的帮助/示例。在此先感谢!
assembly - MIPS 和矩阵
我正在处理一个涉及 MIPS 和矩阵的学校项目。基本上我必须编写一个程序,通过输入给定一个 N 参数(这应该是我的方形 NxN 矩阵的大小)和里面的所有元素(再次,由用户输入插入)应该计算点积这两个矩阵,并将结果放入第三个矩阵。
我第一次看到这段代码,它做点积,但在两个静态矩阵之后。不是通过输入。两件事情。我应该如何更改它以便让用户插入两个矩阵(以及 N 大小),并且大多数情况下,我的矩阵初始化是否正确?我没有做这样的段落“[(i * num_columns + j)* 4],我想知道我得到的是纯粹的运气而不是合理化。提前感谢任何愿意帮助我的人,对不起对于任何语言错误。
vector - 如何知道两条线段是否接近共线
由于浮点精度,我在确定两条线段是否共线时遇到了一些麻烦。如何确定线段是否共线并具有一定的公差?