From 8d87b2837145bdd124c5e585ac1d297e55702bf0 Mon Sep 17 00:00:00 2001 From: Ali El Hadi ISMAIL FAWAZ <54309336+hadifawaz1999@users.noreply.github.com> Date: Thu, 18 Jul 2024 22:20:51 +0200 Subject: [PATCH] remove base deep network old class (#1817) --- aeon/networks/__init__.py | 2 +- aeon/networks/base.py | 41 -------- aeon/networks/tests/test_all_networks.py | 5 +- docs/api_reference/networks.rst | 2 +- examples/base/base_classes.ipynb | 122 +++++++++++------------ 5 files changed, 64 insertions(+), 108 deletions(-) diff --git a/aeon/networks/__init__.py b/aeon/networks/__init__.py index 4f56f2c434..b7ec3ca75a 100644 --- a/aeon/networks/__init__.py +++ b/aeon/networks/__init__.py @@ -26,4 +26,4 @@ from aeon.networks._mlp import MLPNetwork from aeon.networks._resnet import ResNetNetwork from aeon.networks._tapnet import TapNetNetwork -from aeon.networks.base import BaseDeepLearningNetwork, BaseDeepNetwork +from aeon.networks.base import BaseDeepLearningNetwork diff --git a/aeon/networks/base.py b/aeon/networks/base.py index aed3760b87..9f80fc54e3 100644 --- a/aeon/networks/base.py +++ b/aeon/networks/base.py @@ -4,53 +4,12 @@ from abc import ABC, abstractmethod -from deprecated.sphinx import deprecated - -from aeon.base import BaseObject from aeon.utils.validation._dependencies import ( - _check_estimator_deps, _check_python_version, _check_soft_dependencies, ) -# TODO: remove v0.11.0 -@deprecated( - version="0.10.0", - reason="BaseDeepNetwork will be removed in 0.11.0, use BaseDeepLearningNetwork " - "instead. The new class does not inherit from BaseObject.", - category=FutureWarning, -) -class BaseDeepNetwork(BaseObject, ABC): - """Abstract base class for deep learning networks.""" - - def __init__(self): - super().__init__() - _check_estimator_deps(self) - - _config = { - "python_dependencies": ["tensorflow"], - "python_version": "<3.12", - "structure": "encoder", - } - - @abstractmethod - def build_network(self, input_shape, **kwargs): - """Construct a network and return its input and output layers. - - Parameters - ---------- - input_shape : tuple - The shape of the data fed into the input layer - - Returns - ------- - input_layer : a keras layer - output_layer : a keras layer - """ - ... - - class BaseDeepLearningNetwork(ABC): """Abstract base class for deep learning networks.""" diff --git a/aeon/networks/tests/test_all_networks.py b/aeon/networks/tests/test_all_networks.py index 2100e488d4..37ce19bf07 100644 --- a/aeon/networks/tests/test_all_networks.py +++ b/aeon/networks/tests/test_all_networks.py @@ -35,10 +35,7 @@ def test_all_networks_functionality(network): """Test the functionality of all networks.""" input_shape = (100, 2) - if not ( - network.__name__ - in ["BaseDeepNetwork", "BaseDeepLearningNetwork", "EncoderNetwork"] - ): + if not (network.__name__ in ["BaseDeepLearningNetwork", "EncoderNetwork"]): if _check_soft_dependencies( network._config["python_dependencies"], severity="none" ) and _check_python_version(network._config["python_version"], severity="none"): diff --git a/docs/api_reference/networks.rst b/docs/api_reference/networks.rst index 4e4d15e25b..0a33613289 100644 --- a/docs/api_reference/networks.rst +++ b/docs/api_reference/networks.rst @@ -13,7 +13,7 @@ Deep learning networks :toctree: auto_generated/ :template: class.rst - BaseDeepNetwork + BaseDeepLearningNetwork CNNNetwork EncoderNetwork FCNNetwork diff --git a/examples/base/base_classes.ipynb b/examples/base/base_classes.ipynb index 300aa53ec6..bce1f9a5bd 100644 --- a/examples/base/base_classes.ipynb +++ b/examples/base/base_classes.ipynb @@ -2,6 +2,9 @@ "cells": [ { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "# Overview of the base class structure\n", "\n", @@ -10,13 +13,13 @@ "the following simplified UML\n", "\n", "\"Basic\n" - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "## sklearn `BaseEstimator` and aeon `BaseObject`\n", "\n", @@ -29,54 +32,54 @@ "main functionality and may differ in details from the actual implementations.\n", "\n", "\"sklearn\n" - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "The aeon class `BaseObject` extends `BaseEstimator` and adds the tagging method and\n", "some other functionality used in `aeon` estimators\n", "\n", "\"Base\n" - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ - "## aeons ``BaseEstimator``, `BaseDeepNetwork` and `BaseMetric`\n", + "## aeons ``BaseEstimator``, `BaseDeepLearningNetwork` and `BaseMetric`\n", "\n", - "Three classes extend `BaseObject`: ``BaseEstimator``, `BaseDeepNetwork` and\n", + "Three classes extend `BaseObject`: ``BaseEstimator``, `BaseDeepLearningNetwork` and\n", "`BaseMetric`.\n", "\n", - "`BaseDeepNetwork` is the base class for all the deep learning networks defined in the\n", + "`BaseDeepLearningNetwork` is the base class for all the deep learning networks defined in the\n", "`networks` module. It has a single abstract method `build_network`.\n", "\n", "\"Base\n" - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "The `BaseMetric` class is the base class for forecasting performance metrics. It has\n", "a single abstract method `evaluate`.\n", "\n", "\"Base\n" - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "The ``BaseEstimator`` class is the base class for the majority of classes in aeon.\n", "Anything that uses fit and predict in aeon. It contains a protected attribute\n", @@ -84,37 +87,37 @@ "get fitted parameters.\n", "\n", "\"Base" - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "`BaseEstimator` has four direct base classes: `BaseForecaster`, `BaseTransformer` and `BaseCollectionEstimator`.\n", "\n", "\n", "\"Top" - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "## `BaseForecaster` (aeon.forecasting.base)\n", "contains the forecasting specific methods. More details are available in the [API](https://www.aeon-toolkit.org/en/latest/api_reference/forecasting.html). `BaseForecaster` has the following concrete methods:\n", "\n", "\"Base" - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "## `BaseTransformer` (aeon.transformations.base)\n", "\n", @@ -122,13 +125,13 @@ "collections transformers.\n", "\n", "\"Base\n" - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "## `BaseCollectionEstimator` (aeon.base)\n", "\n", @@ -139,13 +142,13 @@ "\n", "\"Base\n"," - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "The subclasses of `BaseCollectionEstimator` are as follows\n", "\n", @@ -163,13 +166,13 @@ " `BaseCollectionEstimator`.\n", "\n", "\"Top" - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "## `BaseRegressor` (aeon.regression)\n", "\n", @@ -178,13 +181,13 @@ "\n", "\n", "\"Top" - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "## `BaseClusterer` (aeon.clustering)\n", "\n", @@ -194,13 +197,13 @@ "\n", "\"Base\n"," - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "## `BaseCollectionTransformer` (aeon.transformations.collection)\n", "\n", @@ -213,17 +216,14 @@ "\n", "\"Base\n",\n" - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "markdown", - "source": [], "metadata": { "collapsed": false - } + }, + "source": [] } ], "metadata": {