RIPGeo代码理解(五)utils.py( 辅助函数)第一部分

 

 代码链接:RIPGeo代码实现

├── lib # 包含模型(model)实现文件
    │        |── layers.py # 注意力机制的代码。
    │        |── model.py # TrustGeo的核心源代码。
    │        |── sublayers.py # layer.py的支持文件。
    │        |── utils.py # 辅助函数。

一、导入常用库和模块

from __future__ import print_function
import numpy as np
import torch
import warnings
import torch.nn as nn
import random
import matplotlib.pyplot as plt
import copy

这段代码首先包含一些导入语句,接着进行一些版本和警告的处理,最后导入了一些常用的库(numpytorchmatplotlib),并定义了一些常用的模块(nnplt)。

1、from __future__ import print_function:这是为了确保代码同时在Python 2和Python 3中都能正常运行。在Python 2中,print是一个语句,而在Python 3中,print()是一个函数。通过这个导入语句,可以在Python 2中使用Python 3风格的print函数。

2、import numpy as np:导入NumPy库,并用np作为别名。NumPy是一个用于科学计算的库,提供了数组等高性能数学运算工具。

3、import torch::导入PyTorch库。PyTorch是一个深度学习框架,提供了张量计算和神经网络搭建等功能。

4、import warnings:导入warnings模块,用于处理警告。

5、import torch.nn as nn:导入PyTorch中的神经网络模块。

6、import random:导入Python的random模块,用于生成伪随机数。

7、import matplotlib.pyplot as plt:导入matplotlib库的pyplot模块,用于绘制图表。

8、import copy:导入Python的copy模块,用于复制对象。

二、warnings.filterwarnings(action='once')

warnings.filterwarnings(action='once')

设置了在使用warnings.filterwarnings时的参数。filterwarnings函数用于配置警告过滤器,以控制哪些警告会被触发,以及如何处理这些警告。

具体来说,action='once'表示警告信息只会被显示一次。这对于一些可能会频繁触发的警告而言是一种控制方式,以避免在控制台或日志中大量重复的警告信息。在第一次触发警告时,它会被显示,但在后续的同类警告中,将不再显示。

请注意,这个配置仅适用于在warnings模块中配置的警告,它并不会影响其他类型的警告或错误。

三、DataPerturb()  数据扰动

class DataPerturb:def __init__(self, eta=1):self.eta = etaself.loss = torch.nn.MSELoss(reduction='sum')def perturb(self, model, data):# originallm_X, lm_Y, tg_X, tg_Y, lm_delay, tg_delay = data# obtain new graph representation_, ori_graph_feature = model(lm_X, lm_Y, tg_X,tg_Y, lm_delay,tg_delay)# add Gaussian data perturbnew_lm_X, new_lm_Y, new_tg_X, new_tg_Y, new_lm_delay, new_tg_delay = lm_X.clone(), lm_Y.clone(), \tg_X.clone(), tg_Y.clone(), \lm_delay.clone(), tg_delay.clone()new_lm_X[:, -16:] += self.eta * torch.normal(0, torch.ones_like(new_lm_X[:, -16:]) * new_lm_X[:, -16:]).cuda()new_tg_X[:, -16:] += self.eta * torch.normal(0, torch.ones_like(new_tg_X[:, -16:]) * new_tg_X[:, -16:]).cuda()new_lm_delay += self.eta * torch.normal(0, torch.ones_like(new_lm_delay) * new_lm_delay).cuda()new_tg_delay += self.eta * torch.normal(0, torch.ones_like(new_tg_delay) * new_tg_delay).cuda()# obtain new graph representation_, new_graph_feature = model(new_lm_X, new_lm_Y, new_tg_X,new_tg_Y, new_lm_delay,new_tg_delay)data_loss = self.loss(ori_graph_feature, new_graph_feature)return data_loss

这段代码定义了一个名为 DataPerturb 的类,其目的是对给定的数据进行扰动,并计算扰动后的损失。

(一)__init__()

    def __init__(self, eta=1):self.eta = etaself.loss = torch.nn.MSELoss(reduction='sum')

__init__ 方法中,类初始化时可以指定一个参数 eta,默认为1。该参数用于控制扰动的强度。

损失函数使用MSELoss。

(二)perturb()

    def perturb(self, model, data):# originallm_X, lm_Y, tg_X, tg_Y, lm_delay, tg_delay = data# obtain new graph representation_, ori_graph_feature = model(lm_X, lm_Y, tg_X,tg_Y, lm_delay,

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

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

相关文章

跨境电商商品采集API接口

跨境电商数据集介绍 我们就以电商商品的数据集作为依托,从而来了解什么是数据集,可以通过什么方式来进行数据集的获取。 什么是数据集 电商商品数据集通常是指收集自电子商务平台的商品信息的结构化数据集合。这些数据包括但不限于商品名称、价格、描述…

Linux发布项目(包括前端和后端)到OpenEuler虚拟机上

后端:SpringBoot 前端:VUE3 操作系统:Linux 虚拟机:OpenEuler 发布项目是需要关闭虚拟机上的防火墙 systemctl stop firewalld 一、发布后端项目到虚拟机 1打包后端项目为jar包 2将打包后的jar包放到虚拟机 /opt 目录下 3 运行项…

算法体系-12 第 十二 二叉树的基本算法 下

一 实现二叉树的按层遍历 1.1 描述 1)其实就是宽度优先遍历,用队列 2)可以通过设置flag变量的方式,来发现某一层的结束(看题目)看下边的第四题解答 1.2 代码 public class Code01_LevelTraversalBT {publ…

Elsevier(爱思唯尔)如何查询特刊special issue

1. 以Knowledge-Based Systems为例 网站:https://www.sciencedirect.com/journal/knowledge-based-systems 2.具体位置

Linux进程间通信【一】

进程间通信介绍 进程间通信的概念 进程间通信简称IPC(Interprocess communication),进程间通信就是在不同进程之间传播或交换信息。 进程间通信的目的 数据传输:一个进程需要将它的数据发送给另一个进程资源共享:多…

作业 二维数组-基础

输出数组的第k行数 题目描述 输入一个二维数组&#xff0c;显示他的第k行的值。 输入 第一行n&#xff0c;m两个整数&#xff0c;代表数组的行&#xff0c;列&#xff08;m<100,n<100&#xff09; n行&#xff0c;每行m个整数 一个整数k 输出 第k行所有的数据用空格隔开…

bclinux编译升级vsftpd3.0.5

下载最新安装包 https://security.appspot.com/downloads/vsftpd-3.0.5.tar.gz tar -zxvf vsftpd-3.0.5.tar.gz cd vsftpd-3.0.5 yum install make -y yum install gcc -y yum install libcap-devel -y make make install cd /usr/sbin/ mv vsftpd vsftpd_bak ln -s /u…

linux内核input子系统概述

目录 一、input子系统二、关键数据结构和api2.1 数据结构2.1.1 input_dev2.1.2 input_handler2.1.3 input_event2.1.4 input_handle 2.2 api接口2.2.1 input_device 相关接口input_device 注册流程事件上报 2.2.2 input handle 相关接口注册 handle指定 handle 2.2.3 input han…

基于springboot+vue的电影院购票系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

数码管的动态显示

1.共阴极数码管实现HELLO #include<reg51.h> char str[]{0x76,0x79,0x38,0x38,0x3F}; //HELLO char wei[]{0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; void delay(int n) {int i0,j0;for(i0;i<n;i){for(j0;j<120;j);} } void seg() {int i;for(i0;i<…

NC 现金流量查询 节点 多账簿联查时,根据所选择的列来判断明细和现金流量联查按钮是否可用,根据添加列选择监听事件处理。

NC 现金流量查询 节点 多账簿联查时&#xff0c;根据所选择的列来判断明细和现金流量联查按钮是否可用&#xff0c;如下图的情况&#xff1a; 在现金流量查询界面UI类的initTable(QueryConditionVO conVO)方法中添加列选择监听事件即可&#xff0c;如下&#xff1a; // 列监听…

LeetCode刷题【树状数组、并查集、二叉树】

目录 树状数组307. 区域和检索 - 数组可修改406. 根据身高重建队列673. 最长递增子序列的个数1409. 查询带键的排列 并查集128. 最长连续序列130. 被围绕的区域 二叉树94. 二叉树的中序遍历104. 二叉树的最大深度101. 对称二叉树543. 二叉树的直径108. 将有序数组转换为二叉搜索…

ptorch中的nn.KLDivLoss:KL散度损失

KL散度被广泛应用于度量分布之间的差异&#xff0c;其形式为&#xff1a; D K L ( P ∣ ∣ Q ) ∑ i 1 N p i l o g p i q i ∑ i 1 N p i ∗ ( l o g p i − l o g q i ) D_{KL}(P||Q)\sum_{i1}^{N}p_ilog\frac{p_i}{q_i}\sum_{i1}^{N}p_i*(logp_i-logq_i) DKL​(P∣∣Q)i…

web性能检测工具lighthouse

About Automated auditing, performance metrics, and best practices for the web. Lighthouse 可以自动检查Web页面的性能。 你可以以多种方式使用它。 浏览器插件 作为浏览器插件&#xff0c;访问chrome网上商店 搜索Lighthouse 插件安装。以两种方式使用。 方式一 安装…

DP:路径规划模型

创作不易&#xff0c;感谢三连支持&#xff01; 路径规划主要是让目标对象在规定范围内的区域内找到一条从起点到终点的无碰撞安全路径。大多需要用二维dp数组去实现 一、不同路径 . - 力扣&#xff08;LeetCode&#xff09;不同路径 class Solution { public:int uniquePath…

MR混合现实情景实训教学实验系统能帮助解决石油化工专业当前哪些教学困境

MR混合现实情景实训教学实验系统可以帮助石油化工专业解决以下教学困境&#xff1a; 1. 实训环境受限&#xff1a;石油化工专业需要模拟真实的生产环境进行实训&#xff0c;但由于场地、设备等因素的限制&#xff0c;无法为学生提供真实的生产环境。MR混合现实技术可以模拟真实…

重学SpringBoot3-MyBatis的三种分页方式

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 重学SpringBoot3-MyBatis的三种分页方式 准备工作环境搭建数据准备未分页效果 1. 使用MyBatis自带的RowBounds进行分页演示 2. 使用物理分页插件演示 3. 手动编写分页SQL…

pcl 凸包ConvexHull

pcl 凸包ConvexHull 头文件等 #include <pcl/surface/convex_hull.h>typedef pcl::PointXYZ PointT; typedef pcl::PointCloud<PointT> CloudT; typedef CloudT::Ptr CP 代码 CP PSO::tubao(CP cloud) {pcl::ConvexHull<PointT> hull;hull.setInputCloud…

openssl3.2 - exp - base64 / unbase64

文章目录 openssl3.2 - exp - base64 / unbase64概述笔记命令行实现程序实现END openssl3.2 - exp - base64 / unbase64 概述 想将2进制内容放到配置文件中, 作为配置项的值. 那先base64一下, 变成可见字符串后再写入配置文件. 先看了官方的命令行实现. 然后从官方命令行实现…

五、Spring源码学习之postProcessBeanFactory方法

简介 在应用程序上下文完成其标准初始化后&#xff0c;修改其内部的BeanFactory。此时&#xff0c;所有的bean定义都已经加载完成&#xff0c;但还没有任何bean被实例化。这允许在某些ApplicationContext实现中注册特殊的BeanPostProcessor等。 在应用程序上下文的初始化过程…