彻底解决 ModuleNotFoundError: No module named ‘torch_scatter‘

之前做实验报了一个错误,卡了很久。

具体就是这行代码

from torch_scatter import scatter_add

这个torch_scatter是非官方的库,经常安装失败,

找了很多的安装方法,都不好使,特别是对新版的pytorch+cuda环境

机缘巧合发现torch_scatter有github

https://github.com/rusty1s/pytorch_scatter/tree/master/torch_scatter

然后找到我调用的函数,再深挖他的依赖,新建一个名字叫torch_scatter.py的脚本。

然后就可以调用本地的脚本了。

我需要的是scatter_add,对应的脚本如下。

#torch_scatter.py
import torch
from typing import Optionaldef scatter_sum(src: torch.Tensor, index: torch.Tensor, dim: int = -1,out: Optional[torch.Tensor] = None,dim_size: Optional[int] = None) -> torch.Tensor:index = broadcast(index, src, dim)if out is None:size = list(src.size())if dim_size is not None:size[dim] = dim_sizeelif index.numel() == 0:size[dim] = 0else:size[dim] = int(index.max()) + 1out = torch.zeros(size, dtype=src.dtype, device=src.device)return out.scatter_add_(dim, index, src)else:return out.scatter_add_(dim, index, src)def scatter_add(src: torch.Tensor, index: torch.Tensor, dim: int = -1,out: Optional[torch.Tensor] = None,dim_size: Optional[int] = None) -> torch.Tensor:return scatter_sum(src, index, dim, out, dim_size)def broadcast(src: torch.Tensor, other: torch.Tensor, dim: int):if dim < 0:dim = other.dim() + dimif src.dim() == 1:for _ in range(0, dim):src = src.unsqueeze(0)for _ in range(src.dim(), other.dim()):src = src.unsqueeze(-1)src = src.expand(other.size())return src

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

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

相关文章

【C语言】如何规避野指针

✨✨ 欢迎大家来到莉莉的博文✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 目录 一、概念&#xff1a; 二、野指针成因&#xff1a; 2.1. 指针未初始化 2.2 指针越界访问 3. 指针指向的空间释放 三、如何规避野指针 3.…

专题二 - 滑动窗口 - leetcode 904. 水果成篮 | 中等难度

leetcode 904. 水果成篮 leetcode 904. 水果成篮 | 中等难度1. 题目详情1. 原题链接2. 基础框架 2. 解题思路1. 题目分析2. 算法原理3. 时间复杂度 3. 代码实现4. 知识与收获 leetcode 904. 水果成篮 | 中等难度 1. 题目详情 你正在探访一家农场&#xff0c;农场从左到右种植…

html5cssjs代码 016 表格示例

html5&css&js代码 016 表格示例 一、代码二、解释 这段HTML代码定义了一个网页&#xff0c;展示了不同类型的表格示例。页面使用了CSS样式来控制字体颜色、背景颜色、表格样式等。 一、代码 <!DOCTYPE html> <html lang"zh-cn"> <head>&l…

OpenResty使用Lua大全(一)Lua语法入门实战

文章目录 系列文章索引一、OpenResty使用Lua入门1、hello world2、nginx内部变量 二、Lua入门1、简介1、hello world2、基本语法&#xff08;1&#xff09;注释&#xff08;2&#xff09;数据类型&#xff08;3&#xff09;变量&#xff08;4&#xff09;函数&#xff08;5&…

【Java中的数组Array】

Java中的数组Array 一、数组的创建 package space.goldchen;/*** 数组初始化&#xff0c;数组定义** author 2021* create 2023-12-14 14:14*/ public class ArrayInit {public static void main(String[] args) {// 数组的初始化的三种方式int[] arr1 new int[5];int[] arr…

c++基础语法

文章目录 前言命名空间命名空间的使用 缺省参数缺省参数的使用 函数重载函数重载的作用函数重载的使用函数重载原理 引用引用的使用引用的使用场景引用和指针 extern Cinlineauto范围fornullptr 前言 大家好我是jiantaoyab&#xff0c;这篇文章给大家带来的是c语言没有的一些特…

【进阶五】Python实现SDVRP(需求拆分)常见求解算法——遗传算法(GA)

基于python语言&#xff0c;采用经典遗传算法&#xff08;GA&#xff09;对 需求拆分车辆路径规划问题&#xff08;SDVRP&#xff09; 进行求解。 目录 往期优质资源1. 适用场景2. 代码调整3. 求解结果4. 代码片段参考 往期优质资源 经过一年多的创作&#xff0c;目前已经成熟的…

Android 配置打包签名信息的两种方法

目录结构如下&#xff1a; 有2种方式&#xff1a; 第一种&#xff0c;直接配置&#xff1a; signingConfigs { debug { storeFile file("app/keystore.properties") storePassword "111111" keyAlias "key" keyPassword "111111" } …

Redis 订阅发布(Pub/Sub) 详解 如何使用订阅发布

Pub/Sub (发布订阅) Redis的发布订阅&#xff08;Pub/Sub&#xff09;是一种消息传递模式&#xff0c;它允许消息的发送者&#xff08;发布者&#xff09;将消息发送到通道&#xff0c;而订阅者则可以订阅一个或多个通道&#xff0c;并接收发布者发送到这些通道的消息。发布订…

学习记录之数学表达式(1)

文章目录 一、概述二、符号表2.1 常用符号表2.2 希腊字母表 三、集合的表示与运算3.1 集合的表示3.2 元素与集合3.3 集合的运算3.4 幂集3.5 笛卡尔积3.6 作业 一、概述 本系列内容参考闵老师的博客&#xff1a;数学表达式: 从恐惧到单挑 (符号表) &#xff08;1&#xff09;数学…

【Java】bigdecimal转为string时会变成科学计数法 | 大数取消转换为科学计数法

遇见“隐形刺客” 在银行写代码&#xff0c;我们通常用BigDecimal来处理大数计算&#xff0c;确保精度无损&#xff0c;正所谓“精打细算”。然而&#xff0c;当你满怀信心地将BigDecimal转换为String&#xff0c;准备输出或存储时&#xff0c;突然发现它变成了一串让人眼花缭…

Linux 服务器挂载盘阵(运维工程师必备技能难度***)

以下为真实操作过程 [rootdg1 ~]# fdisk -l -uDisk /dev/sda: 32.2 GB, 32212254720 bytes 255 heads, 63 sectors/track, 3916 cylinders, total 62914560 sectors Units sectors of 1 * 512 512 bytesDevice Boot Start End Blocks Id System /dev/s…

回归分析之boxcox

Box-Cox变换是一种用于处理非正态分布数据的统计方法。它通过对数据进行一系列的变换&#xff0c;将其转化为近似正态分布的形式&#xff0c;以便用于回归分析。 Box-Cox变换的基本思想是通过对数据应用一个参数λ的幂函数变换&#xff0c;其中λ可以是任意实数。具体而言&…

2022-6 青少年软件编程(图形化) 等级考试试卷(一级)

第1题:【 单选题】 广场中有声控喷泉, 当声音的音量大于 60 的时候, 喷泉就会喷出水, 现在的音量为30,下列哪个选项可以让喷泉喷出水? ( ) A: B: C: D: 【正确答案】: B 【试题解析】 : 当前声音的音量为 30, 需要将声音增加到 60 以上就可以让喷泉喷出水, …

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的日常场景下的人脸检测系统(深度学习模型+PySide6界面+训练数据集+Python代码)

摘要&#xff1a;开发用于日常环境中的人脸识别系统对增强安全监测和提供定制化服务极为关键。本篇文章详细描述了运用深度学习技术开发人脸识别系统的全过程&#xff0c;并附上了完整的代码。该系统搭建在强大的YOLOv8算法之上&#xff0c;并通过与YOLOv7、YOLOv6、YOLOv5的性…

HTML5:七天学会基础动画网页12

“书接上回”继续对transition补充&#xff0c;在检查中找到ease后&#xff0c;鼠标放到ease前的紫色小方块就可以对运动曲线进行调整&#xff0c;这个曲线叫贝塞尔曲线&#xff0c;这里不做别的补充&#xff0c;不用了解&#xff0c;我们只要知道这个运动方式不只是有简单的匀…

.Net Core 中间件验签

文章目录 为什么是用中间件而不是筛选器&#xff1f;代码实现技术要点context.Request.EnableBuffering()指针问题 小结 为什么是用中间件而不是筛选器&#xff1f; 为什么要用中间件验签&#xff0c;而不是筛选器去验签? 1、根据上图我们可以看到&#xff0c;中间件在筛选器之…

MySQL--彻底解决Navicat备份时的报错

原文网址&#xff1a;MySQL--彻底解决Navicat备份时的报错_IT利刃出鞘的博客-CSDN博客 简介 本文介绍彻底解决Navicat备份时的报错。 正确的方法 见&#xff1a;MySQL命令--使用mysqldump导出导入数据库_IT利刃出鞘的博客-CSDN博客 错误的方法 方法1.转储SQL文件 这种方…

2.2 塑性力学——主应力、主方向、不变量

个人专栏—塑性力学 1.1 塑性力学基本概念 塑性力学基本概念 1.2 弹塑性材料的三杆桁架分析 弹塑性材料的三杆桁架分析 1.3 加载路径对桁架的影响 加载路径对桁架的影响 2.1 塑性力学——应力分析基本概念 应力分析基本概念 2.2 塑性力学——主应力、主方向、不变量 主应力、主…

【嵌入式——QT】标准对话框

【嵌入式——QT】标准对话框 文件对话框颜色对话框字体对话框输入对话框消息框代码示例 文件对话框 QFileDialog 常用静态函数 getOpenFileName&#xff1a;选择打开一个文件&#xff1b;getOpenFileNames&#xff1a;选择打开多个文件&#xff1b;getSaveFileName&#xff1…