CHANGELOG¶
v0.14.1 (22/04/2021)¶
This version brings fixes for a few issues with the optimizers and related classes, along with improvements to documentation for all attacks, optimizers, and related classes.
Fixed (3 changes)¶
#923 Fixed
COptimizerPGDLSandCOptimizerPGDLSnot working properly if the classifier’s gradient has multiple components with the same (max) value.#919 Fixed
CConstraintL1crashing when projecting sparse data using default center value (scalar 0).#920 Fixed inconsistent results between dense and sparse data for
CConstraintL1projection caused by type casting.
Removed & Deprecated (1 change)¶
#922 Removed unnecessary parameter
discretefromCOptimizerPGDLSandCOptimizerPGDExp.
Documentation (2 changes)¶
#100017 Improved documentation of
CAttackEvasion,COptimizer,CLineSearch, and corresponding subclasses.#918 Installing the latest stable version of RobustBench instead of the master version.
v0.14 (23/03/2021)¶
#795 Added new package
adv.attacks.evasion.foolboxwith a wrapper for Foolbox.#623
secmlis now tested for compatibility with Python 3.8.#861 N-Dimensional input is now accepted by
CArray.#853 Added new notebook tutorial with an application on Android Malware Detection.
#859 Add a new tutorial notebook containing example usage and attack against RobustBench models.
#845 Static Application Security Testing (SAST) using bandit is now executed during testing process.
Requirements (5 changes)¶
#623
secmlis now tested for compatibility with Python 3.8.#623 The following dependencies are now required:
scipy >= 1.3.2,scikit-learn >= 0.22,matplotlib >= 3.#623 The
pytorchextra component now installs:torch >= 1.4,torchvision >= 0.5.#623 The
cleverhansextra component is now available on Python < 3.8 only, due totensorflow 1compatibility.#822 Dropped official support of Python 3.5, which reached End Of Life on 13 Sep 2020. SecML may still be usable in the near future on Python 3.5 but we stopped running dedicated tests on this interpreter.
Added (3 changes)¶
#795 Added new package
adv.attacks.evasion.foolboxwith a wrapper for Foolbox.#880 Added new
shapeparameter to the followingCArraymethods:get_data,tondarray,tocsr,tocoo,tocsc,todia,todok,tolil,tolist. The reshaping operation is performed after casting the array to the desired output data format.#855 Added new ROC-related performance metrics:
CMetricFNRatFPR,CMetricTHatFPR,CMetricTPRatTH,CMetricFNRatTH.
Improved (3 changes)¶
#861 N-Dimensional input is now accepted by
CArray. If the number of dimensions of input data is higher than 2, the data is reshaped to 2 dims, and the original shape is stored in the new attributeinput_shape.#910 The MNIST dataset loader
CDataLoaderMNISTnow downloads the files from our model-zoo mirror (https://gitlab.com/secml/secml-zoo/-/tree/datasets/MNIST).#886 Torch datasets now stored by
CDataLoaderTorchDatasetin a “pytorch” subfolder ofSECML_DS_DIRto avoid naming collisions.
Fixed (8 changes)¶
#897 Fixed crash in
CAttackPoisoningwheny_target != Nonedue to missing broadcasting to expected shape.#873 Use equality instead of identity to compare literals (fixing related SyntaxWarning in Python 3.8).
#867 Now calling
StandardScaler,CScalerNorm,CScalerMinMaxarguments using keywords to fix scikit futurewarning in version 0.23 or later.#870 Filtering “DeprecationWarning: tostring() is deprecated. Use tobytes() instead.” raised by tensorflow 1.15 if numpy 1.19 is installed.
#868 Correctly escaping latex commands in docstrings to avoid “DeprecationWarning: invalid escape sequence s”.
#871 Fixed
ValueError: k exceeds matrix dimensionsnot raised by scipy v1.5 if akoutside the array dimensions is used to extract a diagonal.#872 Fixed scipy 1.5 not always keeping the dtype of the original array during getitem (especially if the result is an empty array).
#888 Filter warning raised by torchvision mnist loader first time you download.
Removed & Deprecated (2 changes)¶
#875 Removed parameter
frameonfromCFigure.savefigas it is deprecated in matplotlib >= 3.1.#875 Removed parameter
papertypefromCFigure.savefigas it is deprecated in matplotlib >= 3.3.
Documentation (10 changes)¶
#853 Added new notebook tutorial with an application on Android Malware Detection.
#859 Add a new tutorial notebook containing example usage and attack against RobustBench models.
#898 Added “Open in Colab” button to all tutorial notebooks.
#899 Added “Edit on Gitlab” button to doc pages.
#900 Moved notebook 11 “Evasion Attacks on ImageNet (Computer Vision)” to “Applications” section.
#905 Changed image used by notebook 8, as the previous one is no more available.
#903 Updated roadmap page in documentation.
#890 Fixed multiple typos and improved language in the README.
#878 Updated intersphinx mapping for numpy’s documentation.
#850 Fixed
MNISTtypo in notebook 10.
v0.13 (24/07/2020)¶
#814 Added new evasion attack
CAttackEvasionPGDExp.#780 Added new classifier
CClassifierDNRimplementing Deep Neural Rejection (DNR). See Sotgiu et al. “Deep neural rejection against adversarial examples”, EURASIP J. on Info. Security (2020).#47 Added new classifier
CClassifierMulticlassOVOimplementing One-vs-One multiclass classification scheme.#765 Extended
CModuleto support trainable modules viafitandfit_forwardfunctions.#800 Security evaluation can now be run using Cleverhans attacks. The name of the parameter to check should be specified as
attack_params.<param_name>as an input argument for the constructor ofCSecEval.#839 Experimental support of Windows operating system (version 7 or later).
Requirements (1 change)¶
#768 Removed temporary pin of Pillow to v6 which used to break torch and torchvision packages.
Added (4 changes)¶
#100007 Added new experimental package
ml.scalerswith a different implementation ofml.features.normalizationclasses directly based Scikit-Learn’s scalers. Included classes are:CScalerMinMax,CScalerStd,CScalerNorm.#770 Added new methods to convert a
CArrayto specificscipy.sparsearray formats:tocoo,tocsc,todia,todok,tolil.#812
CAttackPoisoningnow exposes:x0,xc,yc,objective_functionandobjective_function_gradient.#776
n_jobsis now a init parameter ofCModuleand subclasses and not passed viafitanymore.
Improved (12 changes)¶
#817 Added
CClassifierSVMnative support to OVA multiclass scheme, without replicating the kernel in each one-vs-all classifier.#574 Added
_clear_cachemechanism toCModuleand classes that require caching data in the forward pass before backward (e.g., exponential kernels do that to avoid re-computing the kernel matrix in the backward pass).#820 Add parallel execution of
forwardmethod forCClassifierMulticlassOVAandCClassifierMulticlassOVO.#815 Simplified
CAttackinterface (now only requires implementingrunas required byCSecEval).#574 Modified kernel and classifier interfaces to allow their use as preprocessing modules.
#775 Improved efficiency in gradient computation of SVMs, by back-propagating the alpha values to the kernel.
#773 Improved efficiency in the computation of gradients of evasion attacks (
CAttackEvasionPGDLS). Now gradient is called once rather than twice to compute the gradient of the objective function.#801
CSecEvalwill now check that theparam_nameinput argument can be found in the attack class used in the evaluation.#695
COptimizerPGDnow exits optimization if constraint radius is 0.COptimizerPGD,COptimizerPGDLSandCOptimizerPGDExpwill now raise a warning if the 0-radius constraint is defined outside the given bounds.#828
CClassifierSVMnow usesn_jobsparameter for parallel execution of training in case of multiclass datasets.#767 Using
scipy.sparse.hstackand.vstackinstead of a custom implementation inCSparse.concatenate.#772 Using
scipy.sparse.argminand.argmaxinstead of a custom implementation inCSparse.argminandCSparse.argmax.
Changed (6 changes)¶
#817 Kernel is now used as preprocess in
CClassifierSVM.#817 Removed
store_dual_varsandkernel.setterfromCClassifierSVM. Now a linear SVM is trained in the primal (w,b) ifkernel=None, otherwise it is trained in the dual (alpha and b), on the precomputed training kernel matrix.#765 Unified
fitinterface fromfit(ds)tofit(x,y)to be consistent across normalizers and classifiers.#574 Removed redundant definitions of
gradient(x, w)fromCKernelRBF,CKernelLaplacian,CKernelEuclidean,CClassifierDNN,CNormalizerUnitNorm. The protected propertygrad_requires_forwardnow specifies if gradient has to compute an explicit forward pass or only propagate the inputxthrough the pre-processing chain before callingbackward.#823 Removed
surrogate_dataparameter fromCAttackPoisoningand renamed it todouble_init_dsinCAttackEvasionsubclasses.#829
CClassifierRejectThresholdnow returns wrapped classifier classes plus the reject class (-1).
Fixed (10 changes)¶
#816 Fixed stop condition of
COptimizerPGDwhich was missing indexi.#825 Infer the number of attacked classifier classes directly from it (instead of inferring it from surrogate data) in
CAttackEvasionPGDLSto fix a crash when the class index of data points is greater or equal than the number of alternative data points.#810 Fixed
CClassifierPyTorch.backwardnot working properly due to a miscalculation of the number of input features of the model when aCNormalizeDNNis used as preprocessor.#803 Fixed checks on the inner classifier in
CClassifierRejectThresholdwhich can be bypassed by using the clf attribute setter, now removed.#818 Fixed
CCreator.setnot allowing to set writable attributes of level-0 readable-only attributes.#819 Fixed
CCreator.get_paramsnot returning level-0 not-writable attributes having one or more writable attributes.#785 Fixed constant override of matplotlib backend in
CFigureon Windows systems.#783 Fixed
model_zoo.load_modelimproperly building download urls depending on the system default url separator.#771 Fixed the following methods of
CSparseto ensure they properly work independently from the sparse array format:save,load,__pow__,round,nan_to_num,logical_and,unique,bincount,prod,all,any,min,max.#769
CArray.tocsr()now always returns ascipy.sparse.csr_matrixarray as expected.
Removed & Deprecated (2 changes)¶
#540 Removed
discreteandsurrogate_classifierparameter fromCAttack.#777 Deprecated attribute
kernelis now removed fromCClassifierSGD,CClassifierRidgeandCClassifierLogisticclassifiers.
Documentation (10 changes)¶
#839 Windows is now displayed as a supported Operating System in README and setup.
#806 Documented pytorch extra component installation requirements under Windows.
#834 Temporarily pinned
numpydocto< 1.1to avoid compatibility issues of the newest version.#807 Documentation is now built using Sphinx https://readthedocs.org/ theme v0.5 or higher.
#830 Fixed links to repository pages by adding a dash after project name.
#758 Added a direct link to the gitlab.com repository in README.
#788 Notebooks now include a warning about the required extra components (if any).
#787 Fixed argmin -> argmax typo in docstring of
CClassifierRejectThreshold.predictmethod.#789 Fixed notebook 4 not correctly generating a separate dataset for training the target classifiers.
#791 Fixed
random_statenot set forCClassifierDecisionTreein notebook 4.
v0.12 (11/03/2020)¶
#726 Refactored kernel package (now
secml.ml.kernels). Kernel classes are now inherited fromCModule, which enables computing gradients more efficiently. This will enable us to use kernels as preprocessors in future releases.#755 Package
secml.ml.model_zoohas been moved tosecml.model_zoo.#721 Dictionary with model zoo definitions is now dynamically downloaded and updated from our repository located at https://gitlab.com/secml/secml-zoo. The package
model_zoo.modelscontaining python scripts defining models structure is now removed and the scripts will be downloaded from the same repository upon request.
Added (7 changes)¶
#660
CClassifierPyTorchnow accepts as input a PyTorch learning rate scheduler via theoptimizer_schedulerparameter.#678 Added new parameter
return_optimizertoCClassifierPyTorch.get_statewhich allows getting the state of the classifier without including the state of theoptimizer(and of the newoptimizer_scheduler).Added
random_stateparameter toCPSKMedians.Added the parameter
minlengthto thebincountmethod ofCArray.Added new
CNormalizerTFIDFwhich implements a term frequency–inverse document frequency features normalizer.#666 Added new
utils.download_utils.dl_file_gitlabfunction which allows downloading a file from a gitlab.com repository, including branch and access token setting.#722 Added new optional parameter
headerstoutils.download_utils.dl_filefunction which allows specifying additional headers for the download request.
Improved (8 changes)¶
#664 The following
CClassifierPyTorchparameters can now be modified after instancing the class:optimizer,epochs,batch_size. This will make some procedures easier, like fine-tuning a pre-trained network.#712
download_utils.dl_file()will now use the filename stored in response’s headers if available. The previous behavior (get the last part of the download url) will be used as a fallback.#748
CNormalizerUnitNormre-factored by adding gradient computation.#706 Rewrite
CKernelRBFgradient when passingwto speed up computations by avoiding broadcasting.#730
CClassifierPyTorchhas been modified to clean cached outputs and save memory when caching such data is not required.Internally optimized variables can be stored inside the attack class and fetched when needed.
Accurate evaluation of objective function for some cleverhans attacks (CW, Elastic Net).
#666 Model zoo downloader
ml.model_zoo.load_modelfunction will now try to download the version of a requested model corresponding to the version of secml. If not found, the latest ‘master’ version of the model will be downloaded instead.
Changed (3 changes)¶
#664 When passing pre-trained models to
CClassifierDNNand subclasses the newpretrainedparameter should now be set toTrue. Optionally, an array of classes on which the model has been pre-trained can be passed via the newpretrained_classesparameter. Ifpretrained_classesis leftNone, the number of classes will be inferred from the size of the last DNN layer as before.CConstraintL2.project(x)projects nowxonto a hypersphere of radiusradius-tol, withtol=1e-6. This conservative projection ensures thatxis projected always inside the hypersphere, overcoming projection violations due to numerical rounding errors.CModule.gradientis not callingforwardanymore, but only prepares data forbackward. The forward step is not required, indeed, for modules that implement analytical gradients rather than autodiff.
Fixed (10 changes)¶
#677 Fixed
CClassifierPyTorch.get_statecrashing when optimizer is not defined.#134 Fixed passage of
n_jobsparameter toCDataLoaderPyTorchinCClassifierPyTorchwhere 2 processes are being used by the loader even ifn_jobsis set to 1. The default value for parameternum_workersinCDataLoaderPyTorchis now correctly 0.#749 Fixed
CArray.argminand.argmaxreturning float types when applied to sparse arrays of float dtype.Gradient is now correctly computed in
CClassifierPytorcheven ifsoftmax_outputsare active.#707 Fixed initial value of the objective function being computed before starting point projection in
COptimizerPGDLS.#667 Fixed
download_utils.dl_file()not removing url parameters from the name of the stored file.#715
download_utils.dl_file()now correctly manage the absence of the ‘content-length’ header from response.Inverted sign of computed kernel similarity (to have a distance measure).
#710 Random seed in
CClassifierPyTorchis now correctly applied also when running on the CuDNN backend.#639: Objective function parameter (
objective_function) inCAttackEvasionCleverhansis now correctly populated forElasticNetMethodandSPSAattacks.
Removed & Deprecated (5 changes)¶
#748
CNormalizerUnitNorm.inverse_transformhas been removed (it only worked if one invertedxafter transforming it, but not if other transforms were applied in between).Removed the parameters
n_featsandn_classesfrom the interface ofCAttackEvasionCleverhans.#744 Deprecate kernel parameter from
CClassifierSGDandCClassifierRidgeand removed deprecated parameterkernel='linear'from notebook01-Training.ipynb.#643 Removed deprecated parameter
random_seedfromCClassifierLogistic. Userandom_stateinstead.#643 Removed deprecated method
is_linearfromCClassifier,CNormalizer, and related subclasses.
Documentation (5 changes)¶
#756 Fixed format of output arrays reported in
CArray.__mul__and.__truediv__methods.#681 Fixed few typos in
CExplainerIntegratedGradients.#674 Added
CClassifierDNNto the documentation.#711 Added a “How to cite SecML” section in README.
#703 Updated copyright notice in README.
v0.11.2 (07/01/2020)¶
This version brings fixes for a few reported issues with
CAttackand subclasses, along with the new Developers and Contributors guide.
Requirements (1 change)¶
#700 Temporarily pinned
Pillowto v6 to avoid breakingtorchandtorchvisionpackages.
Fixed (7 changes)¶
#698 Fixed
CAttackEvasionCleverhansdefinition ofclass_type.#662 The number of function and gradient evaluations made during double initialization in
CAttackEvasionPGDLSare now correctly considered by.f_evaland.grad_evalproperties.#699 Fixed batch processing in
CClassifierPyTorchnot working properly if the number of samples to be classified is not a multiple ofbatch_size.#691 Function and gradient evaluation counts in
CAttackEvasionCleverhansreturned by.f_evaland.grad_evalproperties now only consider the last optimized sample, consistently with otherCAttacksubclasses.#701 Default value of
double_initparameter inCAttackEvasionPGDLSset to True as originally intended.#684 The solution returned by
COptimizerPGDis now always the best one found during the minimization process.#697 Fixed unittests failing under numpy v1.18 due to a change in the errors raised by
genfromtxt.
Documentation (2 changes)¶
#671 Added Developers and Contributors guide.
#694 Added a new notebook tutorial on advanced evasion attacks using Deep Neural Networks and ImageNet dataset.
v0.11.1 (18/12/2019)¶
Fixed compatibility issues with recently released scikit-learn v0.22 and scipy v1.4.
Fixed (3 changes)¶
#687 Fixed reshaping of sparse arrays to vector-like when using Scipy v1.4.
#686 Replaced deprecated import of
interpfunction from scipy namespace instead of numpy namespace.#668 Fixed unittests failing under scikit-learn v0.22 due to a change in their class output.
v0.11 (02/12/2019)¶
#653 Added new
secml.ml.model_zoopackage, which provides a zoo of pre-trained SecML models. The list of available models will be greatly expanded in the future. See https://secml.gitlab.io/secml.ml.model_zoo.html for more details.#629 Greatly improved the performance of the
grad_f_xmethod forCClassifierandCPreProcessclasses, especially when nested viapreprocessattribute.#613 Support for Python 2.7 is dropped. Python version 3.5, 3.6, or 3.7 is now required.
Requirements (2 changes)¶
#633 The following dependencies are now required:
numpy >= 1.17,scipy >= 1.3.1,scikit-learn >= 0.21matplotlib = 3.#622 Removed dependency on
sixlibrary.
Added (5 changes)¶
#539 Added new core interface to get and set the state of an object instance:
set_state,get_state,save_state,load_state. The state of an object is a simple human-readable Python dictionary object which stores the data necessary to restore an instance to a specific status. Please not that to guarantee the exact match between the original object instance and the restored one, the standard save/load interface should be used.#647 Added new function
core.attr_utils.get_protectedwhich returns a protected attribute from a class (if exists).#629
CClassifierandCPreProcessclasses now provide agradientmethod, which computes the gradient by doing a forward and a backward pass on the classifier or preprocessor function chain, accepting an optional pre-multiplierw.#539 Added new accessible attributes to multiple classes:
CNormalizerMinMax .m .q;CReducerLDA .lda;CClassifierKNN .tr;CClassifierRidge .tr;CClassifierSGD .tr;CClassifierPyTorch .trained.#640 Added
random_stateparameter toCClassifierDecisionTree.
Improved (6 changes)¶
#631 Data objects are now stored using protocol 4 by
pickle_utils.save. This protocol adds support for very large objects, pickling more kinds of objects, and some data format optimizations.#639 Objective function parameter (
objective_function) inCAttackEvasionCleverhansis now correctly populated for the following attacks:CarliniWagnerL2,FastGradientMethod,ProjectedGradientDescent,LBFGS,MomentumIterativeMethod,MadryEtAl,BasicIterativeMethod.#638 The sequence of modifications to the attack point (
x_seqparameter) is now correctly populated inCAttackEvasionCleverhans.#595 A pre-trained classifier can now be passed to
CClassifierRejectThresholdto avoid running fit twice.#627 Slight improvement of
CKernel.gradient()method performance by removing unnecessary calls.#630 Sparse data can now be used in
CKernelHistIntersect.
Changed (2 changes)¶
#616 Renamed
CModelCleverhansto_CModelCleverhansas this class is not supposed to be explicitly used.#111 Default value of the parameter
tolchanged from-inftoNoneinCClassifierSGD. This change should not alter the classifier behavior when using the default parameters.
Fixed (8 changes)¶
#611 Fixed
CDataloaderMNISTcrashing depending on the desired number of samples and digits to load.#652 Number of gradient computations returned by
CAttackEvasionCleverhans.grad_evalis now accurate.#650 Fixed
CAttackEvasionCleverhans.f_evalwrongly returns the number of gradient evaluations.#637 Fixed checks on
y_tagetinCAttackEvasionCleverhanswhich compared the 0 label to untargeted case (y_true = None).#648 Function
core.attr_utils.is_publicnow correctly return False for properties.#649 Fixed wrong use of
core.attr_utils.is_publicinCCreatorandCDatasetHeader.#655 Fixed
CClassifierRejectThreshold.n_classesnot taking into account the rejected class (label -1).#636 Fixed a
TypeErrorraised byCFigure.clabel()when using matplotlib 3.
Removed & Deprecated (4 changes)¶
#628 Method
is_linearofCClassifierandCNormalizersubclasses is now deprecated.#641 Parameter
random_seedofCClassifierLogisticis now deprecated. Userandom_stateinstead.#603 Removed deprecated class
CNormalizerMeanSTD.#603 Removed deprecated parameter
batch_sizefromCKerneland subclasses.
Documentation (4 changes)¶
#625 Reorganized notebooks tutorials into different categories: Machine Learning, Adversarial Machine Learning, and Explainable Machine Learning.
#615 Added a tutorial notebook on the use of Cleverhans library wrapper.
#607 Settings module
secml.settingsis now correctly displayed in the docs.#626 Added missing reference to
CPlotMetricclass in docs.
v0.10 (29/10/2019)¶
#535 Added new package
secml.explanation, which provides different methods for explaining machine learning models. See documentation and examples for more information.#584 [beta] Added
CAttackEvasionCleverhansto support adversarial attacks from CleverHans, a Python library to benchmark vulnerability of machine learning systems to adversarial examples.
Requirements (1 change)¶
#580 PyTorch version
1.3is now supported.
Added (4 changes)¶
#565 Added new abstract interface
CClassifierDNNfrom which new classes implementing Deep Neural Networks can inherit.#555 Added
CNormalizerDNN, which allows using aCClassifierDNNas a preprocessor.#593 Added
CDataLoaderTorchDataset, which allows converting atorchvisiondataset into aCDataset.#598 Added gradient method for
CKernelHistIntersection.
Improved (6 changes)¶
#562 Extended support of
CClassifierPyTorchto nested PyTorch modules.#594
CClassifierPyTorch.load_model()is now able to also load models trained with PyTorch (without using our wrapper). New parameterclassesadded to the method to match classes to indexes in the loaded model.#579 Left side single row/column broadcast is now supported for sparse vs sparse
CArrayoperations.#582 Improved performance of
CNormalizerMeanStdwhen multiple channels are defined.#576 Vastly improved the performance of kernels by removing loops over samples in many classes and refactoring main routines.
#562 Improved
grad_f_xcomputation at a specific layer inCClassifierPyTorch.
Changed (4 changes)¶
#578
CClassifierPyTorchnow inherits fromCClassifierDNN. The following changed accordingly: parametertorch_modelrenamed tomodel; propertylayer_shapesis now defined; methodsave_checkpointremoved.#562 Parameter
layerofCClassifierPyTorch.get_layer_output()is now renamedlayer_namesas a list of layers names is supported (a single layer name is still supported as input). A dictionary is returned if multiple layers are requested. See the documentation for more information.#533 Double initialization in
CAttackEvasionPGDLSwill now be executed regardless of the classifier type (linear or nonlinear) if thedouble_initparameter of.run()method is set toTrue.#591 It is now not required to call the
fitmethod ofCNormalizerMeanSTDif fixed mean/std values are used.
Fixed (4 changes)¶
#561 Fixed
CConstraintBoxnot always applied correctly for float data.#577 Fixed
CClassifierPyTorch.decision_functionapplying preprocess twice.#581 Fixed gradient computation of
CKernelChebyshevDistance.#599 Kernels using distances are now based on negative distances (to correctly represent similarity measures). Affected classes are:
CKernelChebyshevDistance,CKernelEuclidean.
Removed & Deprecated (5 changes)¶
#561 Removed parameter
precisionfromCConstraint.is_violated().#575 Parameter
batch_sizeofCKernelis now deprecated.#597 Removed unused parameter
gammafromCKernelChebyshevDistance.#596 Removed
CKernelHamming.#602 Renamed
CNormalizerMeanSTDtoCNormalizerMeanStd. The old class has been deprecated and will be removed in a future version.
Documentation (5 changes)¶
#538 Added a notebook tutorial on the use of Explainable ML methods provided by the
secml.explanationpackage.#573 Improved visualization of attack results in
07-ImageNettutorial.#610 Fixed spacing between parameter and parameter type in the docs.
#605 Fixed documentation of classes requiring extra components not being displayed.
#608 Added acknowledgments to
README.
v0.9 (11/10/2019)¶
#536 Added
CClassifierPytorchto support Neural Networks (NNs) through PyTorch deep learning platform.
Improved (1 change)¶
#556
CFigure.imshownow supportsPILimages as input.
Changed (1 change)¶
#532 Method
CPreProcess.revert()is now renamed.inverse_transform().
Fixed (1 change)¶
#554 Fixed
CClassifierSkLearn.predict()not working when using pretrained sklearn models.
Documentation (2 changes)¶
#559 Deprecated functions and classes are now correctly visualized in the documentation.
#560 Updated development roadmap accordingly to
0.10,0.11and0.12releases.
Deprecations (3 changes)¶
#532 Method
CPreProcess.revert()is deprecated. Use.inverse_transform()instead.#552
CClassifierKDEis now deprecated. UseCClassifierSkLearnwithsklearn.neighbors.KernelDensityinstead.#553
CClassifierMCSLinearis now deprecated. UseCClassifierSkLearnwithsklearn.ensemble.BaggingClassifierinstead.
v0.8.1 (05/09/2019)¶
This version does not contain any significant change.
Documentation (2 changes)¶
#523 Fixed documentation not compiling under Sphinx v2.2.
#529 Updated roadmap accordingly for v0.9 release.
v0.8 (06/08/2019)¶
First public release!