AI学习记录 - torch 的 matmul ,也就是点积的一些试验

有用大佬们点点赞

1、两个一维向量点积 ,求 词A 与 词A 之间的关联度

在这里插入图片描述

2、两个词向量之间求关联度,求 :

词A 与 词A 的关联度 =5
词A 与 词B 的关联度 = 11
词B 与 词A 的关联度= 11
词B 与 词B 的关联度= 25
在这里插入图片描述
刚刚好和矩阵乘法符合:
在这里插入图片描述

3、什么是矩阵乘法,举个例子

在这里插入图片描述

重点结论:矩阵乘法就是 求 词向量 与 词向量转置 之间的点积的集合,为什么是转置,注意要是把上面第二个矩阵当词向量的话,[5, 7]和[6, 8]分别是一个词向量。而不是 [5, 6]和[7, 8]。
3、如果是三维矩阵的点乘呢

在这里插入图片描述

重点结论:三维矩阵点乘就变成单独的二维矩阵进行点乘,所以点乘最多体现在二维矩阵,二维矩阵单独求点乘,求完再合并。
最终结论:点积和点乘没有关联性,但是点乘在特定场景下可以实现批量点积,有助于我们利用点乘的特性来批量求词与词之间的点积(关联性),在自注意力的时候可以使用。

试验代码:

一维向量点乘这样写会报错

import torch# 定义两个二维矩阵
A = torch.tensor([[1, 2]])
B = torch.tensor([[1, 2]])# 使用 matmul 计算展平向量的点积
dot_product = torch.matmul(A, B)print(dot_product)

在这里插入图片描述

正确一维向量点乘

import torch# 定义两个二维矩阵
A = torch.tensor([[1, 2]])
B = torch.tensor([[1], [2]])# 使用 matmul 计算展平向量的点积
dot_product = torch.matmul(A, B)print(dot_product)

在这里插入图片描述

二维矩阵点乘

import torch# 定义两个二维矩阵
A = torch.tensor([[1, 2], [3, 4]])
B = torch.tensor([[1, 3], [2, 4]])# 使用 matmul 计算展平向量的点积
dot_product = torch.matmul(A, B)print(dot_product)

在这里插入图片描述

三维矩阵点乘

import torch# 定义两个二维矩阵
A = torch.tensor([[[1, 2], [3, 4]],[   [1, 2], [3, 4]]])
B = torch.tensor([[[1, 3], [2, 4]],[   [1, 3], [2, 4]]])# 使用 matmul 计算展平向量的点积
dot_product = torch.matmul(A, B)
print(dot_product)

在这里插入图片描述

点积应该这样写

import torchvector_a = torch.tensor([1, 2, 3])
vector_b = torch.tensor([4, 5, 6])# 计算点积
dot_product = torch.dot(vector_a, vector_b)print(f"向量 A: {vector_a}")
print(f"向量 B: {vector_b}")
print(f"A 和 B 的点积: {dot_product}")

下面会报错,二维数组不可以点积

import torchvector_a = torch.tensor([[1, 2, 3],[1, 2, 3]])
vector_b = torch.tensor([[1, 2, 3],[1, 2, 3]])# 计算点积
dot_product = torch.dot(vector_a, vector_b)print(f"向量 A: {vector_a}")
print(f"向量 B: {vector_b}")
print(f"A 和 B 的点积: {dot_product}")

所以点积和点乘不是一个东西,只是点乘在某些场景下可以代表批量点积而已。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/398152.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python | Leetcode Python题解之第329题矩阵中的最长递增路径

题目: 题解: class Solution:DIRS [(-1, 0), (1, 0), (0, -1), (0, 1)]def longestIncreasingPath(self, matrix: List[List[int]]) -> int:if not matrix:return 0rows, columns len(matrix), len(matrix[0])outdegrees [[0] * columns for _ in…

opencv移植

1 简介 本机环境:windows10 64位;QT:5.14.2 ;本次移植不涉及源码编译,直接使用的编译好的源码。 2 MINGW编译环境 2.1 库文件下载 编译好的库文件下载地址:IJustLoveMyself/OpenCV-MinGW-Build: &#…

SPRING07_自动装配如何加强、@Autowired注解debug分析、总结

文章目录 ①. Spring启动一行代码:②. ApplicationContex增强功能③. 自动装配如何装配进来④. Autowired自动注入细节xml版⑤. Autowired注解版分析⑥. 总结一下 ①. Spring启动一行代码: ①. 创建一个IOC容器,传入容器的xml配置文件,Spring在整个创建容器的过程中全部都准备…

日期类比较大小和加减

日期比较大小 先定义一个日期类,这里包含年月日,这里头文件和源文件分离 重载符号 1.operator> 先声明函数 这里大于可以把*this> d 的情况全部列举出来 bool date::operator>(const date& d) {if (_year > d._year){return true;}e…

总要去趟沙漠吧:中卫沙坡头

周五 下班出发 西安 -> 固原 周六 疯狂的一天 陕甘宁蒙 沙坡头 集大漠、黄河、高山、绿洲为一处,具西北风光之雄奇,兼江南景色之秀美。有中国最大的天然滑沙场,有横跨黄河的“天下黄河第一索”,有黄河文化代表古老水车&#…

观测云突变告警,精准预测云原生的系统异常

背景 观测云 DataKit 是一个强大的数据采集工具,能够收集和监控容器化环境和 Kubernetes 集群的指标、对象和日志数据。通过灵活使用 DataKit 收集的数据,可以对 Kubernetes 集群进行深入的监控和分析,从而实现更好的运维和优化。以下是一些…

FRTIMP_YTFRB_WEB

FRTIMP_YTFRB_WEB 林业资源交易信息管理平台

Docker相关配置记录

Docker相关配置记录 换源 {"registry-mirrors": ["https://dockerhub.icu","https://docker.chenby.cn","https://docker.1panel.live","https://docker.awsl9527.cn","https://docker.anyhub.us.kg","htt…

网络通信之套接字

TCP服务端代码实现 #include<myhead.h> #define SER_POST 6666 //服务器端口 #define SER_IP "192.168.36.172"//服务器ip int main(int argc, const char *argv[]) {//1.创建套接字int sfd socket(AF_INET,SOCK_STREAM,0);//参数1&#xff1a;通信域//参数2…

零基础5分钟学会谷歌云GCP核心云架构技能 - 成本分析篇

简介&#xff1a; 欢迎来到小李哥谷歌云GCP云计算知识学习系列&#xff0c;适用于任何无云计算或者谷歌云技术背景的开发者&#xff0c;让大家零基础5分钟通过这篇文章就能完全学会谷歌云一个经典的服务开发架构方案。 我将每天介绍一个基于全球三大云计算平台&#xff08;AW…

AI赋能周界安防:智能视频分析技术构建无懈可击的安全防线

周界安全防范是保护机场、电站、油库、监狱、工业园区等关键设施免受非法入侵和破坏的重要措施。传统的周界安防手段主要依靠人员巡查和物理屏障&#xff0c;但这种方式不仅人力成本高&#xff0c;而且效率较低&#xff0c;难以满足日益复杂多变的安全需求。随着AI技术的引入&a…

windows10和linux(debian12)设置静态ip————附带详细过程

文章目录 0 背景1 linux&#xff08;debian&#xff09;1.1 查看网络配置1.2 获取ip动态分配下的配置1.3 打开网络配置文件1.4 重新启动网络服务1.5 验证设置 2 windows2.1 查看自动获取ip地址下的配置2.2 进行设置 0 背景 因为下位机只能获取固定的ip&#xff08;ip池很小&am…

QT自定义系统快捷键任务

关键代码 //自定义快捷键检测 connect(this->ui->hotkeySequenceEdit_1, &QKeySequenceEdit::keySequenceChanged,this, &HotTestWidget::setShortcut_1);// 托盘显示 trayIcon new QSystemTrayIcon(this); QPixmap pixmap("tray.png"); QIcon icon(…

【网络】IP和MAC地址的映射——ARP协议和ARP欺骗概述

目录 引言 ARP的工作机制 ARP欺骗 ARP欺骗的断网行为 ARP欺骗成为中间人 工具介绍 个人主页&#xff1a;东洛的克莱斯韦克-CSDN博客 引言 同一子网内不同主机用数据链路层的MAC地址来寻址&#xff0c;而不是子网内的私有IP&#xff08;网络层&#xff09;。数据包中的IP…

JDBC如何避免SQL注入

JDBC如何避免SQL注入 一 . 什么是SQL注入 SQL注入&#xff08;SQL Injection&#xff09;是一种代码注入技术&#xff0c;它允许攻击者将或“注入”恶意的SQL命令到后端数据库引擎执行。这些恶意的SQL命令可以执行未授权的数据库查询、修改数据、管理数据库服务器上的文件系统…

三级_网络技术_20_路由器的配置及使用

1.封禁ICMP协议&#xff0c;只转发212.78.170.166/27所在子网的所有站点的ICMP数据包&#xff0c;正确的access-list配置是()。 Router (config)#access-list 110 permit icmp 212.78.170.166 0.0.0.0 any Router (config)#access-list 110 deny icmp any any Router (confi…

day2-网络连接网卡配置原理

1.window网卡 理解&#xff1a; window 有 2 块网卡 本地网卡 192.168.13.253 用于连接外网 vmnet8 10.0.0.1(装虚拟机自动生成的 如果没有自动生成…) 虚拟机添加 2 块网卡&#xff1a; 第一块网卡 NAT 模式 添加网卡的时候设置 NAT 模式 2 个作用&#xff0c;用于连接 wi…

C++_继承

继承 基础认识 像模板是函数和类代码的复用&#xff0c;而继承是对类代码的复用&#xff0c;都是更多的把复杂的任务交给编译器处理。 使用方法 继承的方式 class的默认继承方式是private&#xff0c;struct的默认继承方式是public&#xff0c;但还是最好加上。 protected成…

C++ 函数模板和类模板

参考视频&#xff1a;C类模板_哔哩哔哩_bilibili 遗留问题&#xff1a;编译器怎么处理函数模板和类模板 目录 一、为什么会有函数模版&#xff1f;函数模板是为了解决什么问题&#xff1f; 二、函数模板的概念 三、函数模版的使用 四、函数模板的特化 五、类模板的概念 …

基于ssm+vue+uniapp的英语学习交流平台小程序

开发语言&#xff1a;Java框架&#xff1a;ssmuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;M…