t.einsum(‘ijk,jkl->ijl‘, [a,b])

news2024/10/5 18:31:43

这个东西虽然计算起来真的方便的很多,但是对于人的理解难度是真的加大的,特别是高纬度的时候,例如:t.einsum(‘ijk,jkl->ijl’, [a,b])三维计算的时候。因此,最好的方法就是举个例子并且换一种方式来实现相同的功能(即循环),然后debug最容易理解。这也是在学习过程中一个好的解决问题的方式。

import torch as t

# 假设输入张量 x_rep 的形状为 [batch_size, n_rules, input_size]
# 假设参数张量 self.Cons 的形状为 [n_rules, input_size, output_size]
batch_size = 2
n_rules = 3
input_size = 4
output_size = 2

# 生成示例输入张量 x_rep 和参数张量 self.Cons
x_rep = t.tensor([[[1, 2, 3, 4],
                   [5, 6, 7, 8],
                   [9, 10, 11, 12]],

                  [[13, 14, 15, 16],
                   [17, 18, 19, 20],
                   [21, 22, 23, 24]],
                  [[13, 14, 15, 16],
                   [17, 18, 19, 20],
                   [21, 22, 23, 24]]
                  ], dtype=t.float32)

self_Cons = t.tensor([[[0.1, 0.2],
                       [0.3, 0.4],
                       [0.5, 0.6],
                       [0.7, 0.8]],

                      [[1.1, 1.2],
                       [1.3, 1.4],
                       [1.5, 1.6],
                       [1.7, 1.8]],

                      [[2.1, 2.2],
                       [2.3, 2.4],
                       [2.5, 2.6],
                       [2.7, 2.8]]], dtype=t.float32)

# 使用循环进行张量运算
cons = t.zeros((batch_size, n_rules, output_size), dtype=t.float32)

for i in range(batch_size):
    for j in range(n_rules):
        for l in range(output_size):
            for k in range(input_size):
                cons[i, j, l] += x_rep[i, j, k] * self_Cons[j, k, l]

print("输出张量 cons:")
print(cons)

在这里插入图片描述
我知道你这时候其实已经很着急了(在看到我的文章的时候已经找了很多资料但是都没解释清楚让你理解),然后看到4层循环直接心态炸裂,根本就不可能在去debug。
因此,我直接告诉你第一个值,第二值怎么算出来的,你的心里会好受点:
第一个值5:1×0.1+2×0.3+3×0.5+4×0.7=5
第二个值6:1×0.2+2×0.4+3×0.6+4×0.8=6
第三个值37.4:5×1.1+6×1.3+7×1.5+8×1.7=37.4

希望对您有帮助,么么哒!!!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安卓开发--4步实现Menu菜单动态显示隐藏

MenuInflater用法_韦_恩的博客-CSDN博客MenuInflater是用来加载menu布局文件的.应用程序运行时会预先加载资源中的布局文件,如果Menu布局中的资源比较多,会影响性能,所以可以选择MenuInflater方式用的时候加载,这样减轻了应用程序…

C语言通讯录

在本博客中,我们将介绍如何使用C语言构建一个基本的通讯录。主要涉及C语言的指针、结构体、动态内存管理、文件操作等方面的知识。我们还将学习如何使用C语言的各种功能和技巧来实现通讯录的各种操作,如添加联系人、编辑联系人、删除联系人和搜索联系人等…

并发与并行的区别(详细介绍)

并发和并行的区别为:意思不同、侧重不同、处理不同。 一、意思不同 1、并发:并发是指两个或多个事件在同一时间间隔发生,把任务在不同的时间点交给处理器进行处理。在同一时间点,任务并不会同时运行。 2、并行:并行…

【uniapp】更改富文本编辑器图片大小

代码块 //<view v-html"productDetails"></view><rich-text :nodes"productDetails"></rich-text>// 假设htmlContent字段是后台返回的富文本字段var htmlContent res.result.productDetailsconst regex new RegExp(<img, gi…

macOS Big Sur 11.7.9 (20G1426) 正式版 ISO、PKG、DMG、IPSW 下载

macOS Big Sur 11.7.9 (20G1426) 正式版 ISO、PKG、DMG、IPSW 下载 本站下载的 macOS 软件包&#xff0c;既可以拖拽到 Applications&#xff08;应用程序&#xff09;下直接安装&#xff0c;也可以制作启动 U 盘安装&#xff0c;或者在虚拟机中启动安装。另外也支持在 Window…

nginx怎么做负载均衡

Nginx怎么做负载均衡 Nginx 是一个高性能的开源反向代理服务器&#xff0c;可以用于实现负载均衡。负载均衡指的是将用户请求平均分配给多个服务器&#xff0c;以提高整体系统性能和可靠性。下面是一个详细介绍如何使用 Nginx 实现负载均衡的步骤&#xff1a; 步骤 1&#xf…

vue项目打包成App

地址一 地址二 一、将项目开发完成后&#xff0c;在vue.config.js 文件中添加路径 publicPath:‘./’ 在router/index.js关闭路由的history模式&#xff08;默认哈希&#xff09; 二、npm run build&#xff0c;生成的dist文件目录 三、打开 HBuilder X 开发工具 新建 >…

线性代数(基础篇):第一章:行列式 、第二章:矩阵

文章目录 线性代数0&#xff1a;串联各章等价条件 第1章 行列式1.行列式的定义(1)行列式的本质定义(2)行列式的逆序数法定义(3)行列式的展开定理 (第三种定义) 2.行列式的性质3.行列式的公式4.基本行列式(1)主对角线行列式(2)副对角线行列式(3)拉普拉斯行列式(4)范德蒙德行列式…

SpringBoot项目——springboot配置Tomcat两个端口,https和http的方式 jar的打包和运行

目录 引出springboot配置Tomcat两个端口&#xff0c;https和http的方式1.生成SSL证书2.配置client.p12和https端口3.配置http的8080端口WebServerFactoryCustomizer接口4.启动项目 项目应用&#xff1a;在某项目中有一个功能需要https协议Tomcat启动https和http两个端口根据htt…

深度学习中标量,向量,矩阵和张量

1.标量(Scalar) 只有大小没有方向&#xff0c;可用实数表示的一个量 2.向量(Vector) 可以表示大小和方向的量 3.矩阵(Matrix) m行n列,矩阵中的元素可以是数字也可以是符号&#xff0c;在深度学习中一般是二维数组 4.张量(Tensor) 用来表示一些向量、标量和其他张量之间的…

Vue3使用Pinia-store选项式api和组合式api两种使用方式-快速入门demo

Pinia官方文档 选项式api /** Author: Jackie* Date: 2023-06-25 09:58:10* LastEditTime: 2023-07-24 17:32:25* LastEditors: Jackie* Description: pinia* FilePath: /vue3-demo-pinia/src/store/counter.js* version:*/ import { defineStore, storeToRefs } from pinia;…

el-table 表头设置渐变色

<el-table :data"tableData" stripe><el-table-column prop"name" label"测试" align"left"></el-table-column><el-table-column prop"code" label"测试1" align"left"></…

【《Go编程进阶实战:开发命令行应用、HTTP应用和gRPC应用》——指导你使用Go语言构建健壮的、生产级别的应用程序】

谷歌在2009年发布了Go编程语言&#xff0c;并于2012年发布了1.0版。Go语言具有强大的兼容性&#xff0c;一直用于编写可扩展的重量级程序(命令行应用程序、关键基础设施工具乃至大规模分布式系统)。凭借简单性、丰富的标准库和蓬勃发展的第三方软件包生态系统&#xff0c;Go语言…

渗透D1---基础知识回顾

端口&#xff1a; http 80 https 443 ftp 20 21 telnet 23 ssh 22 DNS 53 DHCP 67 68 mail smtp 25 pop3 110 ladp 389 域控制器 3306 mysql 关系型 sqlserver 1433 c# oracle 1521 3389 windows 远程连接端口 redis nosql 6379 编码介绍&#xff1a; 主要有两…

Git实现同一个项目多个版本

需求&#xff1a; 最近项目有这样一个需求&#xff0c;就是同一个项目要求给不同的两个客户&#xff0c;这两个客户需要的功能和界面不一样但基础功能一样&#xff0c;然后修改基础功能时这两个项目的基础功能要同时修改。避免同样的代码在两个项目上各自再开发一遍。 解决办…

前端JS识别二维码内容

原文&#xff1a;https://www.cnblogs.com/houxianzhou/p/15030351.html <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>图片二维码识别</title><script src"https://cdn.bootcss.com/jquery/3.4.1/jque…

如何在3ds max中创建可用于真人场景的巨型机器人:第 5 部分

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 1. After Effects 中的项目设置 步骤 1 打开“后效”。 打开后效果 步骤 2 我有真人版 我在After Effects中导入的素材。这是将 用作与机器人动画合成的背景素材。 实景镜头 步骤 3 有背景 选定的素材…

halcon微积分原理生成卡尺,异形产品宽度测量

1.普通测量项目中&#xff0c;我们可以利用halcon的测量模型&#xff0c;例如add_metrology_object_line_measure。很方便的测量直线&#xff0c;圆&#xff0c;椭圆&#xff0c;矩形等。这些工具都有一个缺点是&#xff0c;需要提前绘制测量位置&#xff0c;然后利用仿射变换跟…

力扣1116.打印零与奇偶数--------题解

题目描述 现有函数 printNumber 可以用一个整数参数调用&#xff0c;并输出该整数到控制台。 例如&#xff0c;调用 printNumber(7) 将会输出 7 到控制台。 给你类 ZeroEvenOdd 的一个实例&#xff0c;该类中有三个函数&#xff1a;zero、even 和 odd 。ZeroEvenOdd 的相同实…

使用langchain与你自己的数据对话(二):向量存储与嵌入

之前我以前完成了“使用langchain与你自己的数据对话(一)&#xff1a;文档加载与切割”这篇博客&#xff0c;没有阅读的朋友可以先阅读一下&#xff0c;今天我们来继续讲解deepleaning.AI的在线课程“LangChain: Chat with Your Data”的第三门课&#xff1a;向量存储与嵌入。 …