Federated learning 框架——leaf 探坑记录

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

扫描二维码有惊喜

Federated learning 框架——leaf 探坑记录_第1张图片

你可能感兴趣的:(Federated learning 框架——leaf 探坑记录)