当前位置:   article > 正文

gcn模型

gcn模型
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # Import useful packages
  4. from __future__ import absolute_import
  5. from __future__ import print_function
  6. from __future__ import division
  7. # Hide the Configuration and Warnings
  8. import os
  9. os.environ["TF_CPP_MIN_LOG_LEVEL"] = '3'
  10. import tensorflow as tf
  11. import numpy as np
  12. import pandas as pd
  13. from scipy import sparse
  14. from Models.Network.lib_for_GCN import GCN_Model, graph, coarsening
  15. from Models.DatasetAPI.DataLoader import DatasetLoader
  16. # Model Name
  17. Model = 'Graph_Convolutional_Neural_Network'
  18. # Clear all the stack and use GPU resources as much as possible
  19. tf.reset_default_graph()
  20. config = tf.ConfigProto()
  21. config.gpu_options.allow_growth = True
  22. sess = tf.Session(config=config)
  23. # Your Dataset Location, for example EEG-Motor-Movement-Imagery-Dataset
  24. # The CSV file should be named as training_set.csv, training_label.csv, test_set.csv, and test_label.csv
  25. DIR = 'DatasetAPI/EEG-Motor-Movement-Imagery-Dataset/'
  26. SAVE = 'Saved_Files/' + Model + '/'
  27. if not os.path.exists(SAVE): # If the SAVE folder doesn't exist, create one
  28. os.mkdir(SAVE)
  29. # Load the dataset, here it uses one-hot representation for labels
  30. train_data, train_labels, test_data, test_labels = DatasetLoader(DIR=DIR)
  31. # Read the Adjacency matrix
  32. Adjacency_Matrix = pd.read_csv(DIR + 'Adjacency_Matrix.csv', header=None)
  33. Adjacency_Matrix = np.array(Adjacency_Matrix).astype('float32')
  34. Adjacency_Matrix = sparse.csr_matrix(Adjacency_Matrix)
  35. # This is the coarsen levels, you can definitely change the level to observe the difference
  36. graphs, perm = coarsening.coarsen(Adjacency_Matrix, levels=5, self_connections=False)
  37. X_train = coarsening.perm_data(train_data, perm)
  38. X_test = coarsening.perm_data(test_data, perm)
  39. # Obtain the Graph Laplacian
  40. L = [graph.laplacian(Adjacency_Matrix, normalized=True) for Adjacency_Matrix in graphs]
  41. # Hyper-parameters
  42. params = dict()
  43. params['dir_name'] = Model
  44. params['num_epochs'] = 100
  45. params['batch_size'] = 1024
  46. params['eval_frequency'] = 100
  47. # Building blocks.
  48. params['filter'] = 'chebyshev5'
  49. params['brelu'] = 'b2relu'
  50. params['pool'] = 'mpool1'
  51. # Architecture.
  52. params['F'] = [16, 32, 64, 128, 256, 512] # Number of graph convolutional filters.
  53. params['K'] = [2, 2, 2, 2, 2, 2] # Polynomial orders.
  54. params['p'] = [2, 2, 2, 2, 2, 2] # Pooling sizes.
  55. params['M'] = [4] # Output dimensionality of fully connected layers.
  56. # Optimization.
  57. params['regularization'] = 0.001 # L2 regularization
  58. params['dropout'] = 0.50 # Dropout rate
  59. params['learning_rate'] = 0.000001 # Learning rate
  60. params['decay_rate'] = 1 # Learning rate Decay == 1 means no Decay
  61. params['momentum'] = 0 # momentum == 0 means Use Adam Optimizer
  62. params['decay_steps'] = np.shape(train_data)[0] / params['batch_size']
  63. # Train model
  64. model = GCN_Model.cgcnn(L, **params)
  65. accuracy, loss, t_step = model.fit(X_train, train_labels, X_test, test_labels)
  66. 解释每行代码的详细功能
  • 第1行代码 #!/usr/bin/env python 是一个shebang,用于指定该脚本使用的解释器。在这里,它指定使用环境中的Python解释器来执行脚本。
  • 第3行到第12行是一些导入语句,用于导入所需的包和模块。
  • 第15行到第17行是隐藏配置和警告的代码,通过设置TF_CPP_MIN_LOG_LEVEL环境变量为3,将TensorFlow的配置和警告信息隐藏起来,只输出错误信息。
  • 第19行到第23行是创建一个TensorFlow会话的代码,该会话配置允许动态分配GPU资源。
  • 第26行设置了一个变量Model,用于存储模型的名称。
  • 第29行到第34行是定义了一些路径的代码,用于存储训练和测试过程中产生的结果文件。
  • 第37行到第41行使用DatasetLoader模块加载数据集,将训练集和测试集分别存储在train_datatrain_labelstest_datatest_labels中。
  • 第44行到第48行读取了一个邻接矩阵,并将其转换为稀疏矩阵的格式。
  • 第51行到第52行使用coarsen函数对邻接矩阵进行多层次的下采样,得到一系列的图和顶点的排列。
  • 第53行和第54行使用coarsen.perm_data函数对训练集和测试集进行排列,保持和图一致的排列顺序。
  • 第58行到第66行计算了图的拉普拉斯矩阵。
  • 第69行到第71行定义了一些超参数。
  • 第74行到第83行定义了模型的参数,包括滤波器类型、非线性激活函数、池化方法以及每一层的输出维度。
  • 第86行到第94行定义了优化器的参数,包括正则化参数、dropout率、学习率、学习率衰减率、动量和衰减步数。
  • 第97行创建了一个GCN_Model.cgcnn的实例,即一个图卷积神经网络模型。
  • 第98行调用fit方法对模型进行训练,返回训练过程中的准确率、损失和训练步数。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/198547?site
推荐阅读
相关标签
  

闽ICP备14008679号