类的参数传递

2024-06-17 00:12
文章标签 参数传递

本文主要是介绍类的参数传递,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

非计算机科班出身果然好多基础的需要补,但是我感觉,愿意学,总归是可以学会的。

self.gc1 = tg.nn.TransformerConv(params.feat_hidden2, params.gcn_hidden1,heads=1,dropout=params.p_drop)def encode(self, x, adj,training):# x, edge_index = data.x, data.edge_index基因表达矩阵adata.X# edge_index=adj   邻接矩阵 adj 通常以 edge_index 的形式传递给 TransformerConv 层#邻接矩阵 A用于定义图中的节点连接关系。在 TransformerConv 中,这一关系用于确定哪些节点对应该参与注意力计算#邻接矩阵中的非零元素 节点i和节点j之间有边#feat_x = self.encoder(x)#input_dim, params.feat_hidden1hidden1 = self.gc1(feat_x, adj)#聚合节点信息x = F.relu(hidden1)

其实一开始是不懂的,以为

hidden1 = self.gc1(feat_x, adj)里面的参数feat_x, adj传到类tg.nn.TransformerConv()里面去就可以了,其实这样不对。查阅了参考的资料才发现自己错了。主要参考的这篇【Python】函数和类的参数传递_python函数参数怎么传入类-CSDN博客

类TransformerConv中的参数是这些。

但是是找不到feat_x和adj传递的位置的。再仔细看下应该这样分析,

所以说self.gc1 = tg.nn.TransformerConv(params.feat_hidden2, params.gcn_hidden1,heads=1,dropout=params.p_drop)#输入和输出 里面的参数params.feat_hidden2, params.gcn_hidden1是传递给in_channels和out_channels的。然后hidden1 = self.gc1(feat_x, adj)中feat_x是传递forward中的给x然后adj传递给edge_index。

在这里:

  • params.feat_hidden2 将作为 in_channels 的值传递给 TransformerConv 类的构造函数。这决定了输入特征的维度或者是元组 (in_channels[0], in_channels[1]) 中的第一个值。
  • params.gcn_hidden1 将作为 out_channels 的值传递给 TransformerConv 类的构造函数。这决定了输出特征的维度。

调用 TransformerConv 实例

在这里:

  • feat_x 将作为 x 参数传递给 forward 方法。feat_x 通常是节点特征矩阵或者节点对的特征,具体取决于 forward 方法的实现和使用场景。
  • adj 将作为 edge_index 参数传递给 forward 方法。adj 通常是图的边索引或者邻接矩阵,用于定义节点之间的连接关系。

因此,整个过程中的参数传递如下:

  • 实例化时,params.feat_hidden2params.gcn_hidden1 确定了输入和输出的特征维度。
  • 调用实例时,feat_x 被传递给 x,而 adj 被传递给 edge_index

这篇关于类的参数传递的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1067945

相关文章

Xinstall助力App全渠道统计,参数传递下载提升用户体验!

在移动互联网时代,App已成为我们日常生活中不可或缺的一部分。然而,对于App开发者来说,如何有效地推广和运营自己的应用,却是一个不小的挑战。尤其是在面对众多渠道、复杂的数据统计和用户需求多样化的情况下,如何精准地触达目标用户,提升用户的下载、安装和活跃度,更是考验着每一个运营者的智慧。 今天,我们就来揭秘一个能够帮助App开发者解决这些痛点的神器——Xinstall。作为一家一站式App全渠道

Java参数传递机制的一种打开方式

传值 or 传址?实参 or 形参?基本数据类型 or 引用数组类型?学习过Java,相信你对这些概念肯定熟悉,然,时间久了,某一天突然被问到这些,又一脸懵逼,它们讲的是啥,如何区分?来,让我们通过实践操练起来,请看下面一题,思考输出结果。 import java.util.Arrays;public class Exam4 {public static void main(String[] a

题目:输入 5 个数(含负数、小数)将它们按由小到大的顺序排列起来。提示:需要排序的数字通过参数传递进来。

题目:输入 5 个数(含负数、小数)将它们按由小到大的顺序排列起来。 提示:需要排序的数字通过参数传递进来。 例如: 输入:-1 2.1 -3 5 7 输出: -3 -1 2.1 5 7 import java.util.Scanner;public class FuShuXiaoShuPaiXu {public static void swap(double[] arr,int a,in

FPGA编程基础(一)--参数传递与寄存器使用

一、参数映射 参数映射的功能就是实现参数化元件。所谓的”参数化元件“就是指元件的某些参数是可调的,通过调整这些参数从而可实现一类结构类似而功能不同的电路。在应用中,很多电路都可采用参数映射来达到统一设计,如计数器、分频器、不同位宽的加法器以及不同刷新频率的VGA视频接口驱动电路等。 参数传递 参数传递就是在编译时对参数重新赋值而改变其值。传递的参数是子模块中定义的parameter,其传递方

Python参数传递的艺术:解锁编程灵活性的秘密武器

引言 参数传递作为函数调用过程中的关键环节,对程序逻辑有着重要影响。不同的参数传递方式能够帮助我们更好地组织代码,提高程序运行效率。比如,在处理大量数据或复杂业务逻辑时,合理的参数设计可以让我们的代码更简洁、更高效;而在进行单元测试或者接口调试时,灵活的参数机制又能极大地方便我们定位问题所在。因此,深入理解Python中的参数传递机制是非常必要的。 基础语法介绍 位置参数 位置参数是最常见

就一句话,Java里面参数传递都是按值传递

 首先记住一句话:在Java里面参数传递都是按值传递 这个值分为拷贝值,和引用地址值。 先来看一段代码: public class TestYinyong {public static void main(String[] args) {String str = "12345";SonClass aa = new SonClass(10);SonClass bb = new S

JavaScript参数传递和对象复制

(1)基本类型和引用类型 基本类型:指的是简单的数据段。在内存中占据固定的大小,放在占内存中。 引用类型:指的是那些可能由多个值构成的对象。引用类型的值是对象,保存在堆内存中。 (2)复制 基本类型: var num1 = 6;var num2 = num1;alert('num1='+num1);alert('num2='+num2); 由上图可

(转载) C语言技巧:怎样把数组作为参数传递给函数?(值传递和指针传递)

在把数组作为参数传递给函数时,有值传递(by value)和地址传递(by reference)两种方式。在值传递方式中,在说明和定义函数时,要在数组参数的尾部加上一对方括号([]),调用函数时只需将数组的地址(即数组名)传递给函数。 例如,在下例中数组x[]是通过值传递方式传递给byval_func()函数的: # include <atdio.h> voidbyval_func

Java中的参数传递是按值传递还是按引用传递?

回答重点: 在Java中,参数传递只有按值传递,不论是基本类型还是引用类型。 基本数据类型:传递的是值的副本,即对象的数值。因此,对方法 参数的任何修改都不会影响原始变量。引用数据类型:传递的是引用的副本,即对象引用的内存地址。因此方法内可以通过引用修改对象的属性,但不能改变它所指的对象。 基本数据类型:包括 int、float、double、char、boolean等,存储在栈中。 引用

mybatis Association标签 分两次sql查询时,参数传递问题

直接给个例子,该例子来自:http://www.cnblogs.com/xdp-gacl/p/4264440.html <!-- 37 方式二:嵌套查询:通过执行另外一个SQL映射语句来返回预期的复杂类型38 SELECT * FROM class WHERE c_id=1;39 SELECT * FROM teacher WHERE t_id=1