ML (Pipeline)
FHEPipeline¶
Demonstrates the FHEPipeline class. Compiles and tests its simulate vs predict logic.
In [ ]:
Copied!
from concrete_fhe_toolkit.ml.classes import FHELogisticRegression
from concrete_fhe_toolkit.ml.pipeline import FHEPipeline
model = FHEPipeline([FHELogisticRegression(weights=[1, 1], bias=0)])
inputset = [[1, 0], [0, 1]]
model.compile(inputset)
import numpy as np
_successes = 0
for inp in inputset:
try:
expected = model.simulate(inp)
fhe_res = model.predict(inp)
if isinstance(expected, (list, np.ndarray)) or hasattr(expected, '__iter__'):
np.testing.assert_array_equal(fhe_res, expected)
else:
assert int(fhe_res) == int(expected)
except AssertionError:
raise
except Exception as e:
print(f'Skipping {inp} due to bounds or other error: {e}')
else:
_successes += 1
assert _successes > 0, 'FHEPipeline: all inputs were skipped'
print(f'FHEPipeline model compiled and tested successfully! ({_successes}/{len(inputset)})')
from concrete_fhe_toolkit.ml.classes import FHELogisticRegression
from concrete_fhe_toolkit.ml.pipeline import FHEPipeline
model = FHEPipeline([FHELogisticRegression(weights=[1, 1], bias=0)])
inputset = [[1, 0], [0, 1]]
model.compile(inputset)
import numpy as np
_successes = 0
for inp in inputset:
try:
expected = model.simulate(inp)
fhe_res = model.predict(inp)
if isinstance(expected, (list, np.ndarray)) or hasattr(expected, '__iter__'):
np.testing.assert_array_equal(fhe_res, expected)
else:
assert int(fhe_res) == int(expected)
except AssertionError:
raise
except Exception as e:
print(f'Skipping {inp} due to bounds or other error: {e}')
else:
_successes += 1
assert _successes > 0, 'FHEPipeline: all inputs were skipped'
print(f'FHEPipeline model compiled and tested successfully! ({_successes}/{len(inputset)})')