Federated learning 框架——leaf 探坑记录

Elina ·
更新时间:2024-11-15
· 909 次阅读

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 Analysis

1、

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



leaf 框架

需要 登录 后方可回复, 如果你还没有账号请 注册新账号