运行 shenweichen 的 GraphEmbedding 时报错的解决方法(Resolution of some errors when running GraphEmbedding of shenweichen)

在安装和运行 shenweichen 的 GraphEmbedding 图向量相关的代码中,因为版本问题出现了各种错误,现在针对 deepwalk 和 line 两种算法出现的错误总结如下:

 

注意:以下出现的问题是需要先修改这些错误再输入 python setup.py install 命令安装,如果你已经安装了 ge,那么就需要先卸载 ge 再修改这些问题再安装 ge

 

1.  安装运行 python setup.py install 的时候出现错误:UnicodeDecodeError: 'gbk' codec can't decode byte 0xac in position 2110: illegal multibyte sequence

分析:这种错误,一般在读取文件的时候要加上文件的编码方式,文件编码方式的查看,可以通过把文件另存为,然后通过其中编码的选项来看。如下图所示。

 解决方法: setup.py第4行改成

with open("README.md", "r", encoding='utf-8') as fh:

参考资料:https://github.com/shenweichen/GraphEmbedding/issues/26

 

2. 运行 deepwalk_wiki.py 的时候出现错误:TypeError: __init__() got an unexpected keyword argument 'size' 

分析:word2vec 版本问题,需要把 size 改成 vector_size

解决方法:把 GraphEmbedding-master\build\lib\ge\models\deepwalk.py 中的以下内容进行修改

kwargs["size"] = embed_size

改成:

kwargs["vector_size"] = embed_size

参考资料:https://blog.csdn.net/weixin_43820665/article/details/117572613

 

3. 运行 deepwalk_wiki.py 的时候出现错误:TypeError: __init__() got an unexpected keyword argument 'iter'

分析:word2vec 版本问题,需要把 iter 改成 epochs

解决方法:把 GraphEmbedding-master\build\lib\ge\models\deepwalk.py 中的以下内容进行修改

kwargs["iter"] = iter

改成:

kwargs["epochs"] = iter

参考资料:https://blog.csdn.net/Wuli_jiejie/article/details/118712379

 

4. 运行 line_wiki.py 的时候出现错误:TypeError: reduce_sum() got an unexpected keyword argument 'keep_dims'

分析:tensorflow 版本问题,需要把 keep_dims 改成 keepdims

解决方法:把 GraphEmbedding-master\ge\models\line.py 中的以下内容进行修改

    first = Lambda(lambda x: tf.reduce_sum(
        x[0]*x[1], axis=-1, keep_dims=False), name='first_order')([v_i_emb, v_j_emb])
    second = Lambda(lambda x: tf.reduce_sum(
        x[0]*x[1], axis=-1, keep_dims=False), name='second_order')([v_i_emb_second, v_j_context_emb])

改成:

    first = Lambda(lambda x: tf.reduce_sum(
        x[0]*x[1], axis=-1, keepdims=False), name='first_order')([v_i_emb, v_j_emb])
    second = Lambda(lambda x: tf.reduce_sum(
        x[0]*x[1], axis=-1, keepdims=False), name='second_order')([v_i_emb_second, v_j_context_emb])

参考资料:https://stackoverflow.com/questions/59451666/typeerror-reduce-sum-got-an-unexpected-keyword-argument-keep-dims-in-tf-2-0

 

posted @ 2022-03-16 17:21  ttweixiao9999  阅读(476)  评论(0编辑  收藏  举报