运行GraphEmbedding代码

1.下载代码

2.将代码导入pycharm

3.pycharm自动为graph embedding项目创建一个虚拟环境
关于python使用虚拟环境的好处
方便对项目进行包管理

4.根据graph embedding的提示,配置环境

首先安装tensorflow
pip install tensorflow

可以看到安装的是2.4.1版本的tf(不知道版本不一致会不会埋坑,希望不会出事)

之后运行 python setup.py install
python setup.py install
通过这个命令,项目需要的包会被自动安装。这个命令包括两步,python setup.py build和python setup.py install;这两部可以分开执行也可以只执行python setup.py install(因为python setup.py install总是会先build后install)
python setup.py build是python编译这个module的过程,这个过程比较复杂,最后会生成build文件夹。
build过程是复制build/lib文件到用户指定的lib库。
更推荐使用requirements.txt

初次运行报错

百度解决方案
解决教程 https://blog.csdn.net/weixin_42552664/article/details/106463966可以直接点这里

至此,环境配置完成(貌似还没有因为python,tf版本不一致导致的坑)
看一下pip list
环境配置之前

环境配置之后

在这里插入图片描述
再看一下这个时候的目录结构

关于setup.py生成的这三个,我猜测应该是 python setup.py build时候生成的
有关这一过程的找到了这个教程讲的还可以
https://zhuanlan.zhihu.com/p/276461821?utm_source=qq直接点这里跳转

为了节约空间我就把setup.py生成的那三个给删除了

5.运行 deep walk

第一个bug出现了,这应该是joblib 0.13.0版本与python 3.8不兼容的锅
我先试着升级一下joblib

好像解决了

再运行deep walk,第二个bug出现了

这个bug和tf有关,我心里一咯噔,不会tf版本不行吧。
百度了一下,可能是由于 VS C++缺少导致的
教程 https://blog.csdn.net/xylbill97/article/details/109259823直接点击这里跳转
但是我又看了一下自己的电脑

我好像有啊
so 先排除这个原因

卸载重装一下tf
pip uninstall tensorflow
conda install tensorflow

啊哦,conda装不上tf 你说气不气

我又用pip安了tf 2.4
再重启编译器 不行
重启电脑 还是不行

好的继续解决 conda 安不上tf
好的不准备解决了,在知乎上搜了一下,决定降python版本了呜呜
在这里插入图片描述
兜兜转转,安装了一个3.6.5版本的python

在pycharm的setting中修改python interpreter版本的时候,无法选3.6.5版本的python
百度了一下,无法修改的原因是虚拟环境的默认路径文件夹不为空导致,这里添加新的解释器必须安装在一个空的文件夹中。
所以我直接删了那个虚拟环境venv 从头开始


修改interpreter为3.6.5版本时候会报这个错,应该是我把对应的python.exe修改成了python36.exe
再改回来

好的,python版本是3.6.5了

这个时候看pycharm的terminal
在这里插入图片描述
不在虚拟环境里嘛
进入虚拟环境venv
去虚拟环境的Scripts目录下,运行activate.bat激活环境就行了

查看pip list

先pip个numpy试试 成功

安装 tensorflow 1.4版本
pip install tensorflow==1.4
成功

python setup.py install
ok 出现了第一个bug

matplotlib版本不适配
我把matplotlib的版本修改成2.2.2了

继续python setup.py install
在这里插入图片描述
我只能除了源代码以外的都删了,从虚拟环境那里快速重来一遍

这次终于ok啦
deep_walk_wiki跑出来了!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用GCN实现图嵌入的Python代码示例: 首先,我们需要导入必要的库: ```python import numpy as np import tensorflow as tf from tensorflow.keras.layers import Input, Dense from tensorflow.keras.models import Model ``` 接下来,我们定义一个GCN层: ```python class GCNLayer(tf.keras.layers.Layer): def __init__(self, output_dim): super(GCNLayer, self).__init__() self.output_dim = output_dim def build(self, input_shape): self.weight = self.add_weight(name='weight', shape=(input_shape[1], self.output_dim), initializer='glorot_uniform', trainable=True) def call(self, inputs): adj_matrix, features = inputs adj_matrix = tf.cast(adj_matrix, dtype=tf.float32) features = tf.cast(features, dtype=tf.float32) # Normalize adjacency matrix adj_sum = tf.reduce_sum(adj_matrix, axis=1, keepdims=True) adj_inv_sqrt = tf.math.rsqrt(adj_sum) adj_matrix = adj_matrix * adj_inv_sqrt * adj_inv_sqrt # Perform graph convolution output = tf.matmul(adj_matrix, features) output = tf.matmul(output, self.weight) return tf.nn.relu(output) ``` 我们的GCN层有一个输出维度参数,同时使用邻接矩阵和节点特征作为输入。在构建层时,我们定义了一个权重矩阵,该矩阵将用于计算图卷积。在调用中,我们首先对邻接矩阵进行归一化,然后使用归一化的邻接矩阵和节点特征计算图卷积。 接下来,我们定义一个图嵌入模型: ```python class GraphEmbedding(Model): def __init__(self, input_dim, hidden_dim, output_dim): super(GraphEmbedding, self).__init__() self.input_layer = Input(shape=(input_dim,)) self.hidden_layer1 = GCNLayer(hidden_dim)([adj_matrix, self.input_layer]) self.hidden_layer2 = GCNLayer(output_dim)([adj_matrix, self.hidden_layer1]) self.output_layer = Dense(output_dim, activation='softmax')(self.hidden_layer2) def call(self, inputs): x = self.input_layer(inputs) x = self.hidden_layer1([adj_matrix, x]) x = self.hidden_layer2([adj_matrix, x]) return self.output_layer(x) ``` 在这个模型中,我们使用两个GCN层和一个全连接层。我们首先定义一个输入层,然后将其传递给第一个GCN层。接下来,我们将第一个GCN层的输出传递给第二个GCN层,并将其输出传递给全连接层。在调用中,我们将输入传递给输入层,并将其输出传递给第一个GCN层,然后将其输出传递给第二个GCN层,并将其输出传递给全连接层。 最后,我们定义一些示例数据并运行模型: ```python # Example adjacency matrix and node features adj_matrix = np.array([[0, 1, 1, 0], [1, 0, 1, 1], [1, 1, 0, 1], [0, 1, 1, 0]]) features = np.array([[0, 0, 1], [1, 0, 0], [0, 1, 0], [1, 0, 1]]) # Create graph embedding model model = GraphEmbedding(input_dim=features.shape[1], hidden_dim=16, output_dim=8) # Compile model model.compile(optimizer='adam', loss='categorical_crossentropy') # Train model model.fit(features, labels, epochs=10, batch_size=1) ``` 这个例子中的邻接矩阵和节点特征表示了一个四个节点的简单无向图。我们使用16个隐藏层和8个输出维度来嵌入这个图。我们使用交叉熵损失函数来训练模型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值