非零掩码矩阵邻接矩阵

文章目录

  • 1. 举例:
  • 2. python 代码
  • 3. 邻接矩阵

1. 举例:

在深度学习过程中,我们经常会用到掩码矩阵,比如我们有一个矩阵A表示如下,希望得到矩阵B,在矩阵A的非零位置表示为1,零位置表示为0,
A = [ 2 3 0 0 0 1 3 4 2 0 ] → B = [ 1 1 0 0 0 1 1 1 1 0 ] \begin{equation} A=\begin{bmatrix} 2&3&0&0&0\\\\ 1&3&4&2&0 \end{bmatrix}\to B=\begin{bmatrix} 1&1&0&0&0\\\\ 1&1&1&1&0 \end{bmatrix} \end{equation} A= 2133040200 B= 1111010100

2. python 代码

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @FileName  :MatrixNoneZero2OnesLike.py
# @Time      :2024/12/22 16:20
# @Author    :Jason Zhang
import torch
import torch.nn as nn


class MatrixNoneZero2OnesLike(object):
    def __init__(self, in_matrix):
        self.in_matrix = in_matrix
        self._result = torch.zeros_like(self.in_matrix)

    @property
    def result(self):
        my_result = torch.zeros_like(self.in_matrix)
        my_result_bool = self.in_matrix.to(torch.bool)
        self._result = my_result.masked_fill(my_result_bool, 1)
        return self._result


if __name__ == "__main__":
    run_code = 0
    matrix_mya = torch.tensor([[2, 3, 0, 0, 0], [1, 3, 4, 2, 0]])
    my_matrix_test = MatrixNoneZero2OnesLike(matrix_mya)
    my_matrix_test_result = my_matrix_test.result
    print(f"matrix_mya=\n{matrix_mya}")
    print(f"my_matrix_test_result=\n{my_matrix_test_result}")
  • 结果:
matrix_mya=
tensor([[2, 3, 0, 0, 0],
        [1, 3, 4, 2, 0]])
my_matrix_test_result=
tensor([[1, 1, 0, 0, 0],
        [1, 1, 1, 1, 0]])

3. 邻接矩阵

B = [ 1 1 0 0 0 1 1 1 1 0 ] → C = [ [ 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] [ 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 ] ] \begin{equation} B=\begin{bmatrix} 1&1&0&0&0\\\\ 1&1&1&1&0 \end{bmatrix}\to C= \begin{bmatrix} \begin{bmatrix} 1&1&0&0&0\\\\ 1&1&0&0&0\\\\ 0&0&0&0&0\\\\ 0&0&0&0&0\\\\ 0&0&0&0&0 \end{bmatrix}\\\\ \begin{bmatrix} 1&1&1&1&0\\\\ 1&1&1&1&0\\\\ 1&1&1&1&0\\\\ 0&0&0&0&0\\\\ 0&0&0&0&0 \end{bmatrix} \end{bmatrix} \end{equation} B= 1111010100 C= 1100011000000000000000000 1110011100111001110000000

  • python code
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @FileName  :MatrixNoneZero2OnesLike.py
# @Time      :2024/12/22 16:20
# @Author    :Jason Zhang
import torch
import torch.nn as nn


class MatrixNoneZero2OnesLike(object):
    def __init__(self, in_matrix):
        self.in_matrix = in_matrix
        self._result = torch.zeros_like(self.in_matrix)

    @property
    def result(self):
        my_result = torch.zeros_like(self.in_matrix)
        my_result_bool = self.in_matrix.to(torch.bool)
        self._result = my_result.masked_fill(my_result_bool, 1)
        return self._result


class AdjacencyMatrix(object):
    def __init__(self, in_matrix):
        self.in_matrix = in_matrix
        self.row, self.column = self.in_matrix.shape
        self._result = torch.zeros((self.row, self.column, self.column))

    @property
    def result(self):
        self._result = torch.zeros((self.row, self.column, self.column))
        matrix_dim1 = torch.unsqueeze(self.in_matrix, dim=1)
        matrix_bmm = torch.bmm(matrix_dim1.transpose(-1, -2), matrix_dim1)
        self._result = matrix_bmm
        return self._result


if __name__ == "__main__":
    run_code = 0
    matrix_mya = torch.tensor([[2, 3, 0, 0, 0], [1, 3, 4, 2, 0]])
    my_matrix_test = MatrixNoneZero2OnesLike(matrix_mya)
    my_matrix_test_result = my_matrix_test.result
    my_adjacency = AdjacencyMatrix(my_matrix_test_result)
    my_adjacency_result = my_adjacency.result
    print(f"matrix_mya=\n{matrix_mya}")
    print(f"my_matrix_test_result=\n{my_matrix_test_result}")
    print(f"my_adjacency_result=\n{my_adjacency_result}")
  • 结果:
matrix_mya=
tensor([[2, 3, 0, 0, 0],
        [1, 3, 4, 2, 0]])
my_matrix_test_result=
tensor([[1, 1, 0, 0, 0],
        [1, 1, 1, 1, 0]])
my_adjacency_result=
tensor([[[1, 1, 0, 0, 0],
         [1, 1, 0, 0, 0],
         [0, 0, 0, 0, 0],
         [0, 0, 0, 0, 0],
         [0, 0, 0, 0, 0]],

        [[1, 1, 1, 1, 0],
         [1, 1, 1, 1, 0],
         [1, 1, 1, 1, 0],
         [1, 1, 1, 1, 0],
         [0, 0, 0, 0, 0]]])

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python 自动化 打开网站 填表登陆 例子

图样 简价: 简要说明这个程序的功能: 1. **基本功能**: - 自动打开网站 - 自动填写登录信息(号、公司名称、密码) - 显示半透明状态窗口实时提示操作进度 2. **操作流程**: - 打开网站后自动…

STM32-笔记10-手写延时函数(SysTick)

1、什么是SysTick Systick,即滴答定时器,是内核中的一个特殊定时器,用于提供系统级的定时服务。该定时器是一个24位的倒计数定时器‌。它从设定的初值(即重载值)开始计数,每经过一个系统时钟周期&#xff0…

【ETCD】【实操篇(十五)】etcd集群成员管理:如何高效地添加、删除与更新节点

etcd 是一个高可用的分布式键值存储,广泛应用于存储服务发现、配置管理等场景。为了确保集群的稳定性和可扩展性,管理成员节点的添加、删除和更新变得尤为重要。本文将指导您如何在etcd集群中处理成员管理,帮助您高效地维护集群节点。 目录 …

反应力场的生成物、反应路径分析方法

关注 M r . m a t e r i a l , \color{Violet} \rm Mr.material\ , Mr.material , 更 \color{red}{更} 更 多 \color{blue}{多} 多 精 \color{orange}{精} 精 彩 \color{green}{彩} 彩! 主要专栏内容包括: †《LAMMPS小技巧》: ‾ \textbf…

GIT与github的链接(同步本地与远程仓库)

1.官网下载GIT Git - 安装 Git 2.GIT生成密钥 2.1 打开gitbash配置邮箱与用户名(非初次使用GIT跳过这一步) git config --global user.name "你的用户名" git config --global user.email "你的邮箱" 2.2 生成ssh密匙 1&#xff0…

从虚拟到现实:AI与AR/VR技术如何改变体验经济?

引言:体验经济的崛起 在当今消费环境中,产品与服务早已不再是市场竞争的唯一焦点,能够提供深刻感知和独特体验的品牌,往往更能赢得消费者的青睐。这种转变标志着体验经济的崛起。体验经济不仅仅是简单的买卖行为,而是通…

利用Python爬虫速卖通按关键字搜索AliExpress商品

在当今互联网时代,数据的价值不言而喻,尤其是在电子商务领域。对于从事市场研究、数据分析或者个人项目开发的人士来说,能够从电商平台如速卖通(AliExpress)获取商品数据是一项非常有用的技能。Python以其简洁明了的语…

qt QZipWriter详解

1、概述 QZipWriter是Qt框架中用于创建ZIP文件的类。它允许开发者将多个文件和目录压缩成一个ZIP文件,支持多种压缩算法,并且易于集成到现有的Qt项目中。通过QZipWriter,开发者可以轻松实现文件的压缩、管理压缩包中的文件等功能。 需要注意…

HarmonyOS NEXT 实战之元服务:静态案例效果---查看国内航班服务

背景: 前几篇学习了元服务,后面几期就让我们开发简单的元服务吧,里面丰富的内容大家自己加,本期案例 仅供参考 先上本期效果图 ,里面图片自行替换 效果图1完整代码案例如下: Index代码 import { authen…

【Java】Jackson序列化案例分析

1.Jackson介绍 Jackson 是一个流行的 Java 库,用于处理 JSON 数据。它提供了高效的序列化和反序列化功能,能够将 Java 对象转换为 JSON 格式,反之亦然。 它由 FasterXML 开发和维护。Jackson 的设计目标是提供高效、灵活且易于使用的 JSON 处…

Java反射学习(2)(“反射“机制获取构造方法及内部信息(Constructor类))

目录 一、"Class"对象实例化的常见三种方式以及使用时机。 (1)源代码(编写)阶段——使用全限定类名.forName()。 (2)加载阶段——使用类名.class。 (3)运行阶段——使用对象.getClass()。 二、Ja…

洛谷 P1595 信封问题 C语言dp

题目描述 某人写了 n 封信和 n 个信封,如果所有的信都装错了信封。求所有信都装错信封共有多少种不同情况。 输入格式 一个信封数 n,保证 n≤20。 输出格式 一个整数,代表有多少种情况。 输入输出样例 输入 #1 2 输出 #1 1 输入 #2 3 输…

【LuaFramework】服务器模块相关知识

目录 一、客户端代码 二、本地服务器代码 三、解决服务器无法多次接收客户端消息问题 一、客户端代码 连接本地服务器127.0.0.1:2012端口(如何创本地服务器,放最后说),连接成功后会回调 协议号Connect是101,其他如下…

解决Ascend上vllm运行时出现urllib3.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED]

背景 尝试使用vllm模型,脚本代码如下: from vllm import LLM, SamplingParamsprompts ["Hello, my name is","The president of the United States is","The capital of France is","The future of AI is", …

【卷积神经网络】常用评价指标总结

评估指标 概述 该评价指标适合分类任务与目标检测,主要用于评估模型的性能。该文章对相关指标进行总结,同时对输出的图片进行学习分析 混淆矩阵的组成 TP(True Positives,真正例):实际为正例,…

HarmonyOS NEXT 的技术发展和市场趋势:打造1+8+N的万物互联新世界

随着5G、AI、物联网等技术的飞速发展,全球智能设备和操作系统的竞争也日益激烈。在这一背景下,华为推出的HarmonyOS NEXT正逐渐成为智能设备生态中一个重要的参与者,其独特的18N战略布局以及跨设备、跨平台的互联互通理念,正在塑造…

免费 IP 归属地接口

免费GEOIP,查询IP信息,支持IPV4 IPV6 ,包含国家地理位置,维度,asm,邮编 等,例如 例如查询1.1.1.1 http://geoip.91hu.top/?ip1.1.1.1 返回json 对象

以太网通信--读取物理层PHY芯片的状态

PHY芯片通过MDIO接口进行读写,框图如下所示: 原理很简单,就是按照时序将PHY芯片的指定寄存器信息读出或者写入。 MDC时钟需要输出到PHY芯片,一般不低于80MHz。 MDIO是双向接口,FPGA读出状态信息时为输入,FP…

Docker服务发现新纪元:探索Consul的无限魅力

作者简介:我是团团儿,是一名专注于云计算领域的专业创作者,感谢大家的关注 •座右铭: 云端筑梦,数据为翼,探索无限可能,引领云计算新纪元个人主页:团儿.-CSDN博客 目录 前言&…

OpenHarmony-6.IPC/RPC组件

IPC/RPC组件机制 1.基本概念 IPC:设备内的进程间通信(Inter-Process Communication)。 RPC:设备间的进程间通信(Remote Procedure Call)。 IPC/RPC用于实现跨进程通信,不同的是前者使用Binder驱…