leaf是一个联邦学习的框架,来自CMU,官网:https://leaf.cmu.edu/build/html/index.html
Github:https://github.com/TalwalkarLab/leaf/pulls
1、安装与配置环境首先要在Github上下载leaf,之后安装 requirements.txt 中列出的 libraries。
这里面有几个坑:1、要用 pip3 下载,否则 tensorflow 可能出现空包
2、目前tensorflow发行了2.0系列的版本,但是leaf是用tensorflow1.x系列的语法写的,也就是说,需要修改requirements.txt,指定一个tensorflow的版本,1.14.0或者1.15.0都是可以的。
3、官网中提到的wget是需要下载的。
2、USER GUIDE (1) Twitter Sentiment Analysis1、
leaf/models/sent140/ $> ./get_embs.sh
在windows下执行类似的命令时,需要把./以及前面的部分删掉,也就是只在命令提示符中输入:
get_embs.sh
前提是要用cd命令转到这个文件所在的文件夹
2、执行上面那个命令行的时候,我遇到了两个bug
(1)这条代码调用了wget,wget下载之后,会进行解压和转成json的格式。我执行的时候,下载完成之后提示没有权限调用python3:Permission Denied,暂且无解,我能想到的办法就是不用get_embs.sh脚本调用get_embs.py而是手动执行,这样就出现了第二个问题
(2)手动执行get_embs.py这个文件时报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0x93 in position 130: illegal multibyte sequence,解决方式也和网上的方式一样,修改成这个样子:
import argparse
import json
parser = argparse.ArgumentParser()
parser.add_argument('-f',
help='path to .txt file containing word embedding information;',
type=str,
default='glove.6B.300d.txt')
args = parser.parse_args()
lines = []
with open(args.f, 'r',encoding='UTF-8') as inf:
lines = inf.readlines()
lines = [l.split() for l in lines]
vocab = [l[0] for l in lines]
emb_floats = [[float(n) for n in l[1:]] for l in lines]
emb_floats.append([0.0 for _ in range(300)]) # for unknown word
js = {'vocab': vocab, 'emba': emb_floats}
with open('embs.json', 'w') as ouf:
json.dump(js, ouf)
所做的改动是:添加了红色部分的代码
lines = []
with open(args.f, 'r',encoding='UTF-8') as inf:
lines = inf.readlines()
手动执行get_embs.py这个文件的命令行是 python get_embs.py,不是 python3 get_embs.py
作者:simooooon