利用Sequential模型构造一个二层CNN+MLP的多分类任务。任务描述,有一个有向网络,现在需要对网络中的节点进行分类。这里节点的类别就是节点本身,对同一个节点进行多次随机游走得到不同的随机游走序列表示。通过构造的深度学习模型能正确分辨出属于同一节点的不同游走序列。
1.数据加载+构建网络
网络构建,读取一个邻接表文件构建有向图。
class DiGraphs(object):
def __init__(self, data_path):
self.data_path = data_path
def getDiGraph(self):
di_graph = nx.DiGraph()
temp_list = np.loadtxt(self.data_path)
di_graph.add_edges_from(temp_list)
return di_graph
随即游走序列产生,给定一个网络和种子节点,设定好需要产生序列的长度,得到一个节点组成的有序序列。
class NodeSequence(object):
def __init__(self, graph_net, source_node, sequence_len):
self.graph_net = graph_net
self.source_node = source_node
self.sequence_len = sequence_len
self.node_sequence = []
def getSequence(self):
current_node = self.source_node
for i in range(self.sequence_len):
self.node_se

本文介绍了一种使用二层一维CNN+MLP的深度学习模型进行多分类任务的方法,该任务基于有向网络节点的随机游走序列。数据加载涉及邻接表文件的读取和随机游走序列的生成。在模型构建中,重点讨论了一维CNN的相关参数,如filters和kernel_size。模型训练后,采用权重单独保存的方式,以便于在后续训练中控制CNN层的参数不更新,并替换MLP层进行新的分类任务。
最低0.47元/天 解锁文章
9289

被折叠的 条评论
为什么被折叠?



