dot production

2024-01-04 12:09
文章标签 dot production

本文主要是介绍dot production,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

希望下面的是对的

矩阵点乘 dot production

http://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=156079&fromuid=109727 

扫描短的 然后短的坐标不是0就去看看长的是不是0 有待讨论

表示方法用(index, value) 如果是两个差不多长的 那么就存到哈希表里 然后对于一组元素建立好之后 遍历另一组 然后查询对应的index有没有

如果是一个长一个短  那么就用数组把长的(index, value)建立起来 然后短的每个元素二分查找

如果把一维向量扩展到二维的矩阵 如果要存数组的话 就可以用公式把坐标换成一维的

r,c 变成 r*列数 + c 变回来的话 i/列数, i%列数


package array;import java.util.*;public class DotProduction {public static void main(String[] args){int[] array1 = {0,2,3,0,4,5,0,0};int[] array2 = {2,0,1,0,8,0,0};System.out.println(production1(array1, array2));System.out.println(production2(array1, array2));int[][] m1 = {{0,1,4,5},{0,0,2,0},{4,8,2,0},{1,0,3,1}};int[][] m2 = {{0,0,0,1},{1,0,1,0},{0,0,0,1},{0,0,1,0}};System.out.println(production3(m1, m2));}private static int production1(int[] array1, int[] array2) {if (array1 == null || array1.length == 0 || array2 == null || array2.length == 0) {return 0;}int sum = 0;for (int i = 0; i < array1.length && i < array2.length; i++) {if (array1[i] != 0 && array2[i] != 0) {sum = sum + array1[i]*array2[i];}}return sum;}private static int production2(int[] array1, int[] array2) {if (array1 == null || array1.length == 0 || array2 == null || array2.length == 0) {return 0;}int sum = 0;Map<Integer/*index*/, Integer/*value*/> map1 = new HashMap<>();for (int i = 0; i < array1.length; i++) {if (array1[i] != 0) {map1.put(i, array1[i]);}}for (int i = 0; i < array2.length; i++) {if (array2[i] != 0 && map1.containsKey(i)) {sum = sum + array2[i]*map1.get(i);}}return sum;}//我们假设这是两个n*n的矩阵private static int production3(int[][] matrix1, int[][] matrix2) {if (matrix1 == null || matrix1.length == 0 || matrix2 == null || matrix2.length == 0) {return 0;}int sum = 0;List<Integer/*index*/> l1 = new ArrayList<>();List<Integer/*index*/> l2 = new ArrayList<>();int n = matrix1.length;for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {if (matrix1[i][j] != 0) {l1.add(i*n+j);}}}for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {if (matrix2[i][j] != 0) {l2.add(i*n+j);}}}for (int i: l2) {int start = l1.get(0);int end = l1.get(l1.size() - 1);if (i < start || i > end) {continue;}while (start + 1 < end) {int mid = start + (end - start) / 2;if (mid == i) {int x = mid/n;int y = mid%n;sum = sum + matrix1[x][y] * matrix2[x][y];break;} else if (mid < i) {start = mid;} else {end = mid;}}if (i == start || i == end) {int x = i/n;int y = i%n;sum = sum + matrix1[x][y] * matrix2[x][y];}}return sum;}
}


这篇关于dot production的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/569285

相关文章

改进的《Combining Sketch and Tone for Pencil Drawing Production》铅笔画算法

随着深度学习越来越热,在图像领域,通过卷积神经网络训练的模型可以得到很酷炫的图像风格化效果,比如app store上的prisma应用,可以获得很好的效果,但是速度要稍微慢一些。不过传统的数学方法也可以做的很好,需要的只是你的想象力以及算法设计能力。        本文实现的铅笔画算法,基于论文《Combining Sketch and Tone for Pencil Dr

【Python】 numpy中运算符* @ mutiply dot的用法分析

https://blog.csdn.net/Invokar/article/details/89532476  引言: 最近同学在做机器学习作业时,代码中遇到了* @ np.mutiply .dot这个几个numpy的运算,发现有点晕,于是我在这里做几个简单的对比,以及列举需要注意的问题 首先先给一个比较简单的用法解释:*:               根据数据类型的不同,可能是做点

DOT:视觉SLAM的动态目标物跟踪

点云PCL免费知识星球,点云论文速读。 文章:DOT: Dynamic Object Tracking for Visual SLAM 作者:Irene Ballester, Alejandro Fontan, Javier Civera 翻译:分享者 本文仅做学术分享,如有侵权,请联系删除。欢迎各位加入免费知识星球,获取PDF论文,欢迎转发朋友圈分享快乐。 论文阅读模块将分享点云处理,SLAM

jnp.matmul和jnp.dot的区别?

jnp.matmul 和 jnp.dot 都是用于矩阵乘法的函数,但它们在处理多维数组(即张量)时有不同的行为。以下是它们的区别和具体用法: jnp.dot 主要用于向量点积和矩阵乘法。对于一维数组,计算向量的点积。对于二维数组,计算标准的矩阵乘法。对于多维数组,按照最后一个维度与倒数第二个维度进行计算。 import jax.numpy as jnp# 向量点积a = jnp.array

【安卓逆向】adb root adbd cannot run as root in production builds

尝试了很多方法不行, 最终在这篇贴纸看到这段代码 su -c "resetprop ro.debuggable 1";su -c "resetprop service.adb.root 1";su -c "magiskpolicy --live 'allow adbd adbd process setcurrent'";su -c "magiskpolicy --live 'all

[rust-006]《Production Matching for Large Learning Systems》读书笔记

Rete,拉丁语"net"的意思。Rete算法有两个内存数据结构:产生式内存数据结构production memory(PM);工作内存数据结构working memory(WM)。PM和WM在Rete算法的推理过程会始终变动。WM:存储Rete系统在计算过程中的一系列记录item,这些记录item表示各种事实fact。 这些事实fact包括内部:问题求解的当前内部状态事实;影响问题求解的外部世界

Golang:malformed module path “xxx“: missing dot in first path element

首先,这个问题往往是在golang中引入自己创建的包时发生的错误。解决方案如下 解决方案1: 检查被引入包下是否存在go.mod,因为你首先要保证你引入的是一个模块,而不只是一个文件夹,类似python包下init.py。因此,一个列子如下:假如你想在check模块中使用model中的变量,正确的架构应该是: (base) zhaodeng@zhaodeMacBook-Pro rpc %

【张量乘法】pytorch中的mul、dot、mm、matmul

张量的乘法是pytorch等神经网络开发框架中最常见、最基本的操作之一。 1,torch.mul 对应位置的元素相乘。mul即表示张量中对应位置元素的相乘,也是最容易理解的乘法。 import torcha = torch.tensor([[1, 2], [3, 4]])b = torch.tensor([[5, 6], [7, 8]])res = torch.mul(a, b)pr

(完全解决)Python字典dict如何由键key索引转化为点.dot索引

文章目录 背景解决方案基础版升级版 背景 For example, instead of writing mydict[‘val’], I’d like to write mydict.val. 解决方案 基础版 I’ve always kept this around in a util file. You can use it as a mixin on your

Mastering Photoshop CS3 for Print Design and Production

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息和本声明。否则将追究法律责任。 http://blog.csdn.net/topmvp - topmvp Unlock Your Creativity with Photoshop and Design More Powerful Images Photoshop has always been an ess