【AAGNet】GNN模型用于BREP数模分割代码复现笔记

本文记录了AAGNet模型在BREP数模分割任务中的应用,包括随机生成加工特征、数据预处理、模型训练及优化策略。使用Adamw优化器、余弦退火学习率调度和指数移动平均(EMA)提升模型性能。模型在MFCAD/MFCAD++数据集上进行训练,输出语义分割结果。同时介绍了评估指标,如准确率、IOU、F1分数、精确率和召回率,并展示了实例分割和底面分割的损失函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


论文地址: https://doi.org/10.1016/j.rcim.2023.102661
代码地址: https://github.com/whjdark/AAGNet
数据库地址: MFInstSeg, MFCAD with AAGNet, MFCAD++ with AAGNet

已复现代码目录

√数据生成及转换:dataset/main.py

功能:在立方体上随机生成n个加工特征,随机生成的加工特征类型如下图
24种加工特征

√数据生成及转换:dataset/crossch

神经网络 (Graph Neural Networks, GNN) 的前置数据处理通常涉及到以下几个关键步骤: 1. **构建图结构**:首先,你需要将数据转换成图的形式。这包括节点 (nodes)、边 (edges) 和可能的节点属性 (node features) 或边属性 (edge features)。例如,在社交网络中,用户可以是节点,他们的联系则是边。 ```python import networkx as nx # 创建图 G = nx.Graph() G.add_nodes_from(users, attributes=dict(age, gender)) # 添加节点及属性 G.add_edges_from(followers, weight='strength') # 添加边及其权重 ``` 2. **编码节点特征**:如果节点有额外的数据,如用户的标签或描述,需要将其转换为数值向量。常见的做法是使用嵌入技术(如Word2Vec或GloVe),或者通过预训练模型获取。 ```python from gensim.models import Word2Vec node_embeddings = Word2Vec(nodes_descriptions) G.node[node_id] = node_embeddings[node_id] ``` 3. **邻接矩阵或邻居采样**:为了计算每个节点的信息,GNN通常会利用邻接矩阵表示图的结构。此外,邻居采样(如ego-networks或随机游走)也是常用的技术,用于限制信息传播到节点的近邻范围。 ```python adj_matrix = nx.adjacency_matrix(G).todense() # 转换为邻接矩阵 sampled_neighbors = G.neighbors(node_id)[:num_samples] # 邻居采样 ``` 4. **标签和分割**:如果你的目标是监督学习,那么需要准备标签数据。同时,可能还需要对节点或图进行分层(如社区检测),以便于训练过程。 ```python labels = [get_label(node) for node in nodes] # 获取节点标签 train_test_split(G, labels) # 分割为训练集和测试集 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值