[pysyft-001]联邦学习pysyft从入门到精通--安装

1.github库地址
https://github.com/OpenMined/PySyft

2.论文
https://arxiv.org/pdf/1811.04017.pdf
A generic framework for privacy preserving deep learning

 

3.安装

在centos上安装。

先安装conda,然后再创建pysyft环境。


4.安装conda
wget https://repo.anaconda.com/archive/Anaconda3-2019.03-Linux-x86_64.sh

bash Anaconda3-2019.03-Linux-x86_64.sh

yum install bzip2.x86_64 -y

安装路径是 /root/anaconda3

安装会修改/root/.bashrc文件内容
modified      /root/.bashrc

5. 启动conda环境
source /root/.bashrc


6.在conda安装pysyft

创建py3-syft环境
conda create -n py3-syft python=3.7 --yes
conda activate py3-syft
conda install jupyter notebook
pip install syft[udacity] scikit-learn
 

#注意,如果有问题,使用豆瓣源,也就是
pip install syft[udacity] -i https://pypi.doubanio.com/simple/

7.第一个测试程序

import syft as sy
from syft.frameworks.torch.pointers import PointerTensor
from syft.frameworks.torch.tensors.decorators import LoggingTensor
import sys
import torch
hook = sy.TorchHook(torch)
from torch.nn import Parameter
import torch.nn as nn
import torch.nn.functional as F

print(torch.tensor([1,2,3,4,5]))


x = torch.tensor([1,2,3,4,5])
print('x = ', x)

y = x+x
print('y = ', y)


#创建一个虚拟的联邦学习节点方,可以视为另一个公司。
#本地实验,因此用虚拟worker。
bob = sy.VirtualWorker(hook, id='bob')
print('bob = ', bob)


#准备数据,这些数据可以有本程序选择性地发给bob,fl计算的另一方
x = torch.tensor([1,2,3,4,5])
y = torch.tensor([1,1,1,1,1])

#先展示下bob的objs
print('bob._objects = ', bob._objects)

#把x和y发给bob
x_ptr = x.send(bob)
y_ptr = y.send(bob)

print('bob._objects = ', bob._objects, 'after send')

print('x_ptr = ', x_ptr)
print('y_ptr = ', y_ptr)

print('x_ptr.location = ', x_ptr.location)
print('x_ptr.owner = ', x_ptr.owner)


z = x_ptr + y_ptr

print('z = ', z)

print('bob._objects = ', bob._objects, 'after add')

注意,有些情况下,运行这个程序会报错,主要是一些包的__init__.py里没有导入合适的类

7.1  ImportError: cannot import name 'AbstractWorker' from 'syft.workers' (/home/xxxx/anaconda3/envs/py3-syft/lib/python3.7/site-packages/syft/workers/__init__.py)

修改这个__init__.py,增加一条语句
from .abstract import AbstractWorker


7.2 ImportError: cannot import name 'LoggingTensor' from 'syft.frameworks.torch.tensors.decorators' (/home/tanzhi/anaconda3/envs/py3-syft/lib/python3.7/site-packages/syft/frameworks/torch/tensors/decorators/__init__.py)

修改这个__init__.py,增加一条语句
from .logging import LoggingTensor

然后重新运行即可。
 

你可能感兴趣的:([pysyft-001]联邦学习pysyft从入门到精通--安装)