Paillier Homographic Encrypted Linear Classification example

This is a warm up code of what the possibilites are in the present library. It gives a snippet of the vision of the OpenMined project


In [11]:
from capsule.client import LocalCapsuleClient
import syft as sy
from sklearn.datasets import load_diabetes
from syft.nn.linear import LinearClassifier

In [12]:
cc = LocalCapsuleClient()
pk = cc.keygen()


b"\x80\x03cphe.paillier\nPaillierPublicKey\nq\x00)\x81q\x01}q\x02(X\x01\x00\x00\x00gq\x03\x8a\x81h\x91bJ\xd1\xbc\xfe\x11T\xa1\xbb\x17\xc0\x06b\xe7\x1f\xdd^\xf1x\xbb\xf4\xf2-\xe2\xe5\x95|\xe0\x04F\x133\x9e\x08\xf4W\xb6u<~\xef\xf3$\x84Bz\xd1\xb9\xbb\xe3<\xd7\x12\xe3\x9c9\\\x07*\x13\x13\xd6-|L\x01\tS\xc6\xc4}\xfb\x87:\x0c\x02d\xdabNX\x8f~\xe4\xf05\x04\xe5\x0e\xc5^\x8d\xab\xd1\xa9Z\xe3-u\x13\xda\xa0\xdd\xd1*\x89\x986h\xe8L\xb9RY\xddw\xfep n\xc5\xf7OWb\xad\x00X\x01\x00\x00\x00nq\x04\x8a\x81g\x91bJ\xd1\xbc\xfe\x11T\xa1\xbb\x17\xc0\x06b\xe7\x1f\xdd^\xf1x\xbb\xf4\xf2-\xe2\xe5\x95|\xe0\x04F\x133\x9e\x08\xf4W\xb6u<~\xef\xf3$\x84Bz\xd1\xb9\xbb\xe3<\xd7\x12\xe3\x9c9\\\x07*\x13\x13\xd6-|L\x01\tS\xc6\xc4}\xfb\x87:\x0c\x02d\xdabNX\x8f~\xe4\xf05\x04\xe5\x0e\xc5^\x8d\xab\xd1\xa9Z\xe3-u\x13\xda\xa0\xdd\xd1*\x89\x986h\xe8L\xb9RY\xddw\xfep n\xc5\xf7OWb\xad\x00X\x07\x00\x00\x00nsquareq\x05\x8b\x00\x01\x00\x00q\xd7q11\xd4\x81\x86\xdb\xbc\x81\xc0\x18L\x96\x16\x91\xd6\xb7M\x14\xc5\xac.\xf4Q\x99+\xbd\xdeF\x89Io/O\xefUH\x13\x1c\xbeRr\x1d\x86\x91V\tt\xbeF-g`\x97\x0c\xd9\xaa\x8f\x18|N\xe6/\xc0\xe0\xf1m\xfdg\xdd\x1d\x8c\xb0&\xa90\xcd\x92:V\x06\xd4\xc9\xd0\x8dNV\xaf*\x06U\x0b)\x8e dP\x86|\xba.\xe9\xb24\xbd\x91\\\x0chL\xbb\xa9\x86\x139S\xdd\xbd\x08\x11P\xb5\xa2m\x0f\x99CgA\x14YC)\x8e\xf8\\Cwz\xc4<\xbf'\xff\x9c\x15\x98\xc2\x17R\xd9\xd5\x19-f\xea\xbaS\\%w\xed;\x06`\x82\x0f!q\xf7#H\xd9\xae(\x9dXY\xbe4c\x08f\xb4Q\xfb6[\xc6?)\xb99\xa0\xc6\xc8\x97\xed\xe1\xf93\xf8\xb8\xbe\xde{x\xbd\xeb\x96\x88h\xd4C\x88\xe9\xa0\xc7\xd8\xa8\xec\xf5&\xb4~2C\xf5\xd0D9\xa3\xe2\x01\xd3]\x88\xe9Cw\x11\xeal\x08\x116c\xfd\xe1\x0b\xc9\x0fnuX\x07\x00\x00\x00max_intq\x06\x8a\x80v0v\xc3E\x94\xff\x05\x1c\x8b>]\x95W\xcb\xf7_\xf4tP(\xe9\xa6\xfb\xb9\xa0L\x87)\xa0\x01\xc2[f\xdf\x02\xfc\xc7<'\x14*\xa5\xa6a\x81k\xd3E\x93>\xa1i\xf2\xb0K4\x13t\x02\x0e\xb1[G\x0f\xd4n\x00\x03q\x97A\x7f\xfe\xd7hY\xabv\xf3 \x1a\xc8/*LPg\x01\xf7\x04\x97\x1f/9\x9b8\x1e\xa1d|\x06\x9e5\x9f\xf0\xb8-\x88g\xcd\xa2\x19\x93\x1bs\xf4'\xaa%`\xcfA\xfdor\xcb9ub."

In [13]:
model = LinearClassifier(n_inputs=10,n_labels=1).encrypt(pk)

In [14]:
model


Out[14]:
Linear Model (10,1): 

In [15]:
diabetes = load_diabetes()
target = diabetes.target
input = diabetes.data

In [16]:
for i in range(5):
    print("Grads:" + str((model.learn(input=input[i],target=target[i],alpha=0.5))))


Grads:PaillierTensor: [[e]
 [e]
 [e]
 [e]
 [e]
 [e]
 [e]
 [e]
 [e]
 [e]]
Grads:PaillierTensor: [[e]
 [e]
 [e]
 [e]
 [e]
 [e]
 [e]
 [e]
 [e]
 [e]]
Grads:PaillierTensor: [[e]
 [e]
 [e]
 [e]
 [e]
 [e]
 [e]
 [e]
 [e]
 [e]]
Grads:PaillierTensor: [[e]
 [e]
 [e]
 [e]
 [e]
 [e]
 [e]
 [e]
 [e]
 [e]]
Grads:PaillierTensor: [[e]
 [e]
 [e]
 [e]
 [e]
 [e]
 [e]
 [e]
 [e]
 [e]]

In [17]:
model = model.decrypt(cc)

In [18]:
for i in range(len(input)):
    print(model.forward(input[i]))


BaseTensor: [ 0.72394632]
BaseTensor: [ 0.65432927]
BaseTensor: [ 0.78078893]
BaseTensor: [ 0.37791087]
BaseTensor: [ 0.38056636]
BaseTensor: [ 1.28637642]
BaseTensor: [ 0.49305513]
BaseTensor: [-1.07454611]
BaseTensor: [ 0.22896232]
BaseTensor: [ 0.62857855]
BaseTensor: [ 1.01674358]
BaseTensor: [ 1.14261035]
BaseTensor: [ 0.23830166]
BaseTensor: [ 0.06790521]
BaseTensor: [ 0.25171057]
BaseTensor: [-0.1706145]
BaseTensor: [-0.8392714]
BaseTensor: [-0.20157736]
BaseTensor: [ 0.75107297]
BaseTensor: [ 0.48749306]
BaseTensor: [ 0.16921742]
BaseTensor: [ 0.19987093]
BaseTensor: [ 0.096376]
BaseTensor: [-1.20963049]
BaseTensor: [ 1.06302673]
BaseTensor: [ 0.78436974]
BaseTensor: [ 0.47589968]
BaseTensor: [ 0.06833855]
BaseTensor: [ 1.05330988]
BaseTensor: [-0.85191878]
BaseTensor: [ 0.22149595]
BaseTensor: [ 0.4484343]
BaseTensor: [ 0.89210605]
BaseTensor: [-0.43270321]
BaseTensor: [ 1.13591407]
BaseTensor: [-1.41801442]
BaseTensor: [ 0.0030465]
BaseTensor: [ 0.25933546]
BaseTensor: [-0.84322042]
BaseTensor: [ 0.09154393]
BaseTensor: [-1.43080447]
BaseTensor: [ 0.70730052]
BaseTensor: [ 0.97099631]
BaseTensor: [-1.48426783]
BaseTensor: [ 0.83499668]
BaseTensor: [ 0.42552349]
BaseTensor: [ 1.35244225]
BaseTensor: [ 1.66138972]
BaseTensor: [-0.2736522]
BaseTensor: [ 0.66050277]
BaseTensor: [ 0.24626551]
BaseTensor: [ 0.55604732]
BaseTensor: [-0.22581318]
BaseTensor: [-0.79831483]
BaseTensor: [-0.43558639]
BaseTensor: [-0.45209113]
BaseTensor: [ 0.8522232]
BaseTensor: [ 1.09131202]
BaseTensor: [-0.71283497]
BaseTensor: [-1.04942362]
BaseTensor: [ 0.6639855]
BaseTensor: [ 0.66424942]
BaseTensor: [-0.01800768]
BaseTensor: [ 0.80262681]
BaseTensor: [ 0.23513991]
BaseTensor: [-0.09731639]
BaseTensor: [ 0.34366781]
BaseTensor: [-0.0317559]
BaseTensor: [ 0.17606313]
BaseTensor: [ 0.37795992]
BaseTensor: [-0.8863461]
BaseTensor: [-0.90210321]
BaseTensor: [-0.94203415]
BaseTensor: [-0.26030429]
BaseTensor: [-1.48920195]
BaseTensor: [-0.23168876]
BaseTensor: [ 0.82456229]
BaseTensor: [ 0.345908]
BaseTensor: [ 1.7033498]
BaseTensor: [ 0.26567936]
BaseTensor: [-0.74766721]
BaseTensor: [-0.01093234]
BaseTensor: [ 0.10958946]
BaseTensor: [ 1.1057031]
BaseTensor: [ 1.52549244]
BaseTensor: [ 0.93577091]
BaseTensor: [ 0.79623079]
BaseTensor: [-0.57159171]
BaseTensor: [-0.79965882]
BaseTensor: [-0.588882]
BaseTensor: [-0.27918206]
BaseTensor: [-0.2895247]
BaseTensor: [-0.65229796]
BaseTensor: [ 0.37791359]
BaseTensor: [ 0.65454494]
BaseTensor: [ 0.74737721]
BaseTensor: [-0.21343758]
BaseTensor: [-0.46576917]
BaseTensor: [ 0.6471604]
BaseTensor: [ 0.4164497]
BaseTensor: [-0.44067873]
BaseTensor: [-1.18764798]
BaseTensor: [-0.43566176]
BaseTensor: [ 0.18968882]
BaseTensor: [ 0.93113598]
BaseTensor: [ 0.00225536]
BaseTensor: [ 1.17186255]
BaseTensor: [ 0.75250991]
BaseTensor: [ 0.39075154]
BaseTensor: [-0.9438447]
BaseTensor: [-0.09388392]
BaseTensor: [ 0.06617198]
BaseTensor: [ 0.12072058]
BaseTensor: [-0.99264158]
BaseTensor: [ 0.04572727]
BaseTensor: [-0.17785698]
BaseTensor: [-0.37417439]
BaseTensor: [-1.57828655]
BaseTensor: [-0.71635021]
BaseTensor: [-0.39716727]
BaseTensor: [ 0.67749219]
BaseTensor: [ 0.1154333]
BaseTensor: [-0.45671811]
BaseTensor: [-1.40811859]
BaseTensor: [ 0.35026099]
BaseTensor: [ 0.27503789]
BaseTensor: [ 0.72139416]
BaseTensor: [ 0.19836649]
BaseTensor: [ 0.60378408]
BaseTensor: [-1.0458884]
BaseTensor: [-0.84571839]
BaseTensor: [ 0.94885303]
BaseTensor: [-0.66590663]
BaseTensor: [ 0.80074818]
BaseTensor: [ 0.27651659]
BaseTensor: [ 0.47438854]
BaseTensor: [ 0.38003016]
BaseTensor: [ 0.27795802]
BaseTensor: [-0.46614593]
BaseTensor: [ 0.58110386]
BaseTensor: [ 0.11469488]
BaseTensor: [-0.78664813]
BaseTensor: [-0.59251336]
BaseTensor: [-0.00938123]
BaseTensor: [ 0.18642784]
BaseTensor: [ 0.91211979]
BaseTensor: [ 0.11970257]
BaseTensor: [-0.03908077]
BaseTensor: [-0.40320246]
BaseTensor: [ 1.03204772]
BaseTensor: [ 0.70130074]
BaseTensor: [-0.03259943]
BaseTensor: [-0.85260878]
BaseTensor: [-0.35891394]
BaseTensor: [-0.23791102]
BaseTensor: [-1.18216761]
BaseTensor: [ 0.59052673]
BaseTensor: [-0.58526116]
BaseTensor: [ 0.62276901]
BaseTensor: [ 0.153594]
BaseTensor: [ 0.70040945]
BaseTensor: [-1.66531433]
BaseTensor: [ 0.50683967]
BaseTensor: [-0.67412947]
BaseTensor: [-0.63959728]
BaseTensor: [ 0.1699218]
BaseTensor: [ 1.67225544]
BaseTensor: [-0.89442576]
BaseTensor: [-1.33697633]
BaseTensor: [-0.26968744]
BaseTensor: [-0.11967826]
BaseTensor: [ 1.3040748]
BaseTensor: [-1.02055472]
BaseTensor: [ 0.87211243]
BaseTensor: [ 0.81008295]
BaseTensor: [ 0.15506196]
BaseTensor: [-0.56529987]
BaseTensor: [ 0.12353988]
BaseTensor: [-0.16654805]
BaseTensor: [ 0.28445778]
BaseTensor: [ 0.21867192]
BaseTensor: [ 0.24828202]
BaseTensor: [-0.30530931]
BaseTensor: [-0.84928322]
BaseTensor: [ 0.18966828]
BaseTensor: [ 0.59009569]
BaseTensor: [ 0.65978626]
BaseTensor: [ 1.38754821]
BaseTensor: [-0.73317471]
BaseTensor: [ 0.16881613]
BaseTensor: [ 0.47692958]
BaseTensor: [ 0.71240532]
BaseTensor: [ 0.06141777]
BaseTensor: [-0.42346637]
BaseTensor: [ 0.01907121]
BaseTensor: [-0.29248922]
BaseTensor: [-0.51872466]
BaseTensor: [-0.2480253]
BaseTensor: [ 1.33790824]
BaseTensor: [-0.66894514]
BaseTensor: [-1.23009705]
BaseTensor: [-0.66075404]
BaseTensor: [-0.83769751]
BaseTensor: [-0.4476906]
BaseTensor: [-0.49637607]
BaseTensor: [ 0.5745558]
BaseTensor: [-0.09707473]
BaseTensor: [-0.54784307]
BaseTensor: [-1.21893442]
BaseTensor: [ 0.68630794]
BaseTensor: [-0.12485017]
BaseTensor: [ 0.46754837]
BaseTensor: [-1.00183516]
BaseTensor: [-0.28760277]
BaseTensor: [ 0.36919389]
BaseTensor: [-0.76645252]
BaseTensor: [-0.49132003]
BaseTensor: [-0.98234434]
BaseTensor: [ 0.48067864]
BaseTensor: [ 0.76832755]
BaseTensor: [ 0.81705011]
BaseTensor: [ 0.74088656]
BaseTensor: [ 0.00142117]
BaseTensor: [ 1.04188746]
BaseTensor: [ 0.5900891]
BaseTensor: [ 0.55695169]
BaseTensor: [ 0.4292142]
BaseTensor: [-0.82152702]
BaseTensor: [ 0.66460291]
BaseTensor: [-0.49875913]
BaseTensor: [-1.64665206]
BaseTensor: [-0.24598415]
BaseTensor: [-0.4496077]
BaseTensor: [ 0.54655035]
BaseTensor: [-0.63515128]
BaseTensor: [-0.0034386]
BaseTensor: [-0.73677893]
BaseTensor: [-0.19952513]
BaseTensor: [ 0.7488622]
BaseTensor: [-1.32103845]
BaseTensor: [ 0.052355]
BaseTensor: [-0.91900053]
BaseTensor: [ 1.37882477]
BaseTensor: [ 0.53072852]
BaseTensor: [ 0.32288668]
BaseTensor: [ 1.68768419]
BaseTensor: [-0.13154815]
BaseTensor: [ 0.54658]
BaseTensor: [-1.04558346]
BaseTensor: [-0.17632501]
BaseTensor: [-0.045453]
BaseTensor: [-0.47026637]
BaseTensor: [ 0.74940082]
BaseTensor: [-0.87383532]
BaseTensor: [-1.10561459]
BaseTensor: [-0.34356904]
BaseTensor: [ 0.922365]
BaseTensor: [-0.00187599]
BaseTensor: [-0.27365843]
BaseTensor: [ 0.08588668]
BaseTensor: [-0.5610889]
BaseTensor: [-1.68138838]
BaseTensor: [-0.02545138]
BaseTensor: [ 0.30901227]
BaseTensor: [ 0.86281781]
BaseTensor: [-0.6320211]
BaseTensor: [-0.94267278]
BaseTensor: [-0.60490428]
BaseTensor: [-0.64737815]
BaseTensor: [-0.76870325]
BaseTensor: [-0.23181355]
BaseTensor: [ 0.26769314]
BaseTensor: [ 1.83363999]
BaseTensor: [-0.84952878]
BaseTensor: [-0.0952512]
BaseTensor: [-0.6279329]
BaseTensor: [-1.03027436]
BaseTensor: [-0.25308452]
BaseTensor: [ 0.01589987]
BaseTensor: [ 0.16922601]
BaseTensor: [-0.19542567]
BaseTensor: [ 0.01412559]
BaseTensor: [-0.91515777]
BaseTensor: [ 0.55260572]
BaseTensor: [ 1.18779941]
BaseTensor: [ 0.77477533]
BaseTensor: [-0.38654394]
BaseTensor: [-0.8542339]
BaseTensor: [-0.52709555]
BaseTensor: [ 0.40335335]
BaseTensor: [-0.15693626]
BaseTensor: [ 0.11512082]
BaseTensor: [ 0.40017384]
BaseTensor: [ 0.11527548]
BaseTensor: [ 0.50149405]
BaseTensor: [-0.04334623]
BaseTensor: [ 0.63694207]
BaseTensor: [ 1.00822495]
BaseTensor: [ 0.85637758]
BaseTensor: [ 0.24674258]
BaseTensor: [-0.04549523]
BaseTensor: [-1.02695976]
BaseTensor: [-0.41828579]
BaseTensor: [-0.34321428]
BaseTensor: [-0.44615644]
BaseTensor: [ 1.11659187]
BaseTensor: [ 0.26134358]
BaseTensor: [-1.06146779]
BaseTensor: [ 1.14587976]
BaseTensor: [-1.76437551]
BaseTensor: [-0.11704082]
BaseTensor: [-0.16816114]
BaseTensor: [ 0.39377718]
BaseTensor: [-0.22822747]
BaseTensor: [ 0.69049431]
BaseTensor: [-0.42898593]
BaseTensor: [-0.27561287]
BaseTensor: [-1.29071817]
BaseTensor: [-0.92240978]
BaseTensor: [-0.89922203]
BaseTensor: [-0.30918559]
BaseTensor: [-0.39933307]
BaseTensor: [-0.34693268]
BaseTensor: [-0.75031461]
BaseTensor: [-0.34422845]
BaseTensor: [-0.36089593]
BaseTensor: [-0.05148044]
BaseTensor: [ 0.02524409]
BaseTensor: [ 0.41160238]
BaseTensor: [-0.64502009]
BaseTensor: [ 0.16114465]
BaseTensor: [ 0.70190699]
BaseTensor: [ 0.20337816]
BaseTensor: [-0.05104034]
BaseTensor: [ 0.96797083]
BaseTensor: [ 0.25194173]
BaseTensor: [-0.36727426]
BaseTensor: [ 0.02204251]
BaseTensor: [ 0.8271318]
BaseTensor: [-0.74908155]
BaseTensor: [ 0.0218068]
BaseTensor: [ 0.42133785]
BaseTensor: [-0.22506713]
BaseTensor: [-0.41693498]
BaseTensor: [ 0.20860297]
BaseTensor: [-0.26733557]
BaseTensor: [-1.05240253]
BaseTensor: [ 0.37062503]
BaseTensor: [-0.36500677]
BaseTensor: [ 1.92421595]
BaseTensor: [-1.70932624]
BaseTensor: [ 0.94464838]
BaseTensor: [-0.07290435]
BaseTensor: [-0.54238534]
BaseTensor: [-1.47598523]
BaseTensor: [ 0.07999902]
BaseTensor: [ 0.52293977]
BaseTensor: [ 0.82995281]
BaseTensor: [ 0.45890556]
BaseTensor: [-0.6960184]
BaseTensor: [-0.22034338]
BaseTensor: [-0.29267653]
BaseTensor: [-0.06297612]
BaseTensor: [ 0.45657423]
BaseTensor: [-0.81161635]
BaseTensor: [-1.07879455]
BaseTensor: [-0.25833828]
BaseTensor: [-0.1808161]
BaseTensor: [-0.95680046]
BaseTensor: [ 0.37785918]
BaseTensor: [ 0.46873033]
BaseTensor: [-0.21362241]
BaseTensor: [-0.13266779]
BaseTensor: [ 0.55373267]
BaseTensor: [ 1.39888438]
BaseTensor: [-0.96012571]
BaseTensor: [-0.40504542]
BaseTensor: [ 0.85568982]
BaseTensor: [ 0.67294487]
BaseTensor: [ 0.30776624]
BaseTensor: [ 0.78346833]
BaseTensor: [ 0.93699827]
BaseTensor: [ 0.33185472]
BaseTensor: [-0.08568221]
BaseTensor: [-0.66517687]
BaseTensor: [ 0.29936759]
BaseTensor: [-0.26864428]
BaseTensor: [ 1.63024897]
BaseTensor: [ 0.29183232]
BaseTensor: [ 0.80221359]
BaseTensor: [-0.64930298]
BaseTensor: [ 0.92708692]
BaseTensor: [-1.09544331]
BaseTensor: [ 0.3977323]
BaseTensor: [ 0.40793563]
BaseTensor: [ 0.73490802]
BaseTensor: [ 0.60189612]
BaseTensor: [ 0.27337574]
BaseTensor: [ 0.60792608]
BaseTensor: [-0.42804581]
BaseTensor: [-0.18191332]
BaseTensor: [-0.55602221]
BaseTensor: [-0.1689342]
BaseTensor: [ 0.03768911]
BaseTensor: [ 0.3086323]
BaseTensor: [ 1.46430684]
BaseTensor: [ 1.62932338]
BaseTensor: [ 0.29195441]
BaseTensor: [-0.79226335]
BaseTensor: [-0.31081317]
BaseTensor: [ 0.12432121]
BaseTensor: [ 0.93026945]
BaseTensor: [-0.99548168]
BaseTensor: [-0.46219546]
BaseTensor: [-0.69861181]
BaseTensor: [ 0.29443364]
BaseTensor: [-0.2228965]
BaseTensor: [ 0.42511747]
BaseTensor: [-1.12224521]
BaseTensor: [ 0.53245026]
BaseTensor: [-0.39839497]
BaseTensor: [-0.25458727]
BaseTensor: [-0.6729502]
BaseTensor: [ 0.48137219]
BaseTensor: [ 0.11992176]
BaseTensor: [ 1.25639549]
BaseTensor: [-1.38745814]
BaseTensor: [ 0.11499568]
BaseTensor: [-1.5857445]
BaseTensor: [-0.20764678]
BaseTensor: [ 0.27516012]
BaseTensor: [-0.15791325]
BaseTensor: [-1.3157857]
BaseTensor: [-0.91622524]
BaseTensor: [-0.53126227]
BaseTensor: [ 0.73871972]
BaseTensor: [ 0.14669851]
BaseTensor: [-0.08073748]
BaseTensor: [-0.66734655]
BaseTensor: [ 0.0520421]
BaseTensor: [ 0.51215727]
BaseTensor: [-1.52147642]