Graph U-Net Code【图分类】
1. main.py
# GNet是需要用到的model
net = GNet(G_data.feat_dim, G_data.num_class, args) # graph, 特征维度,类别数,参数
trainer = Trainer(args, net, G_data) #开始训练数据
# 正式开始训练数据
trainer.train()
2. network.py
class GNet(nn.Module):def __init__(self, in_dim, n_classes, args):super(GNet, self).__init__()self.n_act = getattr(nn, args.act_n)()# getattr() 是 Python 内置的一个函数,可以用来获取一个对象的属性值或方法self.c_act = getattr(nn, args.act_c)()# print('GNet1: in_dim=', in_dim, 'n_class=',n_classes) # GNet1: in_dim= 82 n_class= 2"用的是GCN的框架,输入分别是feat dim、layer dim、network act、drop net(net表示GCN网络本身的参数)"self.s_gcn = GCN(in_dim, args.l_dim, self.n_act, args.drop_n)self.g_unet = GraphUnet(args.ks, args.l_dim, args.l_dim, args.l_dim, self.n_act, args.drop_n)"""nn.Linear定义一个神经网络的线性层,方法如下:torch.nn.Linear(in_features, # 输入的神经元个数out_features, # 输出神经元个数bias=True # 是否包含偏置)"""self.out_l_1 = nn.Linear(3*args.l_dim*(args.l_num+1), args.h_dim)self.out_l_2 = nn.Linear(args.h_dim, n_classes)"nn.Dropout(p = 0.3) # 表示每个神经元有0.3的可能性不被激活"self.out_drop = nn.Dropout(p=args.drop_c)Initializer.weights_init(self)def forward(self, gs, hs, labels):print('GNet2: gs=',type(gs), len(gs), 'hs=',type(hs), len(hs), 'labels:',type(labels),labels.shape)# GNet2: gs= <class 'list'> 32 hs= <class 'list'> 32 labels: <class 'torch.Tensor'> torch.Size([32])hs = self.embed(gs, hs)print('GNet2: hs=', type(hs), hs.shape)logits = self.classify(hs)return self.metric(logits, labels)
3. trainer.py
class Trainer:"init初始化,输入分别是arg参数、gcn net、graph Data,将这些装进self里面"def __init__(self, args, net, G_data):self.args = argsself.net = netself.feat_dim = G_data.feat_dimself.fold_idx = G_data.fold_idxself.init(args, G_data.train_gs, G_data.test_gs)# 若是有显卡,则用显卡跑if torch.cuda.is_available():self.net.cuda()"初始化——开始训练数据"def init(self, args, train_gs, test_gs):print('#train: %d, #test: %d' % (len(train_gs), len(test_gs)))# 分成训练集和测试集,记载数据train_data = GraphData(train_gs, self.feat_dim)test_data = GraphData(test_gs, self.feat_dim)# DataLoader 为pytorch 内部类,此时只需要指定trainset, batch_size, shuffle, num_workers, ...等self.train_d = train_data.loader(self.args.batch, True)self.test_d = test_data.loader(self.args.batch, False)self.optimizer = optim.Adam(self.net.parameters(), lr=self.args.lr, amsgrad=True,weight_decay=0.0008)
def train(self):max_acc = 0.0train_str = 'Train epoch %d: loss %.5f acc %.5f'test_str = 'Test epoch %d: loss %.5f acc %.5f max %.5f'line_str = '%d:\t%.5f\n'for e_id in range(self.args.num_epochs):self.net.train()# 从每个epoch开始训练loss, acc = self.run_epoch(e_id, self.train_d, self.net, self.optimizer)print(train_str % (e_id, loss, acc))with torch.no_grad():self.net.eval()loss, acc = self.run_epoch(e_id, self.test_d, self.net, None)max_acc = max(max_acc, acc)print(test_str % (e_id, loss, acc, max_acc))with open(self.args.acc_file, 'a+') as f:f.write(line_str % (self.fold_idx, max_acc))
def run_epoch(self, epoch, data, model, optimizer):#self.run_epoch(e_id, self.train_d, self.net, self.optimizer)losses, accs, n_samples = [], [], 0for batch in tqdm(data, desc=str(epoch), unit='b'):cur_len, gs, hs, ys = batchgs, hs, ys = map(self.to_cuda, [gs, hs, ys])loss, acc = model(gs, hs, ys)losses.append(loss*cur_len)accs.append(acc*cur_len)n_samples += cur_lenif optimizer is not None:optimizer.zero_grad()loss.backward()optimizer.step()avg_loss, avg_acc = sum(losses) / n_samples, sum(accs) / n_samplesreturn avg_loss.item(), avg_acc.item()
不懂
class GraphConvolution(Module):"""Simple GCN layer, similar to https://arxiv.org/abs/1609.02907"""def __init__(self, in_features, out_features, bias=True):super(GraphConvolution, self).__init__()self.in_features = in_featuresself.out_features = out_features"""为啥要这么做???5555555555555555555555555555"""self.weight = Parameter(torch.FloatTensor(in_features, out_features))if bias:self.bias = Parameter(torch.FloatTensor(out_features))else:self.register_parameter('bias', None)self.reset_parameters()def reset_parameters(self):stdv = 1. / math.sqrt(self.weight.size(1))self.weight.data.uniform_(-stdv, stdv)if self.bias is not None:self.bias.data.uniform_(-stdv, stdv)def forward(self, input, adj):support = torch.mm(input, self.weight)output = torch.spmm(adj, support)if self.bias is not None:return output + self.biaselse:return output
相关文章:
Graph U-Net Code【图分类】
1. main.py # GNet是需要用到的model net GNet(G_data.feat_dim, G_data.num_class, args) # graph, 特征维度,类别数,参数 trainer Trainer(args, net, G_data) #开始训练数据 # 正式开始训练数据 trainer.train()2. network.py class GNet(nn.Modul…...
PTA 秀恩爱分得快(树)
题目 古人云:秀恩爱,分得快。 互联网上每天都有大量人发布大量照片,我们通过分析这些照片,可以分析人与人之间的亲密度。如果一张照片上出现了 K 个人,这些人两两间的亲密度就被定义为 1/K。任意两个人如果同时出现在…...
文心一言4.0对比ChatGPT4.0有什么优势?
目录 总结 文心一言4.0的优势 文心一言4.0的劣势 免费分享使用工具 后话 生成式AI的困境 “不会问”“不会用”“不敢信” 为什么要出收费版本? 目前使用过国内的文心一言3.5和WPS AI,国外的ChatGPT4.0。 文心一言和其他国内产品相比࿰…...
美观且可以很方便自定义的MATLAB绘图颜色
函数介绍 主函数是draw_test,用于测试函数。 draw_h是函数,用于给Matlab提供美观且可以很方便自定义的绘图颜色。 draw_h函数介绍 这是一个带输入输出的函数,输入1/2/3,输出下面三种颜色库的配色,每种库均有五种颜色…...
基于jsp,ssm物流快递管理系统
开发工具:eclipse,jdk1.8 服务器:tomcat7.0 数据库:mysql5.7 技术: springspringMVCmybaitsEasyUI 项目包括用户前台和管理后台两部分,功能介绍如下: 一、用户(前台)功能: 用…...
陪诊系统|挂号陪护搭建二开陪诊师入驻就医小程序
我们的陪诊小程序拥有丰富多样的功能,旨在最大程度满足现代人的需求。首先,我们采用了智能排队系统,通过扫描二维码获取排号信息,让您从繁琐的排队过程中解放出来。其次,我们提供了多种支付方式,不仅可以实…...
恒驰服务 | 华为云数据使能专家服务offering之大数据建设
恒驰大数据服务主要针对客户在进行智能数据迁移的过程中,存在业务停机、数据丢失、迁移周期紧张、运维成本高等问题,通过为客户提供迁移调研、方案设计、迁移实施、迁移验收等服务内容,支撑客户实现快速稳定上云,有效降低时间成本…...
轻量级狂雨小说cms系统源码 v1.5.2 基于ThinkPHP5.1+MySQL
轻量级狂雨小说cms系统源码 v1.5.2 基于ThinkPHP5.1MySQL的技术开发 狂雨小说cms提供一个轻量级小说网站解决方案,基于ThinkPHP5.1MySQL的技术开发。 KYXSCMS,灵活,方便,人性化设计简单易用是最大的特色,是快速架设小说类网站首选…...
Leetcode刷题详解——Pow(x, n)
1. 题目链接:50. Pow(x, n) 2. 题目描述: 实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn )。 示例 1: 输入:x 2.00000, n 10 输出:1024.00000示例 2:…...
计算机毕业设计选题推荐-校园失物招领微信小程序/安卓APP-项目实战
✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…...
人工智能基础_机器学习011_梯度下降概念_梯度下降步骤_函数与导函数求解最优解---人工智能工作笔记0051
然后我们来看一下梯度下降,这里先看一个叫 无约束最优化问题,,值得是从一个问题的所有可能的备选方案中选最优的方案, 我们的知道,我们的正态分布这里,正规的一个正态分布,还有我们的正规方程,他的这个x,是正规的,比如上面画的这个曲线,他的这个x,就是大于0的对吧,而现实生活…...
开放式耳机能保护听力吗,开放式耳机跟骨传导耳机哪个更好?
如果从严格意义上来讲的话,开放式耳机中的骨传导耳机是能保护听力,现如今的开放式耳机是一个统称,将所有不入耳的类目全部规划到一块。因此在开放式耳机中存在着一些耳机是只能够保持周边环境音,而不是保护听力的。 下面让我来给…...
【Qt之QLocale】使用
描述 QLocale类可以在多种语言之间进行数字和字符串的转换。 QLocale类在构造函数中使用语言/国家对进行初始化,并提供类似于QString中的数字转字符串和字符串转数字的转换函数。 示例: QLocale egyptian(QLocale::Arabic, QLocale::Egypt);QString s1 …...
维修服务预约小程序的效果如何
生活服务中维修项目绝对是需求量很高的,如常见的保洁、管道疏通、数码维修、安装、便民服务等,可以说每天都有生意,而对相关维修店企业来说,如何获得更多生意很重要。 接下来让我们看看通过【雨科】平台制作维修服务预约小程序能…...
前端架构体系调研整理汇总
1.公司研发人数与前端体系 小型创业公司 前端人数: < 3 人 产品类型: 产品不是非常成熟,比较新颖。 项目流程:不完善,快、紧促,没有固定的时间排期。 技术栈: 没有历史包袱,技…...
DrawerLayout的点击事件会穿透到底部,如何拦截?
DrawerLayout实现侧后,发现了一个问题。点击DrawerLayout的画面,会触发覆盖的底层页面的控件。由此说明点击事件穿透到了底部。但是我只需要触发抽屉布局里的控件,不想触发底层被覆盖的看不见的按钮,由此我想到的时让抽屉页面拦截…...
在Spring boot中 使用JWT和过滤器实现登录认证
在Spring boot中 使用JWT和过滤器实现登录认证 一、登录获得JWT 在navicat中运行如下sql,准备一张user表 -- ---------------------------- -- Table structure for t_user -- ---------------------------- DROP TABLE IF EXISTS t_user; CREATE TABLE t_user (id int(11) …...
天堂2如何对版本里面的内容进行修改
天堂2写装备属性的问题 早一点的版本属性都是写在armor文件夹 xml档里,不再写armor里了 armor文件夹里只有防御 HP MP增加量,套装的属性都用一个技能形式写在 skills里了 在配合数据库里一个叫armorsets实现套装属性,拿皇家套做说明。 id 43…...
代码随想录Day33 LeetCode T62不同路径 LeetCode T63 不同路径II
前言 动规五部曲 1.确定dp数组含义 2.确定递推公式 3.初始化数组 4.确定遍历方式 5.打印dp数组查看分析问题 LeetCode T62 不同路径 题目链接:62. 不同路径 - 力扣(LeetCode) 题目思路: 注:n行m列而不是m行n列 1.确定dp数组含义 代表到达此下标有多少条…...
【计算机网络】分层模型和应用协议
网络分层模型和应用协议 1. 分层模型 1.1 五层网络模型 网络要解决的问题是:两个程序之间如何交换数据。 四层?五层?七层? 2. 应用层协议 2.1 URL URL(uniform resource locator,统一资源定位符&#…...
Wan2.2-I2V-A14B Java面试热点:如何设计高并发视频生成任务系统?
Java面试热点:如何设计高并发视频生成任务系统? 1. 场景与挑战 视频生成服务正成为内容创作领域的热门需求,而高并发场景下的系统设计是Java后端开发面试中的常见考察点。假设我们需要基于Wan2.2-I2V-A14B模型构建一个视频生成平台…...
云原生环境中的服务网格安全最佳实践
云原生环境中的服务网格安全最佳实践 🔥 硬核开场 各位技术老铁,今天咱们聊聊云原生环境中的服务网格安全最佳实践。别跟我扯那些理论,直接上干货!在云原生时代,服务网格已经成为微服务架构的重要基础设施,…...
【多模态大模型——跨越感知与认知的鸿沟】第6章 工具增强与视觉Agent系统
目录 第一部分:原理详解 6.1 视觉工具使用(Visual Tool Use) 6.1.1 外部视觉工具的API调用 6.1.1.1 视觉定位(Visual Grounding)工具集成 6.1.1.2 OCR、检测、分割模型的协同调度 6.1.1.3 工具选择的决策机制 6.1.2 多工具协同的Agent架构 6.1.2.1 观察-思考-行动-…...
Llama-3.2V-11B-cotGPU优化教程:量化+FlashAttention提升吞吐300%实操
Llama-3.2V-11B-cot GPU优化教程:量化FlashAttention提升吞吐300%实操 1. 项目概述与优化目标 Llama-3.2V-11B-cot 是一个支持系统性推理的视觉语言模型,基于LLaVA-CoT论文实现。这个模型结合了图像理解和逐步推理能力,采用独特的四步推理格…...
PyCharm 2026.1 高效配置指南:从零打造极致顺滑的 Python 开发环境
PyCharm 2026.1 高效配置指南:从零打造极致顺滑的 Python 开发环境 网盘下载 0. 前言 在 2026 年,PyCharm 2026.1 依然是 Python 开发领域的“天花板”。无论是对 Python 3.13 新特性的完美支持,还是深度集成的本地 AI 代码预测引擎&#…...
需求用例的写法
一、为什么写需求用例 流程图为需求用例提供了关键路径,而需求用例则是对业务场景的全面还原。本文将从以下四个方面阐述用例的信息: 用例的定义用例的粒度用例的例子用例的关键点解释 我写需求文档有几大准则,是需要时刻铭记和实践的&…...
频域+卷积神经网络:好发又实用的论文黄金组合!轻松冲CVPR
小伙伴们好,我是小嬛。专注于人工智能、计算机视觉、AI大模型领域相关分享研究。【目标检测、图像分类、图像分割、目标跟踪等项目都可做,相关领域论文辅导也可以找我;需要的可联系(备注来意)】-------正文开始-------…...
sguard_limit终极指南:轻松限制腾讯游戏ACE-Guard系统资源占用,提升游戏性能
sguard_limit终极指南:轻松限制腾讯游戏ACE-Guard系统资源占用,提升游戏性能 【免费下载链接】sguard_limit 限制ACE-Guard Client EXE占用系统资源,支持各种腾讯游戏 项目地址: https://gitcode.com/gh_mirrors/sg/sguard_limit 你是…...
嵌入式c语言——关键字4
typedef 给数据类型起个别名,使得对程序的可读性更高吗,同时和#define不一样typedeff是关键字,对已经存在的数据类型取别名。 在编译阶段处理,会进行类型检查,只能在定义的作用域内使用。 define是预处理指令ÿ…...
大模型时代,这5大热门职业让你月入50K!错过等一年!
在数字技术迭代速度不断加快的当下,人工智能领域的大模型(Large Models) 已从实验室走向产业落地,成为重构各行业生产模式、驱动创新升级的核心引擎。凭借在数据处理、模式识别、复杂任务决策等方面的超强能力,大模型不…...
