diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index d4d6a1710dc8..2d2e17e1e025 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -24,13 +24,13 @@ jobs: KERAS_HOME: .github/workflows/config/${{ matrix.backend }} steps: - uses: actions/checkout@v4 - - name: Check for changes in keras/applications + - name: Check for changes in keras/src/applications uses: dorny/paths-filter@v3 id: filter with: filters: | applications: - - 'keras/applications/**' + - 'keras/src/applications/**' - name: Set up Python uses: actions/setup-python@v5 with: @@ -49,13 +49,13 @@ jobs: run: | pip install -r requirements.txt --progress-bar off --upgrade pip uninstall -y keras keras-nightly - pip install tf_keras==2.16.0rc0 --progress-bar off --upgrade + pip install tf_keras==2.16.0 --progress-bar off --upgrade pip install -e "." --progress-bar off --upgrade - name: Test applications with pytest if: ${{ steps.filter.outputs.applications == 'true' }} run: | - pytest keras/applications --cov=keras/applications - coverage xml --include='keras/applications/*' -o apps-coverage.xml + pytest keras/src/applications --cov=keras/src/applications + coverage xml --include='keras/src/applications/*' -o apps-coverage.xml - name: Codecov keras.applications if: ${{ steps.filter.outputs.applications == 'true' }} uses: codecov/codecov-action@v4 @@ -80,8 +80,8 @@ jobs: pytest integration_tests/torch_workflow_test.py - name: Test with pytest run: | - pytest keras --ignore keras/applications --cov=keras - coverage xml --omit='keras/applications/*' -o core-coverage.xml + pytest keras --ignore keras/src/applications --cov=keras + coverage xml --omit='keras/src/applications/*,keras/api' -o core-coverage.xml - name: Codecov keras uses: codecov/codecov-action@v4 with: @@ -115,5 +115,14 @@ jobs: pip install -r requirements.txt --progress-bar off --upgrade pip uninstall -y keras keras-nightly pip install -e "." --progress-bar off --upgrade + - name: Check for API changes + run: | + bash shell/api_gen.sh + git status + clean=$(git status | grep "nothing to commit") + if [ -z "$clean" ]; then + echo "Please run shell/api_gen.sh to generate API." + exit 1 + fi - name: Lint run: bash shell/lint.sh diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 4d34c8bfab82..5edfd2c988b1 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -55,7 +55,7 @@ jobs: pytest integration_tests/torch_workflow_test.py - name: Test with pytest run: | - pytest keras --ignore keras/applications --cov=keras + pytest keras --ignore keras/src/applications --cov=keras format: name: Check the code format @@ -81,6 +81,15 @@ jobs: pip install -r requirements.txt --progress-bar off --upgrade pip uninstall -y keras keras-nightly pip install -e "." --progress-bar off --upgrade + - name: Check for API changes + run: | + bash shell/api_gen.sh + git status + clean=$(git status | grep "nothing to commit") + if [ -z "$clean" ]; then + echo "Please run shell/api_gen.sh to generate API." + exit 1 + fi - name: Lint run: bash shell/lint.sh @@ -108,4 +117,4 @@ jobs: with: password: ${{ secrets.PYPI_NIGHTLY_API_TOKEN }} packages-dir: dist/ - verbose: true \ No newline at end of file + verbose: true diff --git a/api_gen.py b/api_gen.py new file mode 100644 index 000000000000..51a0128861ac --- /dev/null +++ b/api_gen.py @@ -0,0 +1,175 @@ +"""Script to generate keras public API in `keras/api` directory. + +Usage: + +Run via `./shell/api_gen.sh`. +It generates API and formats user and generated APIs. +""" + +import os +import shutil + +import namex + +package = "keras" + + +def ignore_files(_, filenames): + return [f for f in filenames if f.endswith("_test.py")] + + +def create_legacy_directory(): + API_DIR = os.path.join(package, "api") + # Make keras/_tf_keras/ by copying keras/ + tf_keras_dirpath_parent = os.path.join(API_DIR, "_tf_keras") + tf_keras_dirpath = os.path.join(tf_keras_dirpath_parent, "keras") + os.makedirs(tf_keras_dirpath, exist_ok=True) + with open(os.path.join(tf_keras_dirpath_parent, "__init__.py"), "w") as f: + f.write("from keras.api._tf_keras import keras\n") + with open(os.path.join(API_DIR, "__init__.py")) as f: + init_file = f.read() + init_file = init_file.replace( + "from keras.api import _legacy", + "from keras.api import _tf_keras", + ) + with open(os.path.join(API_DIR, "__init__.py"), "w") as f: + f.write(init_file) + # Remove the import of `_tf_keras` in `keras/_tf_keras/keras/__init__.py` + init_file = init_file.replace("from keras.api import _tf_keras\n", "\n") + with open(os.path.join(tf_keras_dirpath, "__init__.py"), "w") as f: + f.write(init_file) + for dirname in os.listdir(API_DIR): + dirpath = os.path.join(API_DIR, dirname) + if os.path.isdir(dirpath) and dirname not in ( + "_legacy", + "_tf_keras", + "src", + ): + destpath = os.path.join(tf_keras_dirpath, dirname) + if os.path.exists(destpath): + shutil.rmtree(destpath) + shutil.copytree( + dirpath, + destpath, + ignore=ignore_files, + ) + + # Copy keras/_legacy/ file contents to keras/_tf_keras/keras + legacy_submodules = [ + path[:-3] + for path in os.listdir(os.path.join(package, "src", "legacy")) + if path.endswith(".py") + ] + legacy_submodules += [ + path + for path in os.listdir(os.path.join(package, "src", "legacy")) + if os.path.isdir(os.path.join(package, "src", "legacy", path)) + ] + + for root, _, fnames in os.walk(os.path.join(package, "_legacy")): + for fname in fnames: + if fname.endswith(".py"): + legacy_fpath = os.path.join(root, fname) + tf_keras_root = root.replace("/_legacy", "/_tf_keras/keras") + core_api_fpath = os.path.join( + root.replace("/_legacy", ""), fname + ) + if not os.path.exists(tf_keras_root): + os.makedirs(tf_keras_root) + tf_keras_fpath = os.path.join(tf_keras_root, fname) + with open(legacy_fpath) as f: + legacy_contents = f.read() + legacy_contents = legacy_contents.replace( + "keras.api._legacy", "keras.api._tf_keras.keras" + ) + if os.path.exists(core_api_fpath): + with open(core_api_fpath) as f: + core_api_contents = f.read() + core_api_contents = core_api_contents.replace( + "from keras.api import _tf_keras\n", "" + ) + for legacy_submodule in legacy_submodules: + core_api_contents = core_api_contents.replace( + f"from keras.api import {legacy_submodule}\n", + "", + ) + core_api_contents = core_api_contents.replace( + f"keras.api.{legacy_submodule}", + f"keras.api._tf_keras.keras.{legacy_submodule}", + ) + legacy_contents = core_api_contents + "\n" + legacy_contents + with open(tf_keras_fpath, "w") as f: + f.write(legacy_contents) + + # Delete keras/api/_legacy/ + shutil.rmtree(os.path.join(API_DIR, "_legacy")) + + +def export_version_string(): + API_INIT = os.path.join(package, "api", "__init__.py") + with open(API_INIT) as f: + contents = f.read() + with open(API_INIT, "w") as f: + contents += "from keras.src.version import __version__\n" + f.write(contents) + + +def update_package_init(): + contents = """ +# Import everything from /api/ into keras. +from keras.api import * # noqa: F403 +from keras.api import __version__ # Import * ignores names start with "_". + +import os + +# Add everything in /api/ to the module search path. +__path__.append(os.path.join(os.path.dirname(__file__), "api")) # noqa: F405 + +# Don't pollute namespace. +del os + +# Never autocomplete `.src` or `.api` on an imported keras object. +def __dir__(): + keys = dict.fromkeys((globals().keys())) + keys.pop("src") + keys.pop("api") + return list(keys) + + +# Don't import `.src` or `.api` during `from keras import *`. +__all__ = [ + name + for name in globals().keys() + if not (name.startswith("_") or name in ("src", "api")) +]""" + with open(os.path.join(package, "__init__.py")) as f: + init_contents = f.read() + with open(os.path.join(package, "__init__.py"), "w") as f: + f.write(init_contents.replace("\nfrom keras import api", contents)) + + +if __name__ == "__main__": + # Backup the `keras/__init__.py` and restore it on error in api gen. + os.makedirs(os.path.join(package, "api"), exist_ok=True) + init_fname = os.path.join(package, "__init__.py") + backup_init_fname = os.path.join(package, "__init__.py.bak") + try: + if os.path.exists(init_fname): + shutil.move(init_fname, backup_init_fname) + # Generates `keras/api` directory. + namex.generate_api_files( + "keras", code_directory="src", target_directory="api" + ) + # Creates `keras/__init__.py` importing from `keras/api` + update_package_init() + except Exception as e: + if os.path.exists(backup_init_fname): + shutil.move(backup_init_fname, init_fname) + raise e + finally: + if os.path.exists(backup_init_fname): + os.remove(backup_init_fname) + # Add __version__ to keras package + export_version_string() + # Creates `_tf_keras` with full keras API + create_legacy_directory() diff --git a/conftest.py b/conftest.py index 2fcc51ec0062..5c27d947c13b 100644 --- a/conftest.py +++ b/conftest.py @@ -14,7 +14,7 @@ import pytest # noqa: E402 -from keras.backend import backend # noqa: E402 +from keras.src.backend import backend # noqa: E402 def pytest_configure(config): diff --git a/integration_tests/basic_full_flow.py b/integration_tests/basic_full_flow.py index e7e2d0fbd09c..6361b32d4794 100644 --- a/integration_tests/basic_full_flow.py +++ b/integration_tests/basic_full_flow.py @@ -2,11 +2,11 @@ import pytest import keras -from keras import layers -from keras import losses -from keras import metrics -from keras import optimizers -from keras import testing +from keras.src import layers +from keras.src import losses +from keras.src import metrics +from keras.src import optimizers +from keras.src import testing class MyModel(keras.Model): diff --git a/integration_tests/dataset_tests/boston_housing_test.py b/integration_tests/dataset_tests/boston_housing_test.py index eb5ac411cac9..4d4c3399beb6 100644 --- a/integration_tests/dataset_tests/boston_housing_test.py +++ b/integration_tests/dataset_tests/boston_housing_test.py @@ -1,5 +1,5 @@ -from keras import testing -from keras.datasets import boston_housing +from keras.src import testing +from keras.src.datasets import boston_housing class BostonHousingTest(testing.TestCase): diff --git a/integration_tests/dataset_tests/california_housing_test.py b/integration_tests/dataset_tests/california_housing_test.py index ec63578b709f..d49abb7c0142 100644 --- a/integration_tests/dataset_tests/california_housing_test.py +++ b/integration_tests/dataset_tests/california_housing_test.py @@ -1,5 +1,5 @@ -from keras import testing -from keras.datasets import california_housing +from keras.src import testing +from keras.src.datasets import california_housing class CaliforniaHousingTest(testing.TestCase): diff --git a/integration_tests/dataset_tests/cifar100_test.py b/integration_tests/dataset_tests/cifar100_test.py index d2ef4f7edeea..3a497dd205ac 100644 --- a/integration_tests/dataset_tests/cifar100_test.py +++ b/integration_tests/dataset_tests/cifar100_test.py @@ -1,7 +1,7 @@ import numpy as np -from keras import testing -from keras.datasets import cifar100 +from keras.src import testing +from keras.src.datasets import cifar100 class Cifar100LoadDataTest(testing.TestCase): diff --git a/integration_tests/dataset_tests/cifar10_test.py b/integration_tests/dataset_tests/cifar10_test.py index 58185d230a09..fe1c20319b00 100644 --- a/integration_tests/dataset_tests/cifar10_test.py +++ b/integration_tests/dataset_tests/cifar10_test.py @@ -1,7 +1,7 @@ import numpy as np -from keras import testing -from keras.datasets import cifar10 +from keras.src import testing +from keras.src.datasets import cifar10 class Cifar10LoadDataTest(testing.TestCase): diff --git a/integration_tests/dataset_tests/fashion_mnist_test.py b/integration_tests/dataset_tests/fashion_mnist_test.py index e3374730dfbc..92c43eeefe32 100644 --- a/integration_tests/dataset_tests/fashion_mnist_test.py +++ b/integration_tests/dataset_tests/fashion_mnist_test.py @@ -1,7 +1,7 @@ import numpy as np -from keras import testing -from keras.datasets import fashion_mnist +from keras.src import testing +from keras.src.datasets import fashion_mnist class FashionMnistLoadDataTest(testing.TestCase): diff --git a/integration_tests/dataset_tests/imdb_test.py b/integration_tests/dataset_tests/imdb_test.py index 8d740904a23c..e2971c4709b6 100644 --- a/integration_tests/dataset_tests/imdb_test.py +++ b/integration_tests/dataset_tests/imdb_test.py @@ -1,7 +1,7 @@ import numpy as np -from keras import testing -from keras.datasets import imdb +from keras.src import testing +from keras.src.datasets import imdb class ImdbLoadDataTest(testing.TestCase): diff --git a/integration_tests/dataset_tests/mnist_test.py b/integration_tests/dataset_tests/mnist_test.py index aed6ef5e8654..5aeaae4548bd 100644 --- a/integration_tests/dataset_tests/mnist_test.py +++ b/integration_tests/dataset_tests/mnist_test.py @@ -1,7 +1,7 @@ import numpy as np -from keras import testing -from keras.datasets import mnist +from keras.src import testing +from keras.src.datasets import mnist class MnistLoadDataTest(testing.TestCase): diff --git a/integration_tests/dataset_tests/reuters_test.py b/integration_tests/dataset_tests/reuters_test.py index 14b1eb0c1f05..3d83de560869 100644 --- a/integration_tests/dataset_tests/reuters_test.py +++ b/integration_tests/dataset_tests/reuters_test.py @@ -1,7 +1,7 @@ import numpy as np -from keras import testing -from keras.datasets import reuters +from keras.src import testing +from keras.src.datasets import reuters class ReutersLoadDataTest(testing.TestCase): diff --git a/integration_tests/import_test.py b/integration_tests/import_test.py index 54509a88492f..9330b834e0a1 100644 --- a/integration_tests/import_test.py +++ b/integration_tests/import_test.py @@ -2,12 +2,16 @@ import re import subprocess -from keras import backend +from keras.src import backend +# For torch, use index url to avoid installing nvidia drivers for the test. BACKEND_REQ = { - "tensorflow": "tensorflow", - "torch": "torch torchvision", - "jax": "jax jaxlib", + "tensorflow": ("tensorflow-cpu", ""), + "torch": ( + "torch torchvision", + "--extra-index-url https://download.pytorch.org/whl/cpu ", + ), + "jax": ("jax[cpu]", ""), } @@ -43,16 +47,17 @@ def create_virtualenv(): def manage_venv_installs(whl_path): other_backends = list(set(BACKEND_REQ.keys()) - {backend.backend()}) + backend_pkg, backend_extra_url = BACKEND_REQ[backend.backend()] install_setup = [ # Installs the backend's package and common requirements - "pip install " + BACKEND_REQ[backend.backend()], + "pip install " + backend_extra_url + backend_pkg, "pip install -r requirements-common.txt", "pip install pytest", # Ensure other backends are uninstalled "pip uninstall -y " - + BACKEND_REQ[other_backends[0]] + + BACKEND_REQ[other_backends[0]][0] + " " - + BACKEND_REQ[other_backends[1]], + + BACKEND_REQ[other_backends[1]][0], # Install `.whl` package "pip install " + whl_path, ] diff --git a/integration_tests/model_visualization_test.py b/integration_tests/model_visualization_test.py index ed5c4e87ee52..29c666aee6fc 100644 --- a/integration_tests/model_visualization_test.py +++ b/integration_tests/model_visualization_test.py @@ -1,5 +1,5 @@ import keras -from keras.utils import plot_model +from keras.src.utils import plot_model def plot_sequential_model(): diff --git a/integration_tests/tf_distribute_training_test.py b/integration_tests/tf_distribute_training_test.py index 76fa55ed64f4..ec2a7d5bfb92 100644 --- a/integration_tests/tf_distribute_training_test.py +++ b/integration_tests/tf_distribute_training_test.py @@ -2,12 +2,12 @@ import tensorflow as tf import keras -from keras import layers -from keras import losses -from keras import metrics -from keras import models -from keras import optimizers -from keras.callbacks import LearningRateScheduler +from keras.src import layers +from keras.src import losses +from keras.src import metrics +from keras.src import models +from keras.src import optimizers +from keras.src.callbacks import LearningRateScheduler def test_model_fit(): diff --git a/integration_tests/torch_workflow_test.py b/integration_tests/torch_workflow_test.py index 1bab5a4b7e46..3737197b86e5 100644 --- a/integration_tests/torch_workflow_test.py +++ b/integration_tests/torch_workflow_test.py @@ -1,8 +1,8 @@ import torch -from keras import layers -from keras import testing -from keras.backend.common import KerasVariable +from keras.src import layers +from keras.src import testing +from keras.src.backend.common import KerasVariable class Net(torch.nn.Module): diff --git a/keras/__init__.py b/keras/__init__.py index 4cda3efc0e7f..6276b51e1f85 100644 --- a/keras/__init__.py +++ b/keras/__init__.py @@ -1,19 +1,33 @@ -from keras import activations -from keras import applications -from keras import backend -from keras import constraints -from keras import datasets -from keras import initializers -from keras import layers -from keras import models -from keras import ops -from keras import optimizers -from keras import regularizers -from keras import utils -from keras.backend import KerasTensor -from keras.layers import Input -from keras.layers import Layer -from keras.models import Functional -from keras.models import Model -from keras.models import Sequential -from keras.version import __version__ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +import os + +# Import everything from /api/ into keras. +from keras.api import * # noqa: F403 +from keras.api import __version__ # Import * ignores names start with "_". + +# Add everything in /api/ to the module search path. +__path__.append(os.path.join(os.path.dirname(__file__), "api")) # noqa: F405 + +# Don't pollute namespace. +del os + + +# Never autocomplete `.src` or `.api` on an imported keras object. +def __dir__(): + keys = dict.fromkeys((globals().keys())) + keys.pop("src") + keys.pop("api") + return list(keys) + + +# Don't import `.src` or `.api` during `from keras import *`. +__all__ = [ + name + for name in globals().keys() + if not (name.startswith("_") or name in ("src", "api")) +] diff --git a/keras/api/__init__.py b/keras/api/__init__.py new file mode 100644 index 000000000000..d93460c26c53 --- /dev/null +++ b/keras/api/__init__.py @@ -0,0 +1,58 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.api import _tf_keras +from keras.api import activations +from keras.api import applications +from keras.api import backend +from keras.api import callbacks +from keras.api import config +from keras.api import constraints +from keras.api import datasets +from keras.api import distribution +from keras.api import dtype_policies +from keras.api import export +from keras.api import initializers +from keras.api import layers +from keras.api import legacy +from keras.api import losses +from keras.api import metrics +from keras.api import mixed_precision +from keras.api import models +from keras.api import ops +from keras.api import optimizers +from keras.api import preprocessing +from keras.api import quantizers +from keras.api import random +from keras.api import regularizers +from keras.api import saving +from keras.api import tree +from keras.api import utils +from keras.src.backend.common.keras_tensor import KerasTensor +from keras.src.backend.common.stateless_scope import StatelessScope +from keras.src.backend.exports import Variable +from keras.src.backend.exports import device +from keras.src.backend.exports import name_scope +from keras.src.dtype_policies.dtype_policy import DTypePolicy +from keras.src.dtype_policies.dtype_policy import FloatDTypePolicy +from keras.src.dtype_policies.dtype_policy import QuantizedDTypePolicy +from keras.src.dtype_policies.dtype_policy import QuantizedFloat8DTypePolicy +from keras.src.initializers.initializer import Initializer +from keras.src.layers.core.input_layer import Input +from keras.src.layers.input_spec import InputSpec +from keras.src.layers.layer import Layer +from keras.src.losses.loss import Loss +from keras.src.metrics.metric import Metric +from keras.src.models.model import Model +from keras.src.models.sequential import Sequential +from keras.src.ops.function import Function +from keras.src.ops.operation import Operation +from keras.src.optimizers.optimizer import Optimizer +from keras.src.quantizers.quantizers import AbsMaxQuantizer +from keras.src.quantizers.quantizers import Quantizer +from keras.src.regularizers.regularizers import Regularizer +from keras.src.version import __version__ +from keras.src.version import version diff --git a/keras/api/_tf_keras/__init__.py b/keras/api/_tf_keras/__init__.py new file mode 100644 index 000000000000..249c46d892a7 --- /dev/null +++ b/keras/api/_tf_keras/__init__.py @@ -0,0 +1 @@ +from keras.api._tf_keras import keras diff --git a/keras/api/_tf_keras/keras/__init__.py b/keras/api/_tf_keras/keras/__init__.py new file mode 100644 index 000000000000..767853b2be3b --- /dev/null +++ b/keras/api/_tf_keras/keras/__init__.py @@ -0,0 +1,57 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.api import activations +from keras.api import applications +from keras.api import backend +from keras.api import callbacks +from keras.api import config +from keras.api import constraints +from keras.api import datasets +from keras.api import distribution +from keras.api import dtype_policies +from keras.api import export +from keras.api import initializers +from keras.api import layers +from keras.api import legacy +from keras.api import losses +from keras.api import metrics +from keras.api import mixed_precision +from keras.api import models +from keras.api import ops +from keras.api import optimizers +from keras.api import preprocessing +from keras.api import quantizers +from keras.api import random +from keras.api import regularizers +from keras.api import saving +from keras.api import tree +from keras.api import utils +from keras.src.backend.common.keras_tensor import KerasTensor +from keras.src.backend.common.stateless_scope import StatelessScope +from keras.src.backend.exports import Variable +from keras.src.backend.exports import device +from keras.src.backend.exports import name_scope +from keras.src.dtype_policies.dtype_policy import DTypePolicy +from keras.src.dtype_policies.dtype_policy import FloatDTypePolicy +from keras.src.dtype_policies.dtype_policy import QuantizedDTypePolicy +from keras.src.dtype_policies.dtype_policy import QuantizedFloat8DTypePolicy +from keras.src.initializers.initializer import Initializer +from keras.src.layers.core.input_layer import Input +from keras.src.layers.input_spec import InputSpec +from keras.src.layers.layer import Layer +from keras.src.losses.loss import Loss +from keras.src.metrics.metric import Metric +from keras.src.models.model import Model +from keras.src.models.sequential import Sequential +from keras.src.ops.function import Function +from keras.src.ops.operation import Operation +from keras.src.optimizers.optimizer import Optimizer +from keras.src.quantizers.quantizers import AbsMaxQuantizer +from keras.src.quantizers.quantizers import Quantizer +from keras.src.regularizers.regularizers import Regularizer +from keras.src.version import __version__ +from keras.src.version import version diff --git a/keras/api/_tf_keras/keras/activations/__init__.py b/keras/api/_tf_keras/keras/activations/__init__.py new file mode 100644 index 000000000000..17624b6ba5dc --- /dev/null +++ b/keras/api/_tf_keras/keras/activations/__init__.py @@ -0,0 +1,29 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.activations import deserialize +from keras.src.activations import get +from keras.src.activations import serialize +from keras.src.activations.activations import elu +from keras.src.activations.activations import exponential +from keras.src.activations.activations import gelu +from keras.src.activations.activations import hard_sigmoid +from keras.src.activations.activations import hard_silu +from keras.src.activations.activations import hard_silu as hard_swish +from keras.src.activations.activations import leaky_relu +from keras.src.activations.activations import linear +from keras.src.activations.activations import log_softmax +from keras.src.activations.activations import mish +from keras.src.activations.activations import relu +from keras.src.activations.activations import relu6 +from keras.src.activations.activations import selu +from keras.src.activations.activations import sigmoid +from keras.src.activations.activations import silu +from keras.src.activations.activations import silu as swish +from keras.src.activations.activations import softmax +from keras.src.activations.activations import softplus +from keras.src.activations.activations import softsign +from keras.src.activations.activations import tanh diff --git a/keras/api/_tf_keras/keras/applications/__init__.py b/keras/api/_tf_keras/keras/applications/__init__.py new file mode 100644 index 000000000000..183b3ca66142 --- /dev/null +++ b/keras/api/_tf_keras/keras/applications/__init__.py @@ -0,0 +1,63 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.api.applications import convnext +from keras.api.applications import densenet +from keras.api.applications import efficientnet +from keras.api.applications import efficientnet_v2 +from keras.api.applications import imagenet_utils +from keras.api.applications import inception_resnet_v2 +from keras.api.applications import inception_v3 +from keras.api.applications import mobilenet +from keras.api.applications import mobilenet_v2 +from keras.api.applications import mobilenet_v3 +from keras.api.applications import nasnet +from keras.api.applications import resnet +from keras.api.applications import resnet50 +from keras.api.applications import resnet_v2 +from keras.api.applications import vgg16 +from keras.api.applications import vgg19 +from keras.api.applications import xception +from keras.src.applications.convnext import ConvNeXtBase +from keras.src.applications.convnext import ConvNeXtLarge +from keras.src.applications.convnext import ConvNeXtSmall +from keras.src.applications.convnext import ConvNeXtTiny +from keras.src.applications.convnext import ConvNeXtXLarge +from keras.src.applications.densenet import DenseNet121 +from keras.src.applications.densenet import DenseNet169 +from keras.src.applications.densenet import DenseNet201 +from keras.src.applications.efficientnet import EfficientNetB0 +from keras.src.applications.efficientnet import EfficientNetB1 +from keras.src.applications.efficientnet import EfficientNetB2 +from keras.src.applications.efficientnet import EfficientNetB3 +from keras.src.applications.efficientnet import EfficientNetB4 +from keras.src.applications.efficientnet import EfficientNetB5 +from keras.src.applications.efficientnet import EfficientNetB6 +from keras.src.applications.efficientnet import EfficientNetB7 +from keras.src.applications.efficientnet_v2 import EfficientNetV2B0 +from keras.src.applications.efficientnet_v2 import EfficientNetV2B1 +from keras.src.applications.efficientnet_v2 import EfficientNetV2B2 +from keras.src.applications.efficientnet_v2 import EfficientNetV2B3 +from keras.src.applications.efficientnet_v2 import EfficientNetV2L +from keras.src.applications.efficientnet_v2 import EfficientNetV2M +from keras.src.applications.efficientnet_v2 import EfficientNetV2S +from keras.src.applications.inception_resnet_v2 import InceptionResNetV2 +from keras.src.applications.inception_v3 import InceptionV3 +from keras.src.applications.mobilenet import MobileNet +from keras.src.applications.mobilenet_v2 import MobileNetV2 +from keras.src.applications.mobilenet_v3 import MobileNetV3Large +from keras.src.applications.mobilenet_v3 import MobileNetV3Small +from keras.src.applications.nasnet import NASNetLarge +from keras.src.applications.nasnet import NASNetMobile +from keras.src.applications.resnet import ResNet50 +from keras.src.applications.resnet import ResNet101 +from keras.src.applications.resnet import ResNet152 +from keras.src.applications.resnet_v2 import ResNet50V2 +from keras.src.applications.resnet_v2 import ResNet101V2 +from keras.src.applications.resnet_v2 import ResNet152V2 +from keras.src.applications.vgg16 import VGG16 +from keras.src.applications.vgg19 import VGG19 +from keras.src.applications.xception import Xception diff --git a/keras/api/_tf_keras/keras/applications/convnext/__init__.py b/keras/api/_tf_keras/keras/applications/convnext/__init__.py new file mode 100644 index 000000000000..b4eaaa3834b1 --- /dev/null +++ b/keras/api/_tf_keras/keras/applications/convnext/__init__.py @@ -0,0 +1,13 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.applications.convnext import ConvNeXtBase +from keras.src.applications.convnext import ConvNeXtLarge +from keras.src.applications.convnext import ConvNeXtSmall +from keras.src.applications.convnext import ConvNeXtTiny +from keras.src.applications.convnext import ConvNeXtXLarge +from keras.src.applications.convnext import decode_predictions +from keras.src.applications.convnext import preprocess_input diff --git a/keras/api/_tf_keras/keras/applications/densenet/__init__.py b/keras/api/_tf_keras/keras/applications/densenet/__init__.py new file mode 100644 index 000000000000..0173a2c3ed9d --- /dev/null +++ b/keras/api/_tf_keras/keras/applications/densenet/__init__.py @@ -0,0 +1,11 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.applications.densenet import DenseNet121 +from keras.src.applications.densenet import DenseNet169 +from keras.src.applications.densenet import DenseNet201 +from keras.src.applications.densenet import decode_predictions +from keras.src.applications.densenet import preprocess_input diff --git a/keras/api/_tf_keras/keras/applications/efficientnet/__init__.py b/keras/api/_tf_keras/keras/applications/efficientnet/__init__.py new file mode 100644 index 000000000000..c4af0199bea6 --- /dev/null +++ b/keras/api/_tf_keras/keras/applications/efficientnet/__init__.py @@ -0,0 +1,16 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.applications.efficientnet import EfficientNetB0 +from keras.src.applications.efficientnet import EfficientNetB1 +from keras.src.applications.efficientnet import EfficientNetB2 +from keras.src.applications.efficientnet import EfficientNetB3 +from keras.src.applications.efficientnet import EfficientNetB4 +from keras.src.applications.efficientnet import EfficientNetB5 +from keras.src.applications.efficientnet import EfficientNetB6 +from keras.src.applications.efficientnet import EfficientNetB7 +from keras.src.applications.efficientnet import decode_predictions +from keras.src.applications.efficientnet import preprocess_input diff --git a/keras/api/_tf_keras/keras/applications/efficientnet_v2/__init__.py b/keras/api/_tf_keras/keras/applications/efficientnet_v2/__init__.py new file mode 100644 index 000000000000..ee85821a1d74 --- /dev/null +++ b/keras/api/_tf_keras/keras/applications/efficientnet_v2/__init__.py @@ -0,0 +1,15 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.applications.efficientnet_v2 import EfficientNetV2B0 +from keras.src.applications.efficientnet_v2 import EfficientNetV2B1 +from keras.src.applications.efficientnet_v2 import EfficientNetV2B2 +from keras.src.applications.efficientnet_v2 import EfficientNetV2B3 +from keras.src.applications.efficientnet_v2 import EfficientNetV2L +from keras.src.applications.efficientnet_v2 import EfficientNetV2M +from keras.src.applications.efficientnet_v2 import EfficientNetV2S +from keras.src.applications.efficientnet_v2 import decode_predictions +from keras.src.applications.efficientnet_v2 import preprocess_input diff --git a/keras/api/_tf_keras/keras/applications/imagenet_utils/__init__.py b/keras/api/_tf_keras/keras/applications/imagenet_utils/__init__.py new file mode 100644 index 000000000000..81a923e55b9e --- /dev/null +++ b/keras/api/_tf_keras/keras/applications/imagenet_utils/__init__.py @@ -0,0 +1,8 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.applications.imagenet_utils import decode_predictions +from keras.src.applications.imagenet_utils import preprocess_input diff --git a/keras/api/_tf_keras/keras/applications/inception_resnet_v2/__init__.py b/keras/api/_tf_keras/keras/applications/inception_resnet_v2/__init__.py new file mode 100644 index 000000000000..b710829bd377 --- /dev/null +++ b/keras/api/_tf_keras/keras/applications/inception_resnet_v2/__init__.py @@ -0,0 +1,9 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.applications.inception_resnet_v2 import InceptionResNetV2 +from keras.src.applications.inception_resnet_v2 import decode_predictions +from keras.src.applications.inception_resnet_v2 import preprocess_input diff --git a/keras/api/_tf_keras/keras/applications/inception_v3/__init__.py b/keras/api/_tf_keras/keras/applications/inception_v3/__init__.py new file mode 100644 index 000000000000..8a2379ca1b13 --- /dev/null +++ b/keras/api/_tf_keras/keras/applications/inception_v3/__init__.py @@ -0,0 +1,9 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.applications.inception_v3 import InceptionV3 +from keras.src.applications.inception_v3 import decode_predictions +from keras.src.applications.inception_v3 import preprocess_input diff --git a/keras/api/_tf_keras/keras/applications/mobilenet/__init__.py b/keras/api/_tf_keras/keras/applications/mobilenet/__init__.py new file mode 100644 index 000000000000..0194cdfd0ac6 --- /dev/null +++ b/keras/api/_tf_keras/keras/applications/mobilenet/__init__.py @@ -0,0 +1,9 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.applications.mobilenet import MobileNet +from keras.src.applications.mobilenet import decode_predictions +from keras.src.applications.mobilenet import preprocess_input diff --git a/keras/api/_tf_keras/keras/applications/mobilenet_v2/__init__.py b/keras/api/_tf_keras/keras/applications/mobilenet_v2/__init__.py new file mode 100644 index 000000000000..ceb0625e3519 --- /dev/null +++ b/keras/api/_tf_keras/keras/applications/mobilenet_v2/__init__.py @@ -0,0 +1,9 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.applications.mobilenet_v2 import MobileNetV2 +from keras.src.applications.mobilenet_v2 import decode_predictions +from keras.src.applications.mobilenet_v2 import preprocess_input diff --git a/keras/api/_tf_keras/keras/applications/mobilenet_v3/__init__.py b/keras/api/_tf_keras/keras/applications/mobilenet_v3/__init__.py new file mode 100644 index 000000000000..c27e6669f0f1 --- /dev/null +++ b/keras/api/_tf_keras/keras/applications/mobilenet_v3/__init__.py @@ -0,0 +1,8 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.applications.mobilenet_v3 import decode_predictions +from keras.src.applications.mobilenet_v3 import preprocess_input diff --git a/keras/api/_tf_keras/keras/applications/nasnet/__init__.py b/keras/api/_tf_keras/keras/applications/nasnet/__init__.py new file mode 100644 index 000000000000..874de61f00ab --- /dev/null +++ b/keras/api/_tf_keras/keras/applications/nasnet/__init__.py @@ -0,0 +1,10 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.applications.nasnet import NASNetLarge +from keras.src.applications.nasnet import NASNetMobile +from keras.src.applications.nasnet import decode_predictions +from keras.src.applications.nasnet import preprocess_input diff --git a/keras/api/_tf_keras/keras/applications/resnet/__init__.py b/keras/api/_tf_keras/keras/applications/resnet/__init__.py new file mode 100644 index 000000000000..5aaa3ee0e5e2 --- /dev/null +++ b/keras/api/_tf_keras/keras/applications/resnet/__init__.py @@ -0,0 +1,11 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.applications.resnet import ResNet50 +from keras.src.applications.resnet import ResNet101 +from keras.src.applications.resnet import ResNet152 +from keras.src.applications.resnet import decode_predictions +from keras.src.applications.resnet import preprocess_input diff --git a/keras/api/_tf_keras/keras/applications/resnet50/__init__.py b/keras/api/_tf_keras/keras/applications/resnet50/__init__.py new file mode 100644 index 000000000000..ac08b5322682 --- /dev/null +++ b/keras/api/_tf_keras/keras/applications/resnet50/__init__.py @@ -0,0 +1,9 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.applications.resnet import ResNet50 +from keras.src.applications.resnet import decode_predictions +from keras.src.applications.resnet import preprocess_input diff --git a/keras/api/_tf_keras/keras/applications/resnet_v2/__init__.py b/keras/api/_tf_keras/keras/applications/resnet_v2/__init__.py new file mode 100644 index 000000000000..273dd3019d85 --- /dev/null +++ b/keras/api/_tf_keras/keras/applications/resnet_v2/__init__.py @@ -0,0 +1,11 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.applications.resnet_v2 import ResNet50V2 +from keras.src.applications.resnet_v2 import ResNet101V2 +from keras.src.applications.resnet_v2 import ResNet152V2 +from keras.src.applications.resnet_v2 import decode_predictions +from keras.src.applications.resnet_v2 import preprocess_input diff --git a/keras/api/_tf_keras/keras/applications/vgg16/__init__.py b/keras/api/_tf_keras/keras/applications/vgg16/__init__.py new file mode 100644 index 000000000000..5a31084a4676 --- /dev/null +++ b/keras/api/_tf_keras/keras/applications/vgg16/__init__.py @@ -0,0 +1,9 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.applications.vgg16 import VGG16 +from keras.src.applications.vgg16 import decode_predictions +from keras.src.applications.vgg16 import preprocess_input diff --git a/keras/api/_tf_keras/keras/applications/vgg19/__init__.py b/keras/api/_tf_keras/keras/applications/vgg19/__init__.py new file mode 100644 index 000000000000..14355514d7cf --- /dev/null +++ b/keras/api/_tf_keras/keras/applications/vgg19/__init__.py @@ -0,0 +1,9 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.applications.vgg19 import VGG19 +from keras.src.applications.vgg19 import decode_predictions +from keras.src.applications.vgg19 import preprocess_input diff --git a/keras/api/_tf_keras/keras/applications/xception/__init__.py b/keras/api/_tf_keras/keras/applications/xception/__init__.py new file mode 100644 index 000000000000..c200dc66df35 --- /dev/null +++ b/keras/api/_tf_keras/keras/applications/xception/__init__.py @@ -0,0 +1,9 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.applications.xception import Xception +from keras.src.applications.xception import decode_predictions +from keras.src.applications.xception import preprocess_input diff --git a/keras/api/_tf_keras/keras/backend/__init__.py b/keras/api/_tf_keras/keras/backend/__init__.py new file mode 100644 index 000000000000..840bde6e4ded --- /dev/null +++ b/keras/api/_tf_keras/keras/backend/__init__.py @@ -0,0 +1,20 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.backend.common.dtypes import result_type +from keras.src.backend.common.global_state import clear_session +from keras.src.backend.common.keras_tensor import is_keras_tensor +from keras.src.backend.common.variables import is_float_dtype +from keras.src.backend.common.variables import is_int_dtype +from keras.src.backend.common.variables import standardize_dtype +from keras.src.backend.config import backend +from keras.src.backend.config import epsilon +from keras.src.backend.config import floatx +from keras.src.backend.config import image_data_format +from keras.src.backend.config import set_epsilon +from keras.src.backend.config import set_floatx +from keras.src.backend.config import set_image_data_format +from keras.src.utils.naming import get_uid diff --git a/keras/api/_tf_keras/keras/callbacks/__init__.py b/keras/api/_tf_keras/keras/callbacks/__init__.py new file mode 100644 index 000000000000..42ba958b9bb3 --- /dev/null +++ b/keras/api/_tf_keras/keras/callbacks/__init__.py @@ -0,0 +1,21 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.callbacks.backup_and_restore import BackupAndRestore +from keras.src.callbacks.callback import Callback +from keras.src.callbacks.callback_list import CallbackList +from keras.src.callbacks.csv_logger import CSVLogger +from keras.src.callbacks.early_stopping import EarlyStopping +from keras.src.callbacks.history import History +from keras.src.callbacks.lambda_callback import LambdaCallback +from keras.src.callbacks.learning_rate_scheduler import LearningRateScheduler +from keras.src.callbacks.model_checkpoint import ModelCheckpoint +from keras.src.callbacks.progbar_logger import ProgbarLogger +from keras.src.callbacks.reduce_lr_on_plateau import ReduceLROnPlateau +from keras.src.callbacks.remote_monitor import RemoteMonitor +from keras.src.callbacks.swap_ema_weights import SwapEMAWeights +from keras.src.callbacks.tensorboard import TensorBoard +from keras.src.callbacks.terminate_on_nan import TerminateOnNaN diff --git a/keras/api/_tf_keras/keras/config/__init__.py b/keras/api/_tf_keras/keras/config/__init__.py new file mode 100644 index 000000000000..13e334cb7c06 --- /dev/null +++ b/keras/api/_tf_keras/keras/config/__init__.py @@ -0,0 +1,23 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.backend.config import backend +from keras.src.backend.config import epsilon +from keras.src.backend.config import floatx +from keras.src.backend.config import image_data_format +from keras.src.backend.config import set_epsilon +from keras.src.backend.config import set_floatx +from keras.src.backend.config import set_image_data_format +from keras.src.dtype_policies.dtype_policy import dtype_policy +from keras.src.dtype_policies.dtype_policy import set_dtype_policy +from keras.src.saving.serialization_lib import enable_unsafe_deserialization +from keras.src.utils.backend_utils import set_backend +from keras.src.utils.io_utils import disable_interactive_logging +from keras.src.utils.io_utils import enable_interactive_logging +from keras.src.utils.io_utils import is_interactive_logging_enabled +from keras.src.utils.traceback_utils import disable_traceback_filtering +from keras.src.utils.traceback_utils import enable_traceback_filtering +from keras.src.utils.traceback_utils import is_traceback_filtering_enabled diff --git a/keras/api/_tf_keras/keras/constraints/__init__.py b/keras/api/_tf_keras/keras/constraints/__init__.py new file mode 100644 index 000000000000..6372e149d3ba --- /dev/null +++ b/keras/api/_tf_keras/keras/constraints/__init__.py @@ -0,0 +1,18 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.constraints import deserialize +from keras.src.constraints import get +from keras.src.constraints import serialize +from keras.src.constraints.constraints import Constraint +from keras.src.constraints.constraints import MaxNorm +from keras.src.constraints.constraints import MaxNorm as max_norm +from keras.src.constraints.constraints import MinMaxNorm +from keras.src.constraints.constraints import MinMaxNorm as min_max_norm +from keras.src.constraints.constraints import NonNeg +from keras.src.constraints.constraints import NonNeg as non_neg +from keras.src.constraints.constraints import UnitNorm +from keras.src.constraints.constraints import UnitNorm as unit_norm diff --git a/keras/api/_tf_keras/keras/datasets/__init__.py b/keras/api/_tf_keras/keras/datasets/__init__.py new file mode 100644 index 000000000000..cf153fefcd4d --- /dev/null +++ b/keras/api/_tf_keras/keras/datasets/__init__.py @@ -0,0 +1,14 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.api.datasets import boston_housing +from keras.api.datasets import california_housing +from keras.api.datasets import cifar10 +from keras.api.datasets import cifar100 +from keras.api.datasets import fashion_mnist +from keras.api.datasets import imdb +from keras.api.datasets import mnist +from keras.api.datasets import reuters diff --git a/keras/api/_tf_keras/keras/datasets/boston_housing/__init__.py b/keras/api/_tf_keras/keras/datasets/boston_housing/__init__.py new file mode 100644 index 000000000000..f5a179db9968 --- /dev/null +++ b/keras/api/_tf_keras/keras/datasets/boston_housing/__init__.py @@ -0,0 +1,7 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.datasets.boston_housing import load_data diff --git a/keras/api/_tf_keras/keras/datasets/california_housing/__init__.py b/keras/api/_tf_keras/keras/datasets/california_housing/__init__.py new file mode 100644 index 000000000000..52b6157dcf28 --- /dev/null +++ b/keras/api/_tf_keras/keras/datasets/california_housing/__init__.py @@ -0,0 +1,7 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.datasets.california_housing import load_data diff --git a/keras/api/_tf_keras/keras/datasets/cifar10/__init__.py b/keras/api/_tf_keras/keras/datasets/cifar10/__init__.py new file mode 100644 index 000000000000..68c72a91b495 --- /dev/null +++ b/keras/api/_tf_keras/keras/datasets/cifar10/__init__.py @@ -0,0 +1,7 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.datasets.cifar10 import load_data diff --git a/keras/api/_tf_keras/keras/datasets/cifar100/__init__.py b/keras/api/_tf_keras/keras/datasets/cifar100/__init__.py new file mode 100644 index 000000000000..e49e67faeecf --- /dev/null +++ b/keras/api/_tf_keras/keras/datasets/cifar100/__init__.py @@ -0,0 +1,7 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.datasets.cifar100 import load_data diff --git a/keras/api/_tf_keras/keras/datasets/fashion_mnist/__init__.py b/keras/api/_tf_keras/keras/datasets/fashion_mnist/__init__.py new file mode 100644 index 000000000000..33512169fc9f --- /dev/null +++ b/keras/api/_tf_keras/keras/datasets/fashion_mnist/__init__.py @@ -0,0 +1,7 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.datasets.fashion_mnist import load_data diff --git a/keras/api/_tf_keras/keras/datasets/imdb/__init__.py b/keras/api/_tf_keras/keras/datasets/imdb/__init__.py new file mode 100644 index 000000000000..6bcddbd11dbe --- /dev/null +++ b/keras/api/_tf_keras/keras/datasets/imdb/__init__.py @@ -0,0 +1,8 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.datasets.imdb import get_word_index +from keras.src.datasets.imdb import load_data diff --git a/keras/api/_tf_keras/keras/datasets/mnist/__init__.py b/keras/api/_tf_keras/keras/datasets/mnist/__init__.py new file mode 100644 index 000000000000..45568c463ba8 --- /dev/null +++ b/keras/api/_tf_keras/keras/datasets/mnist/__init__.py @@ -0,0 +1,7 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.datasets.mnist import load_data diff --git a/keras/api/_tf_keras/keras/datasets/reuters/__init__.py b/keras/api/_tf_keras/keras/datasets/reuters/__init__.py new file mode 100644 index 000000000000..cdc9b68cff93 --- /dev/null +++ b/keras/api/_tf_keras/keras/datasets/reuters/__init__.py @@ -0,0 +1,9 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.datasets.reuters import get_label_names +from keras.src.datasets.reuters import get_word_index +from keras.src.datasets.reuters import load_data diff --git a/keras/api/_tf_keras/keras/distribution/__init__.py b/keras/api/_tf_keras/keras/distribution/__init__.py new file mode 100644 index 000000000000..b56806af9fac --- /dev/null +++ b/keras/api/_tf_keras/keras/distribution/__init__.py @@ -0,0 +1,16 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.distribution.distribution_lib import DataParallel +from keras.src.distribution.distribution_lib import DeviceMesh +from keras.src.distribution.distribution_lib import LayoutMap +from keras.src.distribution.distribution_lib import ModelParallel +from keras.src.distribution.distribution_lib import TensorLayout +from keras.src.distribution.distribution_lib import distribute_tensor +from keras.src.distribution.distribution_lib import distribution +from keras.src.distribution.distribution_lib import initialize +from keras.src.distribution.distribution_lib import list_devices +from keras.src.distribution.distribution_lib import set_distribution diff --git a/keras/api/_tf_keras/keras/dtype_policies/__init__.py b/keras/api/_tf_keras/keras/dtype_policies/__init__.py new file mode 100644 index 000000000000..da8364263a22 --- /dev/null +++ b/keras/api/_tf_keras/keras/dtype_policies/__init__.py @@ -0,0 +1,10 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.dtype_policies.dtype_policy import DTypePolicy +from keras.src.dtype_policies.dtype_policy import FloatDTypePolicy +from keras.src.dtype_policies.dtype_policy import QuantizedDTypePolicy +from keras.src.dtype_policies.dtype_policy import QuantizedFloat8DTypePolicy diff --git a/keras/api/_tf_keras/keras/export/__init__.py b/keras/api/_tf_keras/keras/export/__init__.py new file mode 100644 index 000000000000..68fa60293961 --- /dev/null +++ b/keras/api/_tf_keras/keras/export/__init__.py @@ -0,0 +1,7 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.export.export_lib import ExportArchive diff --git a/keras/api/_tf_keras/keras/initializers/__init__.py b/keras/api/_tf_keras/keras/initializers/__init__.py new file mode 100644 index 000000000000..5819d1b285eb --- /dev/null +++ b/keras/api/_tf_keras/keras/initializers/__init__.py @@ -0,0 +1,64 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.initializers import deserialize +from keras.src.initializers import get +from keras.src.initializers import serialize +from keras.src.initializers.constant_initializers import Constant +from keras.src.initializers.constant_initializers import Constant as constant +from keras.src.initializers.constant_initializers import Identity +from keras.src.initializers.constant_initializers import ( + Identity as IdentityInitializer, +) +from keras.src.initializers.constant_initializers import Identity as identity +from keras.src.initializers.constant_initializers import Ones +from keras.src.initializers.constant_initializers import Ones as ones +from keras.src.initializers.constant_initializers import Zeros +from keras.src.initializers.constant_initializers import Zeros as zeros +from keras.src.initializers.initializer import Initializer +from keras.src.initializers.random_initializers import GlorotNormal +from keras.src.initializers.random_initializers import ( + GlorotNormal as glorot_normal, +) +from keras.src.initializers.random_initializers import GlorotUniform +from keras.src.initializers.random_initializers import ( + GlorotUniform as glorot_uniform, +) +from keras.src.initializers.random_initializers import HeNormal +from keras.src.initializers.random_initializers import HeNormal as he_normal +from keras.src.initializers.random_initializers import HeUniform +from keras.src.initializers.random_initializers import HeUniform as he_uniform +from keras.src.initializers.random_initializers import LecunNormal +from keras.src.initializers.random_initializers import ( + LecunNormal as lecun_normal, +) +from keras.src.initializers.random_initializers import LecunUniform +from keras.src.initializers.random_initializers import ( + LecunUniform as lecun_uniform, +) +from keras.src.initializers.random_initializers import OrthogonalInitializer +from keras.src.initializers.random_initializers import ( + OrthogonalInitializer as Orthogonal, +) +from keras.src.initializers.random_initializers import ( + OrthogonalInitializer as orthogonal, +) +from keras.src.initializers.random_initializers import RandomNormal +from keras.src.initializers.random_initializers import ( + RandomNormal as random_normal, +) +from keras.src.initializers.random_initializers import RandomUniform +from keras.src.initializers.random_initializers import ( + RandomUniform as random_uniform, +) +from keras.src.initializers.random_initializers import TruncatedNormal +from keras.src.initializers.random_initializers import ( + TruncatedNormal as truncated_normal, +) +from keras.src.initializers.random_initializers import VarianceScaling +from keras.src.initializers.random_initializers import ( + VarianceScaling as variance_scaling, +) diff --git a/keras/api/_tf_keras/keras/layers/__init__.py b/keras/api/_tf_keras/keras/layers/__init__.py new file mode 100644 index 000000000000..a4e1bf9a6bbd --- /dev/null +++ b/keras/api/_tf_keras/keras/layers/__init__.py @@ -0,0 +1,195 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.export.export_lib import TFSMLayer +from keras.src.layers import deserialize +from keras.src.layers import serialize +from keras.src.layers.activations.activation import Activation +from keras.src.layers.activations.elu import ELU +from keras.src.layers.activations.leaky_relu import LeakyReLU +from keras.src.layers.activations.prelu import PReLU +from keras.src.layers.activations.relu import ReLU +from keras.src.layers.activations.softmax import Softmax +from keras.src.layers.attention.additive_attention import AdditiveAttention +from keras.src.layers.attention.attention import Attention +from keras.src.layers.attention.grouped_query_attention import ( + GroupedQueryAttention as GroupQueryAttention, +) +from keras.src.layers.attention.multi_head_attention import MultiHeadAttention +from keras.src.layers.convolutional.conv1d import Conv1D +from keras.src.layers.convolutional.conv1d import Conv1D as Convolution1D +from keras.src.layers.convolutional.conv1d_transpose import Conv1DTranspose +from keras.src.layers.convolutional.conv1d_transpose import ( + Conv1DTranspose as Convolution1DTranspose, +) +from keras.src.layers.convolutional.conv2d import Conv2D +from keras.src.layers.convolutional.conv2d import Conv2D as Convolution2D +from keras.src.layers.convolutional.conv2d_transpose import Conv2DTranspose +from keras.src.layers.convolutional.conv2d_transpose import ( + Conv2DTranspose as Convolution2DTranspose, +) +from keras.src.layers.convolutional.conv3d import Conv3D +from keras.src.layers.convolutional.conv3d import Conv3D as Convolution3D +from keras.src.layers.convolutional.conv3d_transpose import Conv3DTranspose +from keras.src.layers.convolutional.conv3d_transpose import ( + Conv3DTranspose as Convolution3DTranspose, +) +from keras.src.layers.convolutional.depthwise_conv1d import DepthwiseConv1D +from keras.src.layers.convolutional.depthwise_conv2d import DepthwiseConv2D +from keras.src.layers.convolutional.separable_conv1d import SeparableConv1D +from keras.src.layers.convolutional.separable_conv1d import ( + SeparableConv1D as SeparableConvolution1D, +) +from keras.src.layers.convolutional.separable_conv2d import SeparableConv2D +from keras.src.layers.convolutional.separable_conv2d import ( + SeparableConv2D as SeparableConvolution2D, +) +from keras.src.layers.core.dense import Dense +from keras.src.layers.core.einsum_dense import EinsumDense +from keras.src.layers.core.embedding import Embedding +from keras.src.layers.core.identity import Identity +from keras.src.layers.core.input_layer import Input +from keras.src.layers.core.input_layer import InputLayer +from keras.src.layers.core.lambda_layer import Lambda +from keras.src.layers.core.masking import Masking +from keras.src.layers.core.wrapper import Wrapper +from keras.src.layers.input_spec import InputSpec +from keras.src.layers.layer import Layer +from keras.src.layers.merging.add import Add +from keras.src.layers.merging.add import add +from keras.src.layers.merging.average import Average +from keras.src.layers.merging.average import average +from keras.src.layers.merging.concatenate import Concatenate +from keras.src.layers.merging.concatenate import concatenate +from keras.src.layers.merging.dot import Dot +from keras.src.layers.merging.dot import dot +from keras.src.layers.merging.maximum import Maximum +from keras.src.layers.merging.maximum import maximum +from keras.src.layers.merging.minimum import Minimum +from keras.src.layers.merging.minimum import minimum +from keras.src.layers.merging.multiply import Multiply +from keras.src.layers.merging.multiply import multiply +from keras.src.layers.merging.subtract import Subtract +from keras.src.layers.merging.subtract import subtract +from keras.src.layers.normalization.batch_normalization import ( + BatchNormalization, +) +from keras.src.layers.normalization.group_normalization import ( + GroupNormalization, +) +from keras.src.layers.normalization.layer_normalization import ( + LayerNormalization, +) +from keras.src.layers.normalization.spectral_normalization import ( + SpectralNormalization, +) +from keras.src.layers.normalization.unit_normalization import UnitNormalization +from keras.src.layers.pooling.average_pooling1d import AveragePooling1D +from keras.src.layers.pooling.average_pooling1d import ( + AveragePooling1D as AvgPool1D, +) +from keras.src.layers.pooling.average_pooling2d import AveragePooling2D +from keras.src.layers.pooling.average_pooling2d import ( + AveragePooling2D as AvgPool2D, +) +from keras.src.layers.pooling.average_pooling3d import AveragePooling3D +from keras.src.layers.pooling.average_pooling3d import ( + AveragePooling3D as AvgPool3D, +) +from keras.src.layers.pooling.global_average_pooling1d import ( + GlobalAveragePooling1D, +) +from keras.src.layers.pooling.global_average_pooling1d import ( + GlobalAveragePooling1D as GlobalAvgPool1D, +) +from keras.src.layers.pooling.global_average_pooling2d import ( + GlobalAveragePooling2D, +) +from keras.src.layers.pooling.global_average_pooling2d import ( + GlobalAveragePooling2D as GlobalAvgPool2D, +) +from keras.src.layers.pooling.global_average_pooling3d import ( + GlobalAveragePooling3D, +) +from keras.src.layers.pooling.global_average_pooling3d import ( + GlobalAveragePooling3D as GlobalAvgPool3D, +) +from keras.src.layers.pooling.global_max_pooling1d import GlobalMaxPooling1D +from keras.src.layers.pooling.global_max_pooling1d import ( + GlobalMaxPooling1D as GlobalMaxPool1D, +) +from keras.src.layers.pooling.global_max_pooling2d import GlobalMaxPooling2D +from keras.src.layers.pooling.global_max_pooling2d import ( + GlobalMaxPooling2D as GlobalMaxPool2D, +) +from keras.src.layers.pooling.global_max_pooling3d import GlobalMaxPooling3D +from keras.src.layers.pooling.global_max_pooling3d import ( + GlobalMaxPooling3D as GlobalMaxPool3D, +) +from keras.src.layers.pooling.max_pooling1d import MaxPooling1D +from keras.src.layers.pooling.max_pooling1d import MaxPooling1D as MaxPool1D +from keras.src.layers.pooling.max_pooling2d import MaxPooling2D +from keras.src.layers.pooling.max_pooling2d import MaxPooling2D as MaxPool2D +from keras.src.layers.pooling.max_pooling3d import MaxPooling3D +from keras.src.layers.pooling.max_pooling3d import MaxPooling3D as MaxPool3D +from keras.src.layers.preprocessing.audio_preprocessing import MelSpectrogram +from keras.src.layers.preprocessing.category_encoding import CategoryEncoding +from keras.src.layers.preprocessing.center_crop import CenterCrop +from keras.src.layers.preprocessing.discretization import Discretization +from keras.src.layers.preprocessing.hashed_crossing import HashedCrossing +from keras.src.layers.preprocessing.hashing import Hashing +from keras.src.layers.preprocessing.integer_lookup import IntegerLookup +from keras.src.layers.preprocessing.normalization import Normalization +from keras.src.layers.preprocessing.random_brightness import RandomBrightness +from keras.src.layers.preprocessing.random_contrast import RandomContrast +from keras.src.layers.preprocessing.random_crop import RandomCrop +from keras.src.layers.preprocessing.random_flip import RandomFlip +from keras.src.layers.preprocessing.random_rotation import RandomRotation +from keras.src.layers.preprocessing.random_translation import RandomTranslation +from keras.src.layers.preprocessing.random_zoom import RandomZoom +from keras.src.layers.preprocessing.rescaling import Rescaling +from keras.src.layers.preprocessing.resizing import Resizing +from keras.src.layers.preprocessing.string_lookup import StringLookup +from keras.src.layers.preprocessing.text_vectorization import TextVectorization +from keras.src.layers.regularization.activity_regularization import ( + ActivityRegularization, +) +from keras.src.layers.regularization.alpha_dropout import AlphaDropout +from keras.src.layers.regularization.dropout import Dropout +from keras.src.layers.regularization.gaussian_dropout import GaussianDropout +from keras.src.layers.regularization.gaussian_noise import GaussianNoise +from keras.src.layers.regularization.spatial_dropout import SpatialDropout1D +from keras.src.layers.regularization.spatial_dropout import SpatialDropout2D +from keras.src.layers.regularization.spatial_dropout import SpatialDropout3D +from keras.src.layers.reshaping.cropping1d import Cropping1D +from keras.src.layers.reshaping.cropping2d import Cropping2D +from keras.src.layers.reshaping.cropping3d import Cropping3D +from keras.src.layers.reshaping.flatten import Flatten +from keras.src.layers.reshaping.permute import Permute +from keras.src.layers.reshaping.repeat_vector import RepeatVector +from keras.src.layers.reshaping.reshape import Reshape +from keras.src.layers.reshaping.up_sampling1d import UpSampling1D +from keras.src.layers.reshaping.up_sampling2d import UpSampling2D +from keras.src.layers.reshaping.up_sampling3d import UpSampling3D +from keras.src.layers.reshaping.zero_padding1d import ZeroPadding1D +from keras.src.layers.reshaping.zero_padding2d import ZeroPadding2D +from keras.src.layers.reshaping.zero_padding3d import ZeroPadding3D +from keras.src.layers.rnn.bidirectional import Bidirectional +from keras.src.layers.rnn.conv_lstm1d import ConvLSTM1D +from keras.src.layers.rnn.conv_lstm2d import ConvLSTM2D +from keras.src.layers.rnn.conv_lstm3d import ConvLSTM3D +from keras.src.layers.rnn.gru import GRU +from keras.src.layers.rnn.gru import GRUCell +from keras.src.layers.rnn.lstm import LSTM +from keras.src.layers.rnn.lstm import LSTMCell +from keras.src.layers.rnn.rnn import RNN +from keras.src.layers.rnn.simple_rnn import SimpleRNN +from keras.src.layers.rnn.simple_rnn import SimpleRNNCell +from keras.src.layers.rnn.stacked_rnn_cells import StackedRNNCells +from keras.src.layers.rnn.time_distributed import TimeDistributed +from keras.src.utils.jax_layer import FlaxLayer +from keras.src.utils.jax_layer import JaxLayer +from keras.src.utils.torch_utils import TorchModuleWrapper diff --git a/keras/api/_tf_keras/keras/legacy/__init__.py b/keras/api/_tf_keras/keras/legacy/__init__.py new file mode 100644 index 000000000000..96347e2c32bf --- /dev/null +++ b/keras/api/_tf_keras/keras/legacy/__init__.py @@ -0,0 +1,7 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.api.legacy import saving diff --git a/keras/api/_tf_keras/keras/legacy/saving/__init__.py b/keras/api/_tf_keras/keras/legacy/saving/__init__.py new file mode 100644 index 000000000000..ac4d2d43dd9a --- /dev/null +++ b/keras/api/_tf_keras/keras/legacy/saving/__init__.py @@ -0,0 +1,8 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.legacy.saving.serialization import deserialize_keras_object +from keras.src.legacy.saving.serialization import serialize_keras_object diff --git a/keras/api/_tf_keras/keras/losses/__init__.py b/keras/api/_tf_keras/keras/losses/__init__.py new file mode 100644 index 000000000000..ecaadddf6b7e --- /dev/null +++ b/keras/api/_tf_keras/keras/losses/__init__.py @@ -0,0 +1,50 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.losses import deserialize +from keras.src.losses import get +from keras.src.losses import serialize +from keras.src.losses.loss import Loss +from keras.src.losses.losses import CTC +from keras.src.losses.losses import BinaryCrossentropy +from keras.src.losses.losses import BinaryFocalCrossentropy +from keras.src.losses.losses import CategoricalCrossentropy +from keras.src.losses.losses import CategoricalFocalCrossentropy +from keras.src.losses.losses import CategoricalHinge +from keras.src.losses.losses import CosineSimilarity +from keras.src.losses.losses import Dice +from keras.src.losses.losses import Hinge +from keras.src.losses.losses import Huber +from keras.src.losses.losses import KLDivergence +from keras.src.losses.losses import LogCosh +from keras.src.losses.losses import MeanAbsoluteError +from keras.src.losses.losses import MeanAbsolutePercentageError +from keras.src.losses.losses import MeanSquaredError +from keras.src.losses.losses import MeanSquaredLogarithmicError +from keras.src.losses.losses import Poisson +from keras.src.losses.losses import SparseCategoricalCrossentropy +from keras.src.losses.losses import SquaredHinge +from keras.src.losses.losses import Tversky +from keras.src.losses.losses import binary_crossentropy +from keras.src.losses.losses import binary_focal_crossentropy +from keras.src.losses.losses import categorical_crossentropy +from keras.src.losses.losses import categorical_focal_crossentropy +from keras.src.losses.losses import categorical_hinge +from keras.src.losses.losses import cosine_similarity +from keras.src.losses.losses import ctc +from keras.src.losses.losses import dice +from keras.src.losses.losses import hinge +from keras.src.losses.losses import huber +from keras.src.losses.losses import kl_divergence +from keras.src.losses.losses import log_cosh +from keras.src.losses.losses import mean_absolute_error +from keras.src.losses.losses import mean_absolute_percentage_error +from keras.src.losses.losses import mean_squared_error +from keras.src.losses.losses import mean_squared_logarithmic_error +from keras.src.losses.losses import poisson +from keras.src.losses.losses import sparse_categorical_crossentropy +from keras.src.losses.losses import squared_hinge +from keras.src.losses.losses import tversky diff --git a/keras/api/_tf_keras/keras/metrics/__init__.py b/keras/api/_tf_keras/keras/metrics/__init__.py new file mode 100644 index 000000000000..dc59b32a46c3 --- /dev/null +++ b/keras/api/_tf_keras/keras/metrics/__init__.py @@ -0,0 +1,76 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.losses.losses import binary_crossentropy +from keras.src.losses.losses import binary_focal_crossentropy +from keras.src.losses.losses import categorical_crossentropy +from keras.src.losses.losses import categorical_focal_crossentropy +from keras.src.losses.losses import categorical_hinge +from keras.src.losses.losses import hinge +from keras.src.losses.losses import huber +from keras.src.losses.losses import kl_divergence +from keras.src.losses.losses import log_cosh +from keras.src.losses.losses import mean_absolute_error +from keras.src.losses.losses import mean_absolute_percentage_error +from keras.src.losses.losses import mean_squared_error +from keras.src.losses.losses import mean_squared_logarithmic_error +from keras.src.losses.losses import poisson +from keras.src.losses.losses import sparse_categorical_crossentropy +from keras.src.losses.losses import squared_hinge +from keras.src.metrics import deserialize +from keras.src.metrics import get +from keras.src.metrics import serialize +from keras.src.metrics.accuracy_metrics import Accuracy +from keras.src.metrics.accuracy_metrics import BinaryAccuracy +from keras.src.metrics.accuracy_metrics import CategoricalAccuracy +from keras.src.metrics.accuracy_metrics import SparseCategoricalAccuracy +from keras.src.metrics.accuracy_metrics import SparseTopKCategoricalAccuracy +from keras.src.metrics.accuracy_metrics import TopKCategoricalAccuracy +from keras.src.metrics.accuracy_metrics import binary_accuracy +from keras.src.metrics.accuracy_metrics import categorical_accuracy +from keras.src.metrics.accuracy_metrics import sparse_categorical_accuracy +from keras.src.metrics.accuracy_metrics import sparse_top_k_categorical_accuracy +from keras.src.metrics.accuracy_metrics import top_k_categorical_accuracy +from keras.src.metrics.confusion_metrics import AUC +from keras.src.metrics.confusion_metrics import FalseNegatives +from keras.src.metrics.confusion_metrics import FalsePositives +from keras.src.metrics.confusion_metrics import Precision +from keras.src.metrics.confusion_metrics import PrecisionAtRecall +from keras.src.metrics.confusion_metrics import Recall +from keras.src.metrics.confusion_metrics import RecallAtPrecision +from keras.src.metrics.confusion_metrics import SensitivityAtSpecificity +from keras.src.metrics.confusion_metrics import SpecificityAtSensitivity +from keras.src.metrics.confusion_metrics import TrueNegatives +from keras.src.metrics.confusion_metrics import TruePositives +from keras.src.metrics.f_score_metrics import F1Score +from keras.src.metrics.f_score_metrics import FBetaScore +from keras.src.metrics.hinge_metrics import CategoricalHinge +from keras.src.metrics.hinge_metrics import Hinge +from keras.src.metrics.hinge_metrics import SquaredHinge +from keras.src.metrics.iou_metrics import BinaryIoU +from keras.src.metrics.iou_metrics import IoU +from keras.src.metrics.iou_metrics import MeanIoU +from keras.src.metrics.iou_metrics import OneHotIoU +from keras.src.metrics.iou_metrics import OneHotMeanIoU +from keras.src.metrics.metric import Metric +from keras.src.metrics.probabilistic_metrics import BinaryCrossentropy +from keras.src.metrics.probabilistic_metrics import CategoricalCrossentropy +from keras.src.metrics.probabilistic_metrics import KLDivergence +from keras.src.metrics.probabilistic_metrics import Poisson +from keras.src.metrics.probabilistic_metrics import ( + SparseCategoricalCrossentropy, +) +from keras.src.metrics.reduction_metrics import Mean +from keras.src.metrics.reduction_metrics import MeanMetricWrapper +from keras.src.metrics.reduction_metrics import Sum +from keras.src.metrics.regression_metrics import CosineSimilarity +from keras.src.metrics.regression_metrics import LogCoshError +from keras.src.metrics.regression_metrics import MeanAbsoluteError +from keras.src.metrics.regression_metrics import MeanAbsolutePercentageError +from keras.src.metrics.regression_metrics import MeanSquaredError +from keras.src.metrics.regression_metrics import MeanSquaredLogarithmicError +from keras.src.metrics.regression_metrics import R2Score +from keras.src.metrics.regression_metrics import RootMeanSquaredError diff --git a/keras/api/_tf_keras/keras/mixed_precision/__init__.py b/keras/api/_tf_keras/keras/mixed_precision/__init__.py new file mode 100644 index 000000000000..85a421651d16 --- /dev/null +++ b/keras/api/_tf_keras/keras/mixed_precision/__init__.py @@ -0,0 +1,15 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.dtype_policies.dtype_policy import DTypePolicy +from keras.src.dtype_policies.dtype_policy import DTypePolicy as Policy +from keras.src.dtype_policies.dtype_policy import dtype_policy +from keras.src.dtype_policies.dtype_policy import dtype_policy as global_policy +from keras.src.dtype_policies.dtype_policy import set_dtype_policy +from keras.src.dtype_policies.dtype_policy import ( + set_dtype_policy as set_global_policy, +) +from keras.src.optimizers.loss_scale_optimizer import LossScaleOptimizer diff --git a/keras/api/_tf_keras/keras/models/__init__.py b/keras/api/_tf_keras/keras/models/__init__.py new file mode 100644 index 000000000000..48760da64791 --- /dev/null +++ b/keras/api/_tf_keras/keras/models/__init__.py @@ -0,0 +1,12 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.models.cloning import clone_model +from keras.src.models.model import Model +from keras.src.models.model import model_from_json +from keras.src.models.sequential import Sequential +from keras.src.saving.saving_api import load_model +from keras.src.saving.saving_api import save_model diff --git a/keras/api/_tf_keras/keras/ops/__init__.py b/keras/api/_tf_keras/keras/ops/__init__.py new file mode 100644 index 000000000000..1253650e9bc0 --- /dev/null +++ b/keras/api/_tf_keras/keras/ops/__init__.py @@ -0,0 +1,223 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.api.ops import image +from keras.api.ops import linalg +from keras.api.ops import nn +from keras.api.ops import numpy +from keras.src.ops.core import cast +from keras.src.ops.core import cond +from keras.src.ops.core import convert_to_numpy +from keras.src.ops.core import convert_to_tensor +from keras.src.ops.core import custom_gradient +from keras.src.ops.core import fori_loop +from keras.src.ops.core import is_tensor +from keras.src.ops.core import scatter +from keras.src.ops.core import scatter_update +from keras.src.ops.core import shape +from keras.src.ops.core import slice +from keras.src.ops.core import slice_update +from keras.src.ops.core import stop_gradient +from keras.src.ops.core import unstack +from keras.src.ops.core import vectorized_map +from keras.src.ops.core import while_loop +from keras.src.ops.linalg import cholesky +from keras.src.ops.linalg import det +from keras.src.ops.linalg import eig +from keras.src.ops.linalg import inv +from keras.src.ops.linalg import lu_factor +from keras.src.ops.linalg import norm +from keras.src.ops.linalg import qr +from keras.src.ops.linalg import solve +from keras.src.ops.linalg import solve_triangular +from keras.src.ops.linalg import svd +from keras.src.ops.math import erf +from keras.src.ops.math import erfinv +from keras.src.ops.math import extract_sequences +from keras.src.ops.math import fft +from keras.src.ops.math import fft2 +from keras.src.ops.math import in_top_k +from keras.src.ops.math import irfft +from keras.src.ops.math import istft +from keras.src.ops.math import logsumexp +from keras.src.ops.math import rfft +from keras.src.ops.math import rsqrt +from keras.src.ops.math import segment_max +from keras.src.ops.math import segment_sum +from keras.src.ops.math import stft +from keras.src.ops.math import top_k +from keras.src.ops.nn import average_pool +from keras.src.ops.nn import batch_normalization +from keras.src.ops.nn import binary_crossentropy +from keras.src.ops.nn import categorical_crossentropy +from keras.src.ops.nn import conv +from keras.src.ops.nn import conv_transpose +from keras.src.ops.nn import ctc_loss +from keras.src.ops.nn import depthwise_conv +from keras.src.ops.nn import elu +from keras.src.ops.nn import gelu +from keras.src.ops.nn import hard_sigmoid +from keras.src.ops.nn import hard_silu +from keras.src.ops.nn import hard_silu as hard_swish +from keras.src.ops.nn import leaky_relu +from keras.src.ops.nn import log_sigmoid +from keras.src.ops.nn import log_softmax +from keras.src.ops.nn import max_pool +from keras.src.ops.nn import moments +from keras.src.ops.nn import multi_hot +from keras.src.ops.nn import normalize +from keras.src.ops.nn import one_hot +from keras.src.ops.nn import relu +from keras.src.ops.nn import relu6 +from keras.src.ops.nn import selu +from keras.src.ops.nn import separable_conv +from keras.src.ops.nn import sigmoid +from keras.src.ops.nn import silu +from keras.src.ops.nn import silu as swish +from keras.src.ops.nn import softmax +from keras.src.ops.nn import softplus +from keras.src.ops.nn import softsign +from keras.src.ops.nn import sparse_categorical_crossentropy +from keras.src.ops.numpy import abs +from keras.src.ops.numpy import absolute +from keras.src.ops.numpy import add +from keras.src.ops.numpy import all +from keras.src.ops.numpy import amax +from keras.src.ops.numpy import amin +from keras.src.ops.numpy import any +from keras.src.ops.numpy import append +from keras.src.ops.numpy import arange +from keras.src.ops.numpy import arccos +from keras.src.ops.numpy import arccosh +from keras.src.ops.numpy import arcsin +from keras.src.ops.numpy import arcsinh +from keras.src.ops.numpy import arctan +from keras.src.ops.numpy import arctan2 +from keras.src.ops.numpy import arctanh +from keras.src.ops.numpy import argmax +from keras.src.ops.numpy import argmin +from keras.src.ops.numpy import argsort +from keras.src.ops.numpy import array +from keras.src.ops.numpy import average +from keras.src.ops.numpy import bincount +from keras.src.ops.numpy import broadcast_to +from keras.src.ops.numpy import ceil +from keras.src.ops.numpy import clip +from keras.src.ops.numpy import concatenate +from keras.src.ops.numpy import conj +from keras.src.ops.numpy import conjugate +from keras.src.ops.numpy import copy +from keras.src.ops.numpy import correlate +from keras.src.ops.numpy import cos +from keras.src.ops.numpy import cosh +from keras.src.ops.numpy import count_nonzero +from keras.src.ops.numpy import cross +from keras.src.ops.numpy import cumprod +from keras.src.ops.numpy import cumsum +from keras.src.ops.numpy import diag +from keras.src.ops.numpy import diagonal +from keras.src.ops.numpy import diff +from keras.src.ops.numpy import digitize +from keras.src.ops.numpy import divide +from keras.src.ops.numpy import divide_no_nan +from keras.src.ops.numpy import dot +from keras.src.ops.numpy import einsum +from keras.src.ops.numpy import empty +from keras.src.ops.numpy import equal +from keras.src.ops.numpy import exp +from keras.src.ops.numpy import expand_dims +from keras.src.ops.numpy import expm1 +from keras.src.ops.numpy import eye +from keras.src.ops.numpy import flip +from keras.src.ops.numpy import floor +from keras.src.ops.numpy import floor_divide +from keras.src.ops.numpy import full +from keras.src.ops.numpy import full_like +from keras.src.ops.numpy import get_item +from keras.src.ops.numpy import greater +from keras.src.ops.numpy import greater_equal +from keras.src.ops.numpy import hstack +from keras.src.ops.numpy import identity +from keras.src.ops.numpy import imag +from keras.src.ops.numpy import isclose +from keras.src.ops.numpy import isfinite +from keras.src.ops.numpy import isinf +from keras.src.ops.numpy import isnan +from keras.src.ops.numpy import less +from keras.src.ops.numpy import less_equal +from keras.src.ops.numpy import linspace +from keras.src.ops.numpy import log +from keras.src.ops.numpy import log1p +from keras.src.ops.numpy import log2 +from keras.src.ops.numpy import log10 +from keras.src.ops.numpy import logaddexp +from keras.src.ops.numpy import logical_and +from keras.src.ops.numpy import logical_not +from keras.src.ops.numpy import logical_or +from keras.src.ops.numpy import logical_xor +from keras.src.ops.numpy import logspace +from keras.src.ops.numpy import matmul +from keras.src.ops.numpy import max +from keras.src.ops.numpy import maximum +from keras.src.ops.numpy import mean +from keras.src.ops.numpy import median +from keras.src.ops.numpy import meshgrid +from keras.src.ops.numpy import min +from keras.src.ops.numpy import minimum +from keras.src.ops.numpy import mod +from keras.src.ops.numpy import moveaxis +from keras.src.ops.numpy import multiply +from keras.src.ops.numpy import nan_to_num +from keras.src.ops.numpy import ndim +from keras.src.ops.numpy import negative +from keras.src.ops.numpy import nonzero +from keras.src.ops.numpy import not_equal +from keras.src.ops.numpy import ones +from keras.src.ops.numpy import ones_like +from keras.src.ops.numpy import outer +from keras.src.ops.numpy import pad +from keras.src.ops.numpy import power +from keras.src.ops.numpy import prod +from keras.src.ops.numpy import quantile +from keras.src.ops.numpy import ravel +from keras.src.ops.numpy import real +from keras.src.ops.numpy import reciprocal +from keras.src.ops.numpy import repeat +from keras.src.ops.numpy import reshape +from keras.src.ops.numpy import roll +from keras.src.ops.numpy import round +from keras.src.ops.numpy import sign +from keras.src.ops.numpy import sin +from keras.src.ops.numpy import sinh +from keras.src.ops.numpy import size +from keras.src.ops.numpy import sort +from keras.src.ops.numpy import split +from keras.src.ops.numpy import sqrt +from keras.src.ops.numpy import square +from keras.src.ops.numpy import squeeze +from keras.src.ops.numpy import stack +from keras.src.ops.numpy import std +from keras.src.ops.numpy import subtract +from keras.src.ops.numpy import sum +from keras.src.ops.numpy import swapaxes +from keras.src.ops.numpy import take +from keras.src.ops.numpy import take_along_axis +from keras.src.ops.numpy import tan +from keras.src.ops.numpy import tanh +from keras.src.ops.numpy import tensordot +from keras.src.ops.numpy import tile +from keras.src.ops.numpy import trace +from keras.src.ops.numpy import transpose +from keras.src.ops.numpy import tri +from keras.src.ops.numpy import tril +from keras.src.ops.numpy import triu +from keras.src.ops.numpy import true_divide +from keras.src.ops.numpy import var +from keras.src.ops.numpy import vdot +from keras.src.ops.numpy import vstack +from keras.src.ops.numpy import where +from keras.src.ops.numpy import zeros +from keras.src.ops.numpy import zeros_like diff --git a/keras/api/_tf_keras/keras/ops/image/__init__.py b/keras/api/_tf_keras/keras/ops/image/__init__.py new file mode 100644 index 000000000000..e4c8464c2195 --- /dev/null +++ b/keras/api/_tf_keras/keras/ops/image/__init__.py @@ -0,0 +1,13 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.ops.image import affine_transform +from keras.src.ops.image import crop_images +from keras.src.ops.image import extract_patches +from keras.src.ops.image import map_coordinates +from keras.src.ops.image import pad_images +from keras.src.ops.image import resize +from keras.src.ops.image import rgb_to_grayscale diff --git a/keras/api/_tf_keras/keras/ops/linalg/__init__.py b/keras/api/_tf_keras/keras/ops/linalg/__init__.py new file mode 100644 index 000000000000..da392d6c2490 --- /dev/null +++ b/keras/api/_tf_keras/keras/ops/linalg/__init__.py @@ -0,0 +1,16 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.ops.linalg import cholesky +from keras.src.ops.linalg import det +from keras.src.ops.linalg import eig +from keras.src.ops.linalg import inv +from keras.src.ops.linalg import lu_factor +from keras.src.ops.linalg import norm +from keras.src.ops.linalg import qr +from keras.src.ops.linalg import solve +from keras.src.ops.linalg import solve_triangular +from keras.src.ops.linalg import svd diff --git a/keras/api/_tf_keras/keras/ops/nn/__init__.py b/keras/api/_tf_keras/keras/ops/nn/__init__.py new file mode 100644 index 000000000000..9452ea18a766 --- /dev/null +++ b/keras/api/_tf_keras/keras/ops/nn/__init__.py @@ -0,0 +1,38 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.ops.nn import average_pool +from keras.src.ops.nn import batch_normalization +from keras.src.ops.nn import binary_crossentropy +from keras.src.ops.nn import categorical_crossentropy +from keras.src.ops.nn import conv +from keras.src.ops.nn import conv_transpose +from keras.src.ops.nn import ctc_loss +from keras.src.ops.nn import depthwise_conv +from keras.src.ops.nn import elu +from keras.src.ops.nn import gelu +from keras.src.ops.nn import hard_sigmoid +from keras.src.ops.nn import hard_silu +from keras.src.ops.nn import hard_silu as hard_swish +from keras.src.ops.nn import leaky_relu +from keras.src.ops.nn import log_sigmoid +from keras.src.ops.nn import log_softmax +from keras.src.ops.nn import max_pool +from keras.src.ops.nn import moments +from keras.src.ops.nn import multi_hot +from keras.src.ops.nn import normalize +from keras.src.ops.nn import one_hot +from keras.src.ops.nn import relu +from keras.src.ops.nn import relu6 +from keras.src.ops.nn import selu +from keras.src.ops.nn import separable_conv +from keras.src.ops.nn import sigmoid +from keras.src.ops.nn import silu +from keras.src.ops.nn import silu as swish +from keras.src.ops.nn import softmax +from keras.src.ops.nn import softplus +from keras.src.ops.nn import softsign +from keras.src.ops.nn import sparse_categorical_crossentropy diff --git a/keras/api/_tf_keras/keras/ops/numpy/__init__.py b/keras/api/_tf_keras/keras/ops/numpy/__init__.py new file mode 100644 index 000000000000..1d5434e40288 --- /dev/null +++ b/keras/api/_tf_keras/keras/ops/numpy/__init__.py @@ -0,0 +1,146 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.ops.numpy import abs +from keras.src.ops.numpy import absolute +from keras.src.ops.numpy import add +from keras.src.ops.numpy import all +from keras.src.ops.numpy import amax +from keras.src.ops.numpy import amin +from keras.src.ops.numpy import any +from keras.src.ops.numpy import append +from keras.src.ops.numpy import arange +from keras.src.ops.numpy import arccos +from keras.src.ops.numpy import arccosh +from keras.src.ops.numpy import arcsin +from keras.src.ops.numpy import arcsinh +from keras.src.ops.numpy import arctan +from keras.src.ops.numpy import arctan2 +from keras.src.ops.numpy import arctanh +from keras.src.ops.numpy import argmax +from keras.src.ops.numpy import argmin +from keras.src.ops.numpy import argsort +from keras.src.ops.numpy import array +from keras.src.ops.numpy import average +from keras.src.ops.numpy import bincount +from keras.src.ops.numpy import broadcast_to +from keras.src.ops.numpy import ceil +from keras.src.ops.numpy import clip +from keras.src.ops.numpy import concatenate +from keras.src.ops.numpy import conj +from keras.src.ops.numpy import conjugate +from keras.src.ops.numpy import copy +from keras.src.ops.numpy import correlate +from keras.src.ops.numpy import cos +from keras.src.ops.numpy import cosh +from keras.src.ops.numpy import count_nonzero +from keras.src.ops.numpy import cross +from keras.src.ops.numpy import cumprod +from keras.src.ops.numpy import cumsum +from keras.src.ops.numpy import diag +from keras.src.ops.numpy import diagonal +from keras.src.ops.numpy import diff +from keras.src.ops.numpy import digitize +from keras.src.ops.numpy import divide +from keras.src.ops.numpy import divide_no_nan +from keras.src.ops.numpy import dot +from keras.src.ops.numpy import einsum +from keras.src.ops.numpy import empty +from keras.src.ops.numpy import equal +from keras.src.ops.numpy import exp +from keras.src.ops.numpy import expand_dims +from keras.src.ops.numpy import expm1 +from keras.src.ops.numpy import eye +from keras.src.ops.numpy import flip +from keras.src.ops.numpy import floor +from keras.src.ops.numpy import floor_divide +from keras.src.ops.numpy import full +from keras.src.ops.numpy import full_like +from keras.src.ops.numpy import get_item +from keras.src.ops.numpy import greater +from keras.src.ops.numpy import greater_equal +from keras.src.ops.numpy import hstack +from keras.src.ops.numpy import identity +from keras.src.ops.numpy import imag +from keras.src.ops.numpy import isclose +from keras.src.ops.numpy import isfinite +from keras.src.ops.numpy import isinf +from keras.src.ops.numpy import isnan +from keras.src.ops.numpy import less +from keras.src.ops.numpy import less_equal +from keras.src.ops.numpy import linspace +from keras.src.ops.numpy import log +from keras.src.ops.numpy import log1p +from keras.src.ops.numpy import log2 +from keras.src.ops.numpy import log10 +from keras.src.ops.numpy import logaddexp +from keras.src.ops.numpy import logical_and +from keras.src.ops.numpy import logical_not +from keras.src.ops.numpy import logical_or +from keras.src.ops.numpy import logical_xor +from keras.src.ops.numpy import logspace +from keras.src.ops.numpy import matmul +from keras.src.ops.numpy import max +from keras.src.ops.numpy import maximum +from keras.src.ops.numpy import mean +from keras.src.ops.numpy import median +from keras.src.ops.numpy import meshgrid +from keras.src.ops.numpy import min +from keras.src.ops.numpy import minimum +from keras.src.ops.numpy import mod +from keras.src.ops.numpy import moveaxis +from keras.src.ops.numpy import multiply +from keras.src.ops.numpy import nan_to_num +from keras.src.ops.numpy import ndim +from keras.src.ops.numpy import negative +from keras.src.ops.numpy import nonzero +from keras.src.ops.numpy import not_equal +from keras.src.ops.numpy import ones +from keras.src.ops.numpy import ones_like +from keras.src.ops.numpy import outer +from keras.src.ops.numpy import pad +from keras.src.ops.numpy import power +from keras.src.ops.numpy import prod +from keras.src.ops.numpy import quantile +from keras.src.ops.numpy import ravel +from keras.src.ops.numpy import real +from keras.src.ops.numpy import reciprocal +from keras.src.ops.numpy import repeat +from keras.src.ops.numpy import reshape +from keras.src.ops.numpy import roll +from keras.src.ops.numpy import round +from keras.src.ops.numpy import sign +from keras.src.ops.numpy import sin +from keras.src.ops.numpy import sinh +from keras.src.ops.numpy import size +from keras.src.ops.numpy import sort +from keras.src.ops.numpy import split +from keras.src.ops.numpy import sqrt +from keras.src.ops.numpy import square +from keras.src.ops.numpy import squeeze +from keras.src.ops.numpy import stack +from keras.src.ops.numpy import std +from keras.src.ops.numpy import subtract +from keras.src.ops.numpy import sum +from keras.src.ops.numpy import swapaxes +from keras.src.ops.numpy import take +from keras.src.ops.numpy import take_along_axis +from keras.src.ops.numpy import tan +from keras.src.ops.numpy import tanh +from keras.src.ops.numpy import tensordot +from keras.src.ops.numpy import tile +from keras.src.ops.numpy import trace +from keras.src.ops.numpy import transpose +from keras.src.ops.numpy import tri +from keras.src.ops.numpy import tril +from keras.src.ops.numpy import triu +from keras.src.ops.numpy import true_divide +from keras.src.ops.numpy import var +from keras.src.ops.numpy import vdot +from keras.src.ops.numpy import vstack +from keras.src.ops.numpy import where +from keras.src.ops.numpy import zeros +from keras.src.ops.numpy import zeros_like diff --git a/keras/api/_tf_keras/keras/optimizers/__init__.py b/keras/api/_tf_keras/keras/optimizers/__init__.py new file mode 100644 index 000000000000..5dab6705b58d --- /dev/null +++ b/keras/api/_tf_keras/keras/optimizers/__init__.py @@ -0,0 +1,24 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.api.optimizers import legacy +from keras.api.optimizers import schedules +from keras.src.optimizers import deserialize +from keras.src.optimizers import get +from keras.src.optimizers import serialize +from keras.src.optimizers.adadelta import Adadelta +from keras.src.optimizers.adafactor import Adafactor +from keras.src.optimizers.adagrad import Adagrad +from keras.src.optimizers.adam import Adam +from keras.src.optimizers.adamax import Adamax +from keras.src.optimizers.adamw import AdamW +from keras.src.optimizers.ftrl import Ftrl +from keras.src.optimizers.lion import Lion +from keras.src.optimizers.loss_scale_optimizer import LossScaleOptimizer +from keras.src.optimizers.nadam import Nadam +from keras.src.optimizers.optimizer import Optimizer +from keras.src.optimizers.rmsprop import RMSprop +from keras.src.optimizers.sgd import SGD diff --git a/keras/api/_tf_keras/keras/optimizers/legacy/__init__.py b/keras/api/_tf_keras/keras/optimizers/legacy/__init__.py new file mode 100644 index 000000000000..bff1a0313630 --- /dev/null +++ b/keras/api/_tf_keras/keras/optimizers/legacy/__init__.py @@ -0,0 +1,12 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.optimizers import LegacyOptimizerWarning as Adagrad +from keras.src.optimizers import LegacyOptimizerWarning as Adam +from keras.src.optimizers import LegacyOptimizerWarning as Ftrl +from keras.src.optimizers import LegacyOptimizerWarning as Optimizer +from keras.src.optimizers import LegacyOptimizerWarning as RMSprop +from keras.src.optimizers import LegacyOptimizerWarning as SGD diff --git a/keras/api/_tf_keras/keras/optimizers/schedules/__init__.py b/keras/api/_tf_keras/keras/optimizers/schedules/__init__.py new file mode 100644 index 000000000000..6178626258ed --- /dev/null +++ b/keras/api/_tf_keras/keras/optimizers/schedules/__init__.py @@ -0,0 +1,27 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.optimizers.schedules.learning_rate_schedule import CosineDecay +from keras.src.optimizers.schedules.learning_rate_schedule import ( + CosineDecayRestarts, +) +from keras.src.optimizers.schedules.learning_rate_schedule import ( + ExponentialDecay, +) +from keras.src.optimizers.schedules.learning_rate_schedule import ( + InverseTimeDecay, +) +from keras.src.optimizers.schedules.learning_rate_schedule import ( + LearningRateSchedule, +) +from keras.src.optimizers.schedules.learning_rate_schedule import ( + PiecewiseConstantDecay, +) +from keras.src.optimizers.schedules.learning_rate_schedule import ( + PolynomialDecay, +) +from keras.src.optimizers.schedules.learning_rate_schedule import deserialize +from keras.src.optimizers.schedules.learning_rate_schedule import serialize diff --git a/keras/api/_tf_keras/keras/preprocessing/__init__.py b/keras/api/_tf_keras/keras/preprocessing/__init__.py new file mode 100644 index 000000000000..c9ed7fd664c2 --- /dev/null +++ b/keras/api/_tf_keras/keras/preprocessing/__init__.py @@ -0,0 +1,13 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.api.preprocessing import image +from keras.api.preprocessing import sequence +from keras.src.utils.image_dataset_utils import image_dataset_from_directory +from keras.src.utils.text_dataset_utils import text_dataset_from_directory +from keras.src.utils.timeseries_dataset_utils import ( + timeseries_dataset_from_array, +) diff --git a/keras/api/_tf_keras/keras/preprocessing/image/__init__.py b/keras/api/_tf_keras/keras/preprocessing/image/__init__.py new file mode 100644 index 000000000000..f68afe8789d5 --- /dev/null +++ b/keras/api/_tf_keras/keras/preprocessing/image/__init__.py @@ -0,0 +1,11 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.utils.image_utils import array_to_img +from keras.src.utils.image_utils import img_to_array +from keras.src.utils.image_utils import load_img +from keras.src.utils.image_utils import save_img +from keras.src.utils.image_utils import smart_resize diff --git a/keras/api/_tf_keras/keras/preprocessing/sequence/__init__.py b/keras/api/_tf_keras/keras/preprocessing/sequence/__init__.py new file mode 100644 index 000000000000..188e01af9c48 --- /dev/null +++ b/keras/api/_tf_keras/keras/preprocessing/sequence/__init__.py @@ -0,0 +1,7 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.utils.sequence_utils import pad_sequences diff --git a/keras/api/_tf_keras/keras/quantizers/__init__.py b/keras/api/_tf_keras/keras/quantizers/__init__.py new file mode 100644 index 000000000000..d8a209bbb623 --- /dev/null +++ b/keras/api/_tf_keras/keras/quantizers/__init__.py @@ -0,0 +1,15 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.quantizers import deserialize +from keras.src.quantizers import get +from keras.src.quantizers import serialize +from keras.src.quantizers.quantizers import AbsMaxQuantizer +from keras.src.quantizers.quantizers import Quantizer +from keras.src.quantizers.quantizers import abs_max_quantize +from keras.src.quantizers.quantizers import compute_float8_amax_history +from keras.src.quantizers.quantizers import compute_float8_scale +from keras.src.quantizers.quantizers import quantize_and_dequantize diff --git a/keras/api/_tf_keras/keras/random/__init__.py b/keras/api/_tf_keras/keras/random/__init__.py new file mode 100644 index 000000000000..faf9c67f3fc4 --- /dev/null +++ b/keras/api/_tf_keras/keras/random/__init__.py @@ -0,0 +1,17 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.random.random import beta +from keras.src.random.random import binomial +from keras.src.random.random import categorical +from keras.src.random.random import dropout +from keras.src.random.random import gamma +from keras.src.random.random import normal +from keras.src.random.random import randint +from keras.src.random.random import shuffle +from keras.src.random.random import truncated_normal +from keras.src.random.random import uniform +from keras.src.random.seed_generator import SeedGenerator diff --git a/keras/api/_tf_keras/keras/regularizers/__init__.py b/keras/api/_tf_keras/keras/regularizers/__init__.py new file mode 100644 index 000000000000..93b51eaa51bd --- /dev/null +++ b/keras/api/_tf_keras/keras/regularizers/__init__.py @@ -0,0 +1,20 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.regularizers import deserialize +from keras.src.regularizers import get +from keras.src.regularizers import serialize +from keras.src.regularizers.regularizers import L1 +from keras.src.regularizers.regularizers import L1 as l1 +from keras.src.regularizers.regularizers import L1L2 +from keras.src.regularizers.regularizers import L1L2 as l1_l2 +from keras.src.regularizers.regularizers import L2 +from keras.src.regularizers.regularizers import L2 as l2 +from keras.src.regularizers.regularizers import OrthogonalRegularizer +from keras.src.regularizers.regularizers import ( + OrthogonalRegularizer as orthogonal_regularizer, +) +from keras.src.regularizers.regularizers import Regularizer diff --git a/keras/api/_tf_keras/keras/saving/__init__.py b/keras/api/_tf_keras/keras/saving/__init__.py new file mode 100644 index 000000000000..2f772922f8d1 --- /dev/null +++ b/keras/api/_tf_keras/keras/saving/__init__.py @@ -0,0 +1,20 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.saving.object_registration import CustomObjectScope +from keras.src.saving.object_registration import ( + CustomObjectScope as custom_object_scope, +) +from keras.src.saving.object_registration import get_custom_objects +from keras.src.saving.object_registration import get_registered_name +from keras.src.saving.object_registration import get_registered_object +from keras.src.saving.object_registration import register_keras_serializable +from keras.src.saving.saving_api import load_model +from keras.src.saving.saving_api import load_weights +from keras.src.saving.saving_api import save_model +from keras.src.saving.saving_api import save_weights +from keras.src.saving.serialization_lib import deserialize_keras_object +from keras.src.saving.serialization_lib import serialize_keras_object diff --git a/keras/api/_tf_keras/keras/tree/__init__.py b/keras/api/_tf_keras/keras/tree/__init__.py new file mode 100644 index 000000000000..388d19a0ec26 --- /dev/null +++ b/keras/api/_tf_keras/keras/tree/__init__.py @@ -0,0 +1,15 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.tree.tree_api import assert_same_structure +from keras.src.tree.tree_api import flatten +from keras.src.tree.tree_api import is_nested +from keras.src.tree.tree_api import lists_to_tuples +from keras.src.tree.tree_api import map_shape_structure +from keras.src.tree.tree_api import map_structure +from keras.src.tree.tree_api import map_structure_up_to +from keras.src.tree.tree_api import pack_sequence_as +from keras.src.tree.tree_api import traverse diff --git a/keras/api/_tf_keras/keras/utils/__init__.py b/keras/api/_tf_keras/keras/utils/__init__.py new file mode 100644 index 000000000000..aab787cc930f --- /dev/null +++ b/keras/api/_tf_keras/keras/utils/__init__.py @@ -0,0 +1,54 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.api.utils import legacy +from keras.src.backend.common.global_state import clear_session +from keras.src.backend.common.keras_tensor import is_keras_tensor +from keras.src.backend.common.variables import standardize_dtype +from keras.src.layers.preprocessing.feature_space import FeatureSpace +from keras.src.ops.operation_utils import get_source_inputs +from keras.src.saving.object_registration import CustomObjectScope +from keras.src.saving.object_registration import ( + CustomObjectScope as custom_object_scope, +) +from keras.src.saving.object_registration import get_custom_objects +from keras.src.saving.object_registration import get_registered_name +from keras.src.saving.object_registration import get_registered_object +from keras.src.saving.object_registration import register_keras_serializable +from keras.src.saving.serialization_lib import deserialize_keras_object +from keras.src.saving.serialization_lib import serialize_keras_object +from keras.src.trainers.data_adapters.data_adapter_utils import ( + pack_x_y_sample_weight, +) +from keras.src.trainers.data_adapters.data_adapter_utils import ( + unpack_x_y_sample_weight, +) +from keras.src.trainers.data_adapters.py_dataset_adapter import PyDataset +from keras.src.trainers.data_adapters.py_dataset_adapter import ( + PyDataset as Sequence, +) +from keras.src.utils.audio_dataset_utils import audio_dataset_from_directory +from keras.src.utils.dataset_utils import split_dataset +from keras.src.utils.file_utils import get_file +from keras.src.utils.image_dataset_utils import image_dataset_from_directory +from keras.src.utils.image_utils import array_to_img +from keras.src.utils.image_utils import img_to_array +from keras.src.utils.image_utils import load_img +from keras.src.utils.image_utils import save_img +from keras.src.utils.io_utils import disable_interactive_logging +from keras.src.utils.io_utils import enable_interactive_logging +from keras.src.utils.io_utils import is_interactive_logging_enabled +from keras.src.utils.model_visualization import model_to_dot +from keras.src.utils.model_visualization import plot_model +from keras.src.utils.numerical_utils import normalize +from keras.src.utils.numerical_utils import to_categorical +from keras.src.utils.progbar import Progbar +from keras.src.utils.rng_utils import set_random_seed +from keras.src.utils.sequence_utils import pad_sequences +from keras.src.utils.text_dataset_utils import text_dataset_from_directory +from keras.src.utils.timeseries_dataset_utils import ( + timeseries_dataset_from_array, +) diff --git a/keras/api/_tf_keras/keras/utils/legacy/__init__.py b/keras/api/_tf_keras/keras/utils/legacy/__init__.py new file mode 100644 index 000000000000..ac4d2d43dd9a --- /dev/null +++ b/keras/api/_tf_keras/keras/utils/legacy/__init__.py @@ -0,0 +1,8 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.legacy.saving.serialization import deserialize_keras_object +from keras.src.legacy.saving.serialization import serialize_keras_object diff --git a/keras/api/activations/__init__.py b/keras/api/activations/__init__.py new file mode 100644 index 000000000000..17624b6ba5dc --- /dev/null +++ b/keras/api/activations/__init__.py @@ -0,0 +1,29 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.activations import deserialize +from keras.src.activations import get +from keras.src.activations import serialize +from keras.src.activations.activations import elu +from keras.src.activations.activations import exponential +from keras.src.activations.activations import gelu +from keras.src.activations.activations import hard_sigmoid +from keras.src.activations.activations import hard_silu +from keras.src.activations.activations import hard_silu as hard_swish +from keras.src.activations.activations import leaky_relu +from keras.src.activations.activations import linear +from keras.src.activations.activations import log_softmax +from keras.src.activations.activations import mish +from keras.src.activations.activations import relu +from keras.src.activations.activations import relu6 +from keras.src.activations.activations import selu +from keras.src.activations.activations import sigmoid +from keras.src.activations.activations import silu +from keras.src.activations.activations import silu as swish +from keras.src.activations.activations import softmax +from keras.src.activations.activations import softplus +from keras.src.activations.activations import softsign +from keras.src.activations.activations import tanh diff --git a/keras/api/applications/__init__.py b/keras/api/applications/__init__.py new file mode 100644 index 000000000000..183b3ca66142 --- /dev/null +++ b/keras/api/applications/__init__.py @@ -0,0 +1,63 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.api.applications import convnext +from keras.api.applications import densenet +from keras.api.applications import efficientnet +from keras.api.applications import efficientnet_v2 +from keras.api.applications import imagenet_utils +from keras.api.applications import inception_resnet_v2 +from keras.api.applications import inception_v3 +from keras.api.applications import mobilenet +from keras.api.applications import mobilenet_v2 +from keras.api.applications import mobilenet_v3 +from keras.api.applications import nasnet +from keras.api.applications import resnet +from keras.api.applications import resnet50 +from keras.api.applications import resnet_v2 +from keras.api.applications import vgg16 +from keras.api.applications import vgg19 +from keras.api.applications import xception +from keras.src.applications.convnext import ConvNeXtBase +from keras.src.applications.convnext import ConvNeXtLarge +from keras.src.applications.convnext import ConvNeXtSmall +from keras.src.applications.convnext import ConvNeXtTiny +from keras.src.applications.convnext import ConvNeXtXLarge +from keras.src.applications.densenet import DenseNet121 +from keras.src.applications.densenet import DenseNet169 +from keras.src.applications.densenet import DenseNet201 +from keras.src.applications.efficientnet import EfficientNetB0 +from keras.src.applications.efficientnet import EfficientNetB1 +from keras.src.applications.efficientnet import EfficientNetB2 +from keras.src.applications.efficientnet import EfficientNetB3 +from keras.src.applications.efficientnet import EfficientNetB4 +from keras.src.applications.efficientnet import EfficientNetB5 +from keras.src.applications.efficientnet import EfficientNetB6 +from keras.src.applications.efficientnet import EfficientNetB7 +from keras.src.applications.efficientnet_v2 import EfficientNetV2B0 +from keras.src.applications.efficientnet_v2 import EfficientNetV2B1 +from keras.src.applications.efficientnet_v2 import EfficientNetV2B2 +from keras.src.applications.efficientnet_v2 import EfficientNetV2B3 +from keras.src.applications.efficientnet_v2 import EfficientNetV2L +from keras.src.applications.efficientnet_v2 import EfficientNetV2M +from keras.src.applications.efficientnet_v2 import EfficientNetV2S +from keras.src.applications.inception_resnet_v2 import InceptionResNetV2 +from keras.src.applications.inception_v3 import InceptionV3 +from keras.src.applications.mobilenet import MobileNet +from keras.src.applications.mobilenet_v2 import MobileNetV2 +from keras.src.applications.mobilenet_v3 import MobileNetV3Large +from keras.src.applications.mobilenet_v3 import MobileNetV3Small +from keras.src.applications.nasnet import NASNetLarge +from keras.src.applications.nasnet import NASNetMobile +from keras.src.applications.resnet import ResNet50 +from keras.src.applications.resnet import ResNet101 +from keras.src.applications.resnet import ResNet152 +from keras.src.applications.resnet_v2 import ResNet50V2 +from keras.src.applications.resnet_v2 import ResNet101V2 +from keras.src.applications.resnet_v2 import ResNet152V2 +from keras.src.applications.vgg16 import VGG16 +from keras.src.applications.vgg19 import VGG19 +from keras.src.applications.xception import Xception diff --git a/keras/api/applications/convnext/__init__.py b/keras/api/applications/convnext/__init__.py new file mode 100644 index 000000000000..b4eaaa3834b1 --- /dev/null +++ b/keras/api/applications/convnext/__init__.py @@ -0,0 +1,13 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.applications.convnext import ConvNeXtBase +from keras.src.applications.convnext import ConvNeXtLarge +from keras.src.applications.convnext import ConvNeXtSmall +from keras.src.applications.convnext import ConvNeXtTiny +from keras.src.applications.convnext import ConvNeXtXLarge +from keras.src.applications.convnext import decode_predictions +from keras.src.applications.convnext import preprocess_input diff --git a/keras/api/applications/densenet/__init__.py b/keras/api/applications/densenet/__init__.py new file mode 100644 index 000000000000..0173a2c3ed9d --- /dev/null +++ b/keras/api/applications/densenet/__init__.py @@ -0,0 +1,11 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.applications.densenet import DenseNet121 +from keras.src.applications.densenet import DenseNet169 +from keras.src.applications.densenet import DenseNet201 +from keras.src.applications.densenet import decode_predictions +from keras.src.applications.densenet import preprocess_input diff --git a/keras/api/applications/efficientnet/__init__.py b/keras/api/applications/efficientnet/__init__.py new file mode 100644 index 000000000000..c4af0199bea6 --- /dev/null +++ b/keras/api/applications/efficientnet/__init__.py @@ -0,0 +1,16 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.applications.efficientnet import EfficientNetB0 +from keras.src.applications.efficientnet import EfficientNetB1 +from keras.src.applications.efficientnet import EfficientNetB2 +from keras.src.applications.efficientnet import EfficientNetB3 +from keras.src.applications.efficientnet import EfficientNetB4 +from keras.src.applications.efficientnet import EfficientNetB5 +from keras.src.applications.efficientnet import EfficientNetB6 +from keras.src.applications.efficientnet import EfficientNetB7 +from keras.src.applications.efficientnet import decode_predictions +from keras.src.applications.efficientnet import preprocess_input diff --git a/keras/api/applications/efficientnet_v2/__init__.py b/keras/api/applications/efficientnet_v2/__init__.py new file mode 100644 index 000000000000..ee85821a1d74 --- /dev/null +++ b/keras/api/applications/efficientnet_v2/__init__.py @@ -0,0 +1,15 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.applications.efficientnet_v2 import EfficientNetV2B0 +from keras.src.applications.efficientnet_v2 import EfficientNetV2B1 +from keras.src.applications.efficientnet_v2 import EfficientNetV2B2 +from keras.src.applications.efficientnet_v2 import EfficientNetV2B3 +from keras.src.applications.efficientnet_v2 import EfficientNetV2L +from keras.src.applications.efficientnet_v2 import EfficientNetV2M +from keras.src.applications.efficientnet_v2 import EfficientNetV2S +from keras.src.applications.efficientnet_v2 import decode_predictions +from keras.src.applications.efficientnet_v2 import preprocess_input diff --git a/keras/api/applications/imagenet_utils/__init__.py b/keras/api/applications/imagenet_utils/__init__.py new file mode 100644 index 000000000000..81a923e55b9e --- /dev/null +++ b/keras/api/applications/imagenet_utils/__init__.py @@ -0,0 +1,8 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.applications.imagenet_utils import decode_predictions +from keras.src.applications.imagenet_utils import preprocess_input diff --git a/keras/api/applications/inception_resnet_v2/__init__.py b/keras/api/applications/inception_resnet_v2/__init__.py new file mode 100644 index 000000000000..b710829bd377 --- /dev/null +++ b/keras/api/applications/inception_resnet_v2/__init__.py @@ -0,0 +1,9 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.applications.inception_resnet_v2 import InceptionResNetV2 +from keras.src.applications.inception_resnet_v2 import decode_predictions +from keras.src.applications.inception_resnet_v2 import preprocess_input diff --git a/keras/api/applications/inception_v3/__init__.py b/keras/api/applications/inception_v3/__init__.py new file mode 100644 index 000000000000..8a2379ca1b13 --- /dev/null +++ b/keras/api/applications/inception_v3/__init__.py @@ -0,0 +1,9 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.applications.inception_v3 import InceptionV3 +from keras.src.applications.inception_v3 import decode_predictions +from keras.src.applications.inception_v3 import preprocess_input diff --git a/keras/api/applications/mobilenet/__init__.py b/keras/api/applications/mobilenet/__init__.py new file mode 100644 index 000000000000..0194cdfd0ac6 --- /dev/null +++ b/keras/api/applications/mobilenet/__init__.py @@ -0,0 +1,9 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.applications.mobilenet import MobileNet +from keras.src.applications.mobilenet import decode_predictions +from keras.src.applications.mobilenet import preprocess_input diff --git a/keras/api/applications/mobilenet_v2/__init__.py b/keras/api/applications/mobilenet_v2/__init__.py new file mode 100644 index 000000000000..ceb0625e3519 --- /dev/null +++ b/keras/api/applications/mobilenet_v2/__init__.py @@ -0,0 +1,9 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.applications.mobilenet_v2 import MobileNetV2 +from keras.src.applications.mobilenet_v2 import decode_predictions +from keras.src.applications.mobilenet_v2 import preprocess_input diff --git a/keras/api/applications/mobilenet_v3/__init__.py b/keras/api/applications/mobilenet_v3/__init__.py new file mode 100644 index 000000000000..c27e6669f0f1 --- /dev/null +++ b/keras/api/applications/mobilenet_v3/__init__.py @@ -0,0 +1,8 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.applications.mobilenet_v3 import decode_predictions +from keras.src.applications.mobilenet_v3 import preprocess_input diff --git a/keras/api/applications/nasnet/__init__.py b/keras/api/applications/nasnet/__init__.py new file mode 100644 index 000000000000..874de61f00ab --- /dev/null +++ b/keras/api/applications/nasnet/__init__.py @@ -0,0 +1,10 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.applications.nasnet import NASNetLarge +from keras.src.applications.nasnet import NASNetMobile +from keras.src.applications.nasnet import decode_predictions +from keras.src.applications.nasnet import preprocess_input diff --git a/keras/api/applications/resnet/__init__.py b/keras/api/applications/resnet/__init__.py new file mode 100644 index 000000000000..5aaa3ee0e5e2 --- /dev/null +++ b/keras/api/applications/resnet/__init__.py @@ -0,0 +1,11 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.applications.resnet import ResNet50 +from keras.src.applications.resnet import ResNet101 +from keras.src.applications.resnet import ResNet152 +from keras.src.applications.resnet import decode_predictions +from keras.src.applications.resnet import preprocess_input diff --git a/keras/api/applications/resnet50/__init__.py b/keras/api/applications/resnet50/__init__.py new file mode 100644 index 000000000000..ac08b5322682 --- /dev/null +++ b/keras/api/applications/resnet50/__init__.py @@ -0,0 +1,9 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.applications.resnet import ResNet50 +from keras.src.applications.resnet import decode_predictions +from keras.src.applications.resnet import preprocess_input diff --git a/keras/api/applications/resnet_v2/__init__.py b/keras/api/applications/resnet_v2/__init__.py new file mode 100644 index 000000000000..273dd3019d85 --- /dev/null +++ b/keras/api/applications/resnet_v2/__init__.py @@ -0,0 +1,11 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.applications.resnet_v2 import ResNet50V2 +from keras.src.applications.resnet_v2 import ResNet101V2 +from keras.src.applications.resnet_v2 import ResNet152V2 +from keras.src.applications.resnet_v2 import decode_predictions +from keras.src.applications.resnet_v2 import preprocess_input diff --git a/keras/api/applications/vgg16/__init__.py b/keras/api/applications/vgg16/__init__.py new file mode 100644 index 000000000000..5a31084a4676 --- /dev/null +++ b/keras/api/applications/vgg16/__init__.py @@ -0,0 +1,9 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.applications.vgg16 import VGG16 +from keras.src.applications.vgg16 import decode_predictions +from keras.src.applications.vgg16 import preprocess_input diff --git a/keras/api/applications/vgg19/__init__.py b/keras/api/applications/vgg19/__init__.py new file mode 100644 index 000000000000..14355514d7cf --- /dev/null +++ b/keras/api/applications/vgg19/__init__.py @@ -0,0 +1,9 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.applications.vgg19 import VGG19 +from keras.src.applications.vgg19 import decode_predictions +from keras.src.applications.vgg19 import preprocess_input diff --git a/keras/api/applications/xception/__init__.py b/keras/api/applications/xception/__init__.py new file mode 100644 index 000000000000..c200dc66df35 --- /dev/null +++ b/keras/api/applications/xception/__init__.py @@ -0,0 +1,9 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.applications.xception import Xception +from keras.src.applications.xception import decode_predictions +from keras.src.applications.xception import preprocess_input diff --git a/keras/api/backend/__init__.py b/keras/api/backend/__init__.py new file mode 100644 index 000000000000..840bde6e4ded --- /dev/null +++ b/keras/api/backend/__init__.py @@ -0,0 +1,20 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.backend.common.dtypes import result_type +from keras.src.backend.common.global_state import clear_session +from keras.src.backend.common.keras_tensor import is_keras_tensor +from keras.src.backend.common.variables import is_float_dtype +from keras.src.backend.common.variables import is_int_dtype +from keras.src.backend.common.variables import standardize_dtype +from keras.src.backend.config import backend +from keras.src.backend.config import epsilon +from keras.src.backend.config import floatx +from keras.src.backend.config import image_data_format +from keras.src.backend.config import set_epsilon +from keras.src.backend.config import set_floatx +from keras.src.backend.config import set_image_data_format +from keras.src.utils.naming import get_uid diff --git a/keras/api/callbacks/__init__.py b/keras/api/callbacks/__init__.py new file mode 100644 index 000000000000..42ba958b9bb3 --- /dev/null +++ b/keras/api/callbacks/__init__.py @@ -0,0 +1,21 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.callbacks.backup_and_restore import BackupAndRestore +from keras.src.callbacks.callback import Callback +from keras.src.callbacks.callback_list import CallbackList +from keras.src.callbacks.csv_logger import CSVLogger +from keras.src.callbacks.early_stopping import EarlyStopping +from keras.src.callbacks.history import History +from keras.src.callbacks.lambda_callback import LambdaCallback +from keras.src.callbacks.learning_rate_scheduler import LearningRateScheduler +from keras.src.callbacks.model_checkpoint import ModelCheckpoint +from keras.src.callbacks.progbar_logger import ProgbarLogger +from keras.src.callbacks.reduce_lr_on_plateau import ReduceLROnPlateau +from keras.src.callbacks.remote_monitor import RemoteMonitor +from keras.src.callbacks.swap_ema_weights import SwapEMAWeights +from keras.src.callbacks.tensorboard import TensorBoard +from keras.src.callbacks.terminate_on_nan import TerminateOnNaN diff --git a/keras/api/config/__init__.py b/keras/api/config/__init__.py new file mode 100644 index 000000000000..13e334cb7c06 --- /dev/null +++ b/keras/api/config/__init__.py @@ -0,0 +1,23 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.backend.config import backend +from keras.src.backend.config import epsilon +from keras.src.backend.config import floatx +from keras.src.backend.config import image_data_format +from keras.src.backend.config import set_epsilon +from keras.src.backend.config import set_floatx +from keras.src.backend.config import set_image_data_format +from keras.src.dtype_policies.dtype_policy import dtype_policy +from keras.src.dtype_policies.dtype_policy import set_dtype_policy +from keras.src.saving.serialization_lib import enable_unsafe_deserialization +from keras.src.utils.backend_utils import set_backend +from keras.src.utils.io_utils import disable_interactive_logging +from keras.src.utils.io_utils import enable_interactive_logging +from keras.src.utils.io_utils import is_interactive_logging_enabled +from keras.src.utils.traceback_utils import disable_traceback_filtering +from keras.src.utils.traceback_utils import enable_traceback_filtering +from keras.src.utils.traceback_utils import is_traceback_filtering_enabled diff --git a/keras/api/constraints/__init__.py b/keras/api/constraints/__init__.py new file mode 100644 index 000000000000..6372e149d3ba --- /dev/null +++ b/keras/api/constraints/__init__.py @@ -0,0 +1,18 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.constraints import deserialize +from keras.src.constraints import get +from keras.src.constraints import serialize +from keras.src.constraints.constraints import Constraint +from keras.src.constraints.constraints import MaxNorm +from keras.src.constraints.constraints import MaxNorm as max_norm +from keras.src.constraints.constraints import MinMaxNorm +from keras.src.constraints.constraints import MinMaxNorm as min_max_norm +from keras.src.constraints.constraints import NonNeg +from keras.src.constraints.constraints import NonNeg as non_neg +from keras.src.constraints.constraints import UnitNorm +from keras.src.constraints.constraints import UnitNorm as unit_norm diff --git a/keras/api/datasets/__init__.py b/keras/api/datasets/__init__.py new file mode 100644 index 000000000000..cf153fefcd4d --- /dev/null +++ b/keras/api/datasets/__init__.py @@ -0,0 +1,14 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.api.datasets import boston_housing +from keras.api.datasets import california_housing +from keras.api.datasets import cifar10 +from keras.api.datasets import cifar100 +from keras.api.datasets import fashion_mnist +from keras.api.datasets import imdb +from keras.api.datasets import mnist +from keras.api.datasets import reuters diff --git a/keras/api/datasets/boston_housing/__init__.py b/keras/api/datasets/boston_housing/__init__.py new file mode 100644 index 000000000000..f5a179db9968 --- /dev/null +++ b/keras/api/datasets/boston_housing/__init__.py @@ -0,0 +1,7 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.datasets.boston_housing import load_data diff --git a/keras/api/datasets/california_housing/__init__.py b/keras/api/datasets/california_housing/__init__.py new file mode 100644 index 000000000000..52b6157dcf28 --- /dev/null +++ b/keras/api/datasets/california_housing/__init__.py @@ -0,0 +1,7 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.datasets.california_housing import load_data diff --git a/keras/api/datasets/cifar10/__init__.py b/keras/api/datasets/cifar10/__init__.py new file mode 100644 index 000000000000..68c72a91b495 --- /dev/null +++ b/keras/api/datasets/cifar10/__init__.py @@ -0,0 +1,7 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.datasets.cifar10 import load_data diff --git a/keras/api/datasets/cifar100/__init__.py b/keras/api/datasets/cifar100/__init__.py new file mode 100644 index 000000000000..e49e67faeecf --- /dev/null +++ b/keras/api/datasets/cifar100/__init__.py @@ -0,0 +1,7 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.datasets.cifar100 import load_data diff --git a/keras/api/datasets/fashion_mnist/__init__.py b/keras/api/datasets/fashion_mnist/__init__.py new file mode 100644 index 000000000000..33512169fc9f --- /dev/null +++ b/keras/api/datasets/fashion_mnist/__init__.py @@ -0,0 +1,7 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.datasets.fashion_mnist import load_data diff --git a/keras/api/datasets/imdb/__init__.py b/keras/api/datasets/imdb/__init__.py new file mode 100644 index 000000000000..6bcddbd11dbe --- /dev/null +++ b/keras/api/datasets/imdb/__init__.py @@ -0,0 +1,8 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.datasets.imdb import get_word_index +from keras.src.datasets.imdb import load_data diff --git a/keras/api/datasets/mnist/__init__.py b/keras/api/datasets/mnist/__init__.py new file mode 100644 index 000000000000..45568c463ba8 --- /dev/null +++ b/keras/api/datasets/mnist/__init__.py @@ -0,0 +1,7 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.datasets.mnist import load_data diff --git a/keras/api/datasets/reuters/__init__.py b/keras/api/datasets/reuters/__init__.py new file mode 100644 index 000000000000..cdc9b68cff93 --- /dev/null +++ b/keras/api/datasets/reuters/__init__.py @@ -0,0 +1,9 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.datasets.reuters import get_label_names +from keras.src.datasets.reuters import get_word_index +from keras.src.datasets.reuters import load_data diff --git a/keras/api/distribution/__init__.py b/keras/api/distribution/__init__.py new file mode 100644 index 000000000000..b56806af9fac --- /dev/null +++ b/keras/api/distribution/__init__.py @@ -0,0 +1,16 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.distribution.distribution_lib import DataParallel +from keras.src.distribution.distribution_lib import DeviceMesh +from keras.src.distribution.distribution_lib import LayoutMap +from keras.src.distribution.distribution_lib import ModelParallel +from keras.src.distribution.distribution_lib import TensorLayout +from keras.src.distribution.distribution_lib import distribute_tensor +from keras.src.distribution.distribution_lib import distribution +from keras.src.distribution.distribution_lib import initialize +from keras.src.distribution.distribution_lib import list_devices +from keras.src.distribution.distribution_lib import set_distribution diff --git a/keras/api/dtype_policies/__init__.py b/keras/api/dtype_policies/__init__.py new file mode 100644 index 000000000000..da8364263a22 --- /dev/null +++ b/keras/api/dtype_policies/__init__.py @@ -0,0 +1,10 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.dtype_policies.dtype_policy import DTypePolicy +from keras.src.dtype_policies.dtype_policy import FloatDTypePolicy +from keras.src.dtype_policies.dtype_policy import QuantizedDTypePolicy +from keras.src.dtype_policies.dtype_policy import QuantizedFloat8DTypePolicy diff --git a/keras/api/export/__init__.py b/keras/api/export/__init__.py new file mode 100644 index 000000000000..68fa60293961 --- /dev/null +++ b/keras/api/export/__init__.py @@ -0,0 +1,7 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.export.export_lib import ExportArchive diff --git a/keras/api/initializers/__init__.py b/keras/api/initializers/__init__.py new file mode 100644 index 000000000000..5819d1b285eb --- /dev/null +++ b/keras/api/initializers/__init__.py @@ -0,0 +1,64 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.initializers import deserialize +from keras.src.initializers import get +from keras.src.initializers import serialize +from keras.src.initializers.constant_initializers import Constant +from keras.src.initializers.constant_initializers import Constant as constant +from keras.src.initializers.constant_initializers import Identity +from keras.src.initializers.constant_initializers import ( + Identity as IdentityInitializer, +) +from keras.src.initializers.constant_initializers import Identity as identity +from keras.src.initializers.constant_initializers import Ones +from keras.src.initializers.constant_initializers import Ones as ones +from keras.src.initializers.constant_initializers import Zeros +from keras.src.initializers.constant_initializers import Zeros as zeros +from keras.src.initializers.initializer import Initializer +from keras.src.initializers.random_initializers import GlorotNormal +from keras.src.initializers.random_initializers import ( + GlorotNormal as glorot_normal, +) +from keras.src.initializers.random_initializers import GlorotUniform +from keras.src.initializers.random_initializers import ( + GlorotUniform as glorot_uniform, +) +from keras.src.initializers.random_initializers import HeNormal +from keras.src.initializers.random_initializers import HeNormal as he_normal +from keras.src.initializers.random_initializers import HeUniform +from keras.src.initializers.random_initializers import HeUniform as he_uniform +from keras.src.initializers.random_initializers import LecunNormal +from keras.src.initializers.random_initializers import ( + LecunNormal as lecun_normal, +) +from keras.src.initializers.random_initializers import LecunUniform +from keras.src.initializers.random_initializers import ( + LecunUniform as lecun_uniform, +) +from keras.src.initializers.random_initializers import OrthogonalInitializer +from keras.src.initializers.random_initializers import ( + OrthogonalInitializer as Orthogonal, +) +from keras.src.initializers.random_initializers import ( + OrthogonalInitializer as orthogonal, +) +from keras.src.initializers.random_initializers import RandomNormal +from keras.src.initializers.random_initializers import ( + RandomNormal as random_normal, +) +from keras.src.initializers.random_initializers import RandomUniform +from keras.src.initializers.random_initializers import ( + RandomUniform as random_uniform, +) +from keras.src.initializers.random_initializers import TruncatedNormal +from keras.src.initializers.random_initializers import ( + TruncatedNormal as truncated_normal, +) +from keras.src.initializers.random_initializers import VarianceScaling +from keras.src.initializers.random_initializers import ( + VarianceScaling as variance_scaling, +) diff --git a/keras/api/layers/__init__.py b/keras/api/layers/__init__.py new file mode 100644 index 000000000000..a4e1bf9a6bbd --- /dev/null +++ b/keras/api/layers/__init__.py @@ -0,0 +1,195 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.export.export_lib import TFSMLayer +from keras.src.layers import deserialize +from keras.src.layers import serialize +from keras.src.layers.activations.activation import Activation +from keras.src.layers.activations.elu import ELU +from keras.src.layers.activations.leaky_relu import LeakyReLU +from keras.src.layers.activations.prelu import PReLU +from keras.src.layers.activations.relu import ReLU +from keras.src.layers.activations.softmax import Softmax +from keras.src.layers.attention.additive_attention import AdditiveAttention +from keras.src.layers.attention.attention import Attention +from keras.src.layers.attention.grouped_query_attention import ( + GroupedQueryAttention as GroupQueryAttention, +) +from keras.src.layers.attention.multi_head_attention import MultiHeadAttention +from keras.src.layers.convolutional.conv1d import Conv1D +from keras.src.layers.convolutional.conv1d import Conv1D as Convolution1D +from keras.src.layers.convolutional.conv1d_transpose import Conv1DTranspose +from keras.src.layers.convolutional.conv1d_transpose import ( + Conv1DTranspose as Convolution1DTranspose, +) +from keras.src.layers.convolutional.conv2d import Conv2D +from keras.src.layers.convolutional.conv2d import Conv2D as Convolution2D +from keras.src.layers.convolutional.conv2d_transpose import Conv2DTranspose +from keras.src.layers.convolutional.conv2d_transpose import ( + Conv2DTranspose as Convolution2DTranspose, +) +from keras.src.layers.convolutional.conv3d import Conv3D +from keras.src.layers.convolutional.conv3d import Conv3D as Convolution3D +from keras.src.layers.convolutional.conv3d_transpose import Conv3DTranspose +from keras.src.layers.convolutional.conv3d_transpose import ( + Conv3DTranspose as Convolution3DTranspose, +) +from keras.src.layers.convolutional.depthwise_conv1d import DepthwiseConv1D +from keras.src.layers.convolutional.depthwise_conv2d import DepthwiseConv2D +from keras.src.layers.convolutional.separable_conv1d import SeparableConv1D +from keras.src.layers.convolutional.separable_conv1d import ( + SeparableConv1D as SeparableConvolution1D, +) +from keras.src.layers.convolutional.separable_conv2d import SeparableConv2D +from keras.src.layers.convolutional.separable_conv2d import ( + SeparableConv2D as SeparableConvolution2D, +) +from keras.src.layers.core.dense import Dense +from keras.src.layers.core.einsum_dense import EinsumDense +from keras.src.layers.core.embedding import Embedding +from keras.src.layers.core.identity import Identity +from keras.src.layers.core.input_layer import Input +from keras.src.layers.core.input_layer import InputLayer +from keras.src.layers.core.lambda_layer import Lambda +from keras.src.layers.core.masking import Masking +from keras.src.layers.core.wrapper import Wrapper +from keras.src.layers.input_spec import InputSpec +from keras.src.layers.layer import Layer +from keras.src.layers.merging.add import Add +from keras.src.layers.merging.add import add +from keras.src.layers.merging.average import Average +from keras.src.layers.merging.average import average +from keras.src.layers.merging.concatenate import Concatenate +from keras.src.layers.merging.concatenate import concatenate +from keras.src.layers.merging.dot import Dot +from keras.src.layers.merging.dot import dot +from keras.src.layers.merging.maximum import Maximum +from keras.src.layers.merging.maximum import maximum +from keras.src.layers.merging.minimum import Minimum +from keras.src.layers.merging.minimum import minimum +from keras.src.layers.merging.multiply import Multiply +from keras.src.layers.merging.multiply import multiply +from keras.src.layers.merging.subtract import Subtract +from keras.src.layers.merging.subtract import subtract +from keras.src.layers.normalization.batch_normalization import ( + BatchNormalization, +) +from keras.src.layers.normalization.group_normalization import ( + GroupNormalization, +) +from keras.src.layers.normalization.layer_normalization import ( + LayerNormalization, +) +from keras.src.layers.normalization.spectral_normalization import ( + SpectralNormalization, +) +from keras.src.layers.normalization.unit_normalization import UnitNormalization +from keras.src.layers.pooling.average_pooling1d import AveragePooling1D +from keras.src.layers.pooling.average_pooling1d import ( + AveragePooling1D as AvgPool1D, +) +from keras.src.layers.pooling.average_pooling2d import AveragePooling2D +from keras.src.layers.pooling.average_pooling2d import ( + AveragePooling2D as AvgPool2D, +) +from keras.src.layers.pooling.average_pooling3d import AveragePooling3D +from keras.src.layers.pooling.average_pooling3d import ( + AveragePooling3D as AvgPool3D, +) +from keras.src.layers.pooling.global_average_pooling1d import ( + GlobalAveragePooling1D, +) +from keras.src.layers.pooling.global_average_pooling1d import ( + GlobalAveragePooling1D as GlobalAvgPool1D, +) +from keras.src.layers.pooling.global_average_pooling2d import ( + GlobalAveragePooling2D, +) +from keras.src.layers.pooling.global_average_pooling2d import ( + GlobalAveragePooling2D as GlobalAvgPool2D, +) +from keras.src.layers.pooling.global_average_pooling3d import ( + GlobalAveragePooling3D, +) +from keras.src.layers.pooling.global_average_pooling3d import ( + GlobalAveragePooling3D as GlobalAvgPool3D, +) +from keras.src.layers.pooling.global_max_pooling1d import GlobalMaxPooling1D +from keras.src.layers.pooling.global_max_pooling1d import ( + GlobalMaxPooling1D as GlobalMaxPool1D, +) +from keras.src.layers.pooling.global_max_pooling2d import GlobalMaxPooling2D +from keras.src.layers.pooling.global_max_pooling2d import ( + GlobalMaxPooling2D as GlobalMaxPool2D, +) +from keras.src.layers.pooling.global_max_pooling3d import GlobalMaxPooling3D +from keras.src.layers.pooling.global_max_pooling3d import ( + GlobalMaxPooling3D as GlobalMaxPool3D, +) +from keras.src.layers.pooling.max_pooling1d import MaxPooling1D +from keras.src.layers.pooling.max_pooling1d import MaxPooling1D as MaxPool1D +from keras.src.layers.pooling.max_pooling2d import MaxPooling2D +from keras.src.layers.pooling.max_pooling2d import MaxPooling2D as MaxPool2D +from keras.src.layers.pooling.max_pooling3d import MaxPooling3D +from keras.src.layers.pooling.max_pooling3d import MaxPooling3D as MaxPool3D +from keras.src.layers.preprocessing.audio_preprocessing import MelSpectrogram +from keras.src.layers.preprocessing.category_encoding import CategoryEncoding +from keras.src.layers.preprocessing.center_crop import CenterCrop +from keras.src.layers.preprocessing.discretization import Discretization +from keras.src.layers.preprocessing.hashed_crossing import HashedCrossing +from keras.src.layers.preprocessing.hashing import Hashing +from keras.src.layers.preprocessing.integer_lookup import IntegerLookup +from keras.src.layers.preprocessing.normalization import Normalization +from keras.src.layers.preprocessing.random_brightness import RandomBrightness +from keras.src.layers.preprocessing.random_contrast import RandomContrast +from keras.src.layers.preprocessing.random_crop import RandomCrop +from keras.src.layers.preprocessing.random_flip import RandomFlip +from keras.src.layers.preprocessing.random_rotation import RandomRotation +from keras.src.layers.preprocessing.random_translation import RandomTranslation +from keras.src.layers.preprocessing.random_zoom import RandomZoom +from keras.src.layers.preprocessing.rescaling import Rescaling +from keras.src.layers.preprocessing.resizing import Resizing +from keras.src.layers.preprocessing.string_lookup import StringLookup +from keras.src.layers.preprocessing.text_vectorization import TextVectorization +from keras.src.layers.regularization.activity_regularization import ( + ActivityRegularization, +) +from keras.src.layers.regularization.alpha_dropout import AlphaDropout +from keras.src.layers.regularization.dropout import Dropout +from keras.src.layers.regularization.gaussian_dropout import GaussianDropout +from keras.src.layers.regularization.gaussian_noise import GaussianNoise +from keras.src.layers.regularization.spatial_dropout import SpatialDropout1D +from keras.src.layers.regularization.spatial_dropout import SpatialDropout2D +from keras.src.layers.regularization.spatial_dropout import SpatialDropout3D +from keras.src.layers.reshaping.cropping1d import Cropping1D +from keras.src.layers.reshaping.cropping2d import Cropping2D +from keras.src.layers.reshaping.cropping3d import Cropping3D +from keras.src.layers.reshaping.flatten import Flatten +from keras.src.layers.reshaping.permute import Permute +from keras.src.layers.reshaping.repeat_vector import RepeatVector +from keras.src.layers.reshaping.reshape import Reshape +from keras.src.layers.reshaping.up_sampling1d import UpSampling1D +from keras.src.layers.reshaping.up_sampling2d import UpSampling2D +from keras.src.layers.reshaping.up_sampling3d import UpSampling3D +from keras.src.layers.reshaping.zero_padding1d import ZeroPadding1D +from keras.src.layers.reshaping.zero_padding2d import ZeroPadding2D +from keras.src.layers.reshaping.zero_padding3d import ZeroPadding3D +from keras.src.layers.rnn.bidirectional import Bidirectional +from keras.src.layers.rnn.conv_lstm1d import ConvLSTM1D +from keras.src.layers.rnn.conv_lstm2d import ConvLSTM2D +from keras.src.layers.rnn.conv_lstm3d import ConvLSTM3D +from keras.src.layers.rnn.gru import GRU +from keras.src.layers.rnn.gru import GRUCell +from keras.src.layers.rnn.lstm import LSTM +from keras.src.layers.rnn.lstm import LSTMCell +from keras.src.layers.rnn.rnn import RNN +from keras.src.layers.rnn.simple_rnn import SimpleRNN +from keras.src.layers.rnn.simple_rnn import SimpleRNNCell +from keras.src.layers.rnn.stacked_rnn_cells import StackedRNNCells +from keras.src.layers.rnn.time_distributed import TimeDistributed +from keras.src.utils.jax_layer import FlaxLayer +from keras.src.utils.jax_layer import JaxLayer +from keras.src.utils.torch_utils import TorchModuleWrapper diff --git a/keras/api/legacy/__init__.py b/keras/api/legacy/__init__.py new file mode 100644 index 000000000000..96347e2c32bf --- /dev/null +++ b/keras/api/legacy/__init__.py @@ -0,0 +1,7 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.api.legacy import saving diff --git a/keras/api/legacy/saving/__init__.py b/keras/api/legacy/saving/__init__.py new file mode 100644 index 000000000000..ac4d2d43dd9a --- /dev/null +++ b/keras/api/legacy/saving/__init__.py @@ -0,0 +1,8 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.legacy.saving.serialization import deserialize_keras_object +from keras.src.legacy.saving.serialization import serialize_keras_object diff --git a/keras/api/losses/__init__.py b/keras/api/losses/__init__.py new file mode 100644 index 000000000000..ecaadddf6b7e --- /dev/null +++ b/keras/api/losses/__init__.py @@ -0,0 +1,50 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.losses import deserialize +from keras.src.losses import get +from keras.src.losses import serialize +from keras.src.losses.loss import Loss +from keras.src.losses.losses import CTC +from keras.src.losses.losses import BinaryCrossentropy +from keras.src.losses.losses import BinaryFocalCrossentropy +from keras.src.losses.losses import CategoricalCrossentropy +from keras.src.losses.losses import CategoricalFocalCrossentropy +from keras.src.losses.losses import CategoricalHinge +from keras.src.losses.losses import CosineSimilarity +from keras.src.losses.losses import Dice +from keras.src.losses.losses import Hinge +from keras.src.losses.losses import Huber +from keras.src.losses.losses import KLDivergence +from keras.src.losses.losses import LogCosh +from keras.src.losses.losses import MeanAbsoluteError +from keras.src.losses.losses import MeanAbsolutePercentageError +from keras.src.losses.losses import MeanSquaredError +from keras.src.losses.losses import MeanSquaredLogarithmicError +from keras.src.losses.losses import Poisson +from keras.src.losses.losses import SparseCategoricalCrossentropy +from keras.src.losses.losses import SquaredHinge +from keras.src.losses.losses import Tversky +from keras.src.losses.losses import binary_crossentropy +from keras.src.losses.losses import binary_focal_crossentropy +from keras.src.losses.losses import categorical_crossentropy +from keras.src.losses.losses import categorical_focal_crossentropy +from keras.src.losses.losses import categorical_hinge +from keras.src.losses.losses import cosine_similarity +from keras.src.losses.losses import ctc +from keras.src.losses.losses import dice +from keras.src.losses.losses import hinge +from keras.src.losses.losses import huber +from keras.src.losses.losses import kl_divergence +from keras.src.losses.losses import log_cosh +from keras.src.losses.losses import mean_absolute_error +from keras.src.losses.losses import mean_absolute_percentage_error +from keras.src.losses.losses import mean_squared_error +from keras.src.losses.losses import mean_squared_logarithmic_error +from keras.src.losses.losses import poisson +from keras.src.losses.losses import sparse_categorical_crossentropy +from keras.src.losses.losses import squared_hinge +from keras.src.losses.losses import tversky diff --git a/keras/api/metrics/__init__.py b/keras/api/metrics/__init__.py new file mode 100644 index 000000000000..dc59b32a46c3 --- /dev/null +++ b/keras/api/metrics/__init__.py @@ -0,0 +1,76 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.losses.losses import binary_crossentropy +from keras.src.losses.losses import binary_focal_crossentropy +from keras.src.losses.losses import categorical_crossentropy +from keras.src.losses.losses import categorical_focal_crossentropy +from keras.src.losses.losses import categorical_hinge +from keras.src.losses.losses import hinge +from keras.src.losses.losses import huber +from keras.src.losses.losses import kl_divergence +from keras.src.losses.losses import log_cosh +from keras.src.losses.losses import mean_absolute_error +from keras.src.losses.losses import mean_absolute_percentage_error +from keras.src.losses.losses import mean_squared_error +from keras.src.losses.losses import mean_squared_logarithmic_error +from keras.src.losses.losses import poisson +from keras.src.losses.losses import sparse_categorical_crossentropy +from keras.src.losses.losses import squared_hinge +from keras.src.metrics import deserialize +from keras.src.metrics import get +from keras.src.metrics import serialize +from keras.src.metrics.accuracy_metrics import Accuracy +from keras.src.metrics.accuracy_metrics import BinaryAccuracy +from keras.src.metrics.accuracy_metrics import CategoricalAccuracy +from keras.src.metrics.accuracy_metrics import SparseCategoricalAccuracy +from keras.src.metrics.accuracy_metrics import SparseTopKCategoricalAccuracy +from keras.src.metrics.accuracy_metrics import TopKCategoricalAccuracy +from keras.src.metrics.accuracy_metrics import binary_accuracy +from keras.src.metrics.accuracy_metrics import categorical_accuracy +from keras.src.metrics.accuracy_metrics import sparse_categorical_accuracy +from keras.src.metrics.accuracy_metrics import sparse_top_k_categorical_accuracy +from keras.src.metrics.accuracy_metrics import top_k_categorical_accuracy +from keras.src.metrics.confusion_metrics import AUC +from keras.src.metrics.confusion_metrics import FalseNegatives +from keras.src.metrics.confusion_metrics import FalsePositives +from keras.src.metrics.confusion_metrics import Precision +from keras.src.metrics.confusion_metrics import PrecisionAtRecall +from keras.src.metrics.confusion_metrics import Recall +from keras.src.metrics.confusion_metrics import RecallAtPrecision +from keras.src.metrics.confusion_metrics import SensitivityAtSpecificity +from keras.src.metrics.confusion_metrics import SpecificityAtSensitivity +from keras.src.metrics.confusion_metrics import TrueNegatives +from keras.src.metrics.confusion_metrics import TruePositives +from keras.src.metrics.f_score_metrics import F1Score +from keras.src.metrics.f_score_metrics import FBetaScore +from keras.src.metrics.hinge_metrics import CategoricalHinge +from keras.src.metrics.hinge_metrics import Hinge +from keras.src.metrics.hinge_metrics import SquaredHinge +from keras.src.metrics.iou_metrics import BinaryIoU +from keras.src.metrics.iou_metrics import IoU +from keras.src.metrics.iou_metrics import MeanIoU +from keras.src.metrics.iou_metrics import OneHotIoU +from keras.src.metrics.iou_metrics import OneHotMeanIoU +from keras.src.metrics.metric import Metric +from keras.src.metrics.probabilistic_metrics import BinaryCrossentropy +from keras.src.metrics.probabilistic_metrics import CategoricalCrossentropy +from keras.src.metrics.probabilistic_metrics import KLDivergence +from keras.src.metrics.probabilistic_metrics import Poisson +from keras.src.metrics.probabilistic_metrics import ( + SparseCategoricalCrossentropy, +) +from keras.src.metrics.reduction_metrics import Mean +from keras.src.metrics.reduction_metrics import MeanMetricWrapper +from keras.src.metrics.reduction_metrics import Sum +from keras.src.metrics.regression_metrics import CosineSimilarity +from keras.src.metrics.regression_metrics import LogCoshError +from keras.src.metrics.regression_metrics import MeanAbsoluteError +from keras.src.metrics.regression_metrics import MeanAbsolutePercentageError +from keras.src.metrics.regression_metrics import MeanSquaredError +from keras.src.metrics.regression_metrics import MeanSquaredLogarithmicError +from keras.src.metrics.regression_metrics import R2Score +from keras.src.metrics.regression_metrics import RootMeanSquaredError diff --git a/keras/api/mixed_precision/__init__.py b/keras/api/mixed_precision/__init__.py new file mode 100644 index 000000000000..85a421651d16 --- /dev/null +++ b/keras/api/mixed_precision/__init__.py @@ -0,0 +1,15 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.dtype_policies.dtype_policy import DTypePolicy +from keras.src.dtype_policies.dtype_policy import DTypePolicy as Policy +from keras.src.dtype_policies.dtype_policy import dtype_policy +from keras.src.dtype_policies.dtype_policy import dtype_policy as global_policy +from keras.src.dtype_policies.dtype_policy import set_dtype_policy +from keras.src.dtype_policies.dtype_policy import ( + set_dtype_policy as set_global_policy, +) +from keras.src.optimizers.loss_scale_optimizer import LossScaleOptimizer diff --git a/keras/api/models/__init__.py b/keras/api/models/__init__.py new file mode 100644 index 000000000000..48760da64791 --- /dev/null +++ b/keras/api/models/__init__.py @@ -0,0 +1,12 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.models.cloning import clone_model +from keras.src.models.model import Model +from keras.src.models.model import model_from_json +from keras.src.models.sequential import Sequential +from keras.src.saving.saving_api import load_model +from keras.src.saving.saving_api import save_model diff --git a/keras/api/ops/__init__.py b/keras/api/ops/__init__.py new file mode 100644 index 000000000000..1253650e9bc0 --- /dev/null +++ b/keras/api/ops/__init__.py @@ -0,0 +1,223 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.api.ops import image +from keras.api.ops import linalg +from keras.api.ops import nn +from keras.api.ops import numpy +from keras.src.ops.core import cast +from keras.src.ops.core import cond +from keras.src.ops.core import convert_to_numpy +from keras.src.ops.core import convert_to_tensor +from keras.src.ops.core import custom_gradient +from keras.src.ops.core import fori_loop +from keras.src.ops.core import is_tensor +from keras.src.ops.core import scatter +from keras.src.ops.core import scatter_update +from keras.src.ops.core import shape +from keras.src.ops.core import slice +from keras.src.ops.core import slice_update +from keras.src.ops.core import stop_gradient +from keras.src.ops.core import unstack +from keras.src.ops.core import vectorized_map +from keras.src.ops.core import while_loop +from keras.src.ops.linalg import cholesky +from keras.src.ops.linalg import det +from keras.src.ops.linalg import eig +from keras.src.ops.linalg import inv +from keras.src.ops.linalg import lu_factor +from keras.src.ops.linalg import norm +from keras.src.ops.linalg import qr +from keras.src.ops.linalg import solve +from keras.src.ops.linalg import solve_triangular +from keras.src.ops.linalg import svd +from keras.src.ops.math import erf +from keras.src.ops.math import erfinv +from keras.src.ops.math import extract_sequences +from keras.src.ops.math import fft +from keras.src.ops.math import fft2 +from keras.src.ops.math import in_top_k +from keras.src.ops.math import irfft +from keras.src.ops.math import istft +from keras.src.ops.math import logsumexp +from keras.src.ops.math import rfft +from keras.src.ops.math import rsqrt +from keras.src.ops.math import segment_max +from keras.src.ops.math import segment_sum +from keras.src.ops.math import stft +from keras.src.ops.math import top_k +from keras.src.ops.nn import average_pool +from keras.src.ops.nn import batch_normalization +from keras.src.ops.nn import binary_crossentropy +from keras.src.ops.nn import categorical_crossentropy +from keras.src.ops.nn import conv +from keras.src.ops.nn import conv_transpose +from keras.src.ops.nn import ctc_loss +from keras.src.ops.nn import depthwise_conv +from keras.src.ops.nn import elu +from keras.src.ops.nn import gelu +from keras.src.ops.nn import hard_sigmoid +from keras.src.ops.nn import hard_silu +from keras.src.ops.nn import hard_silu as hard_swish +from keras.src.ops.nn import leaky_relu +from keras.src.ops.nn import log_sigmoid +from keras.src.ops.nn import log_softmax +from keras.src.ops.nn import max_pool +from keras.src.ops.nn import moments +from keras.src.ops.nn import multi_hot +from keras.src.ops.nn import normalize +from keras.src.ops.nn import one_hot +from keras.src.ops.nn import relu +from keras.src.ops.nn import relu6 +from keras.src.ops.nn import selu +from keras.src.ops.nn import separable_conv +from keras.src.ops.nn import sigmoid +from keras.src.ops.nn import silu +from keras.src.ops.nn import silu as swish +from keras.src.ops.nn import softmax +from keras.src.ops.nn import softplus +from keras.src.ops.nn import softsign +from keras.src.ops.nn import sparse_categorical_crossentropy +from keras.src.ops.numpy import abs +from keras.src.ops.numpy import absolute +from keras.src.ops.numpy import add +from keras.src.ops.numpy import all +from keras.src.ops.numpy import amax +from keras.src.ops.numpy import amin +from keras.src.ops.numpy import any +from keras.src.ops.numpy import append +from keras.src.ops.numpy import arange +from keras.src.ops.numpy import arccos +from keras.src.ops.numpy import arccosh +from keras.src.ops.numpy import arcsin +from keras.src.ops.numpy import arcsinh +from keras.src.ops.numpy import arctan +from keras.src.ops.numpy import arctan2 +from keras.src.ops.numpy import arctanh +from keras.src.ops.numpy import argmax +from keras.src.ops.numpy import argmin +from keras.src.ops.numpy import argsort +from keras.src.ops.numpy import array +from keras.src.ops.numpy import average +from keras.src.ops.numpy import bincount +from keras.src.ops.numpy import broadcast_to +from keras.src.ops.numpy import ceil +from keras.src.ops.numpy import clip +from keras.src.ops.numpy import concatenate +from keras.src.ops.numpy import conj +from keras.src.ops.numpy import conjugate +from keras.src.ops.numpy import copy +from keras.src.ops.numpy import correlate +from keras.src.ops.numpy import cos +from keras.src.ops.numpy import cosh +from keras.src.ops.numpy import count_nonzero +from keras.src.ops.numpy import cross +from keras.src.ops.numpy import cumprod +from keras.src.ops.numpy import cumsum +from keras.src.ops.numpy import diag +from keras.src.ops.numpy import diagonal +from keras.src.ops.numpy import diff +from keras.src.ops.numpy import digitize +from keras.src.ops.numpy import divide +from keras.src.ops.numpy import divide_no_nan +from keras.src.ops.numpy import dot +from keras.src.ops.numpy import einsum +from keras.src.ops.numpy import empty +from keras.src.ops.numpy import equal +from keras.src.ops.numpy import exp +from keras.src.ops.numpy import expand_dims +from keras.src.ops.numpy import expm1 +from keras.src.ops.numpy import eye +from keras.src.ops.numpy import flip +from keras.src.ops.numpy import floor +from keras.src.ops.numpy import floor_divide +from keras.src.ops.numpy import full +from keras.src.ops.numpy import full_like +from keras.src.ops.numpy import get_item +from keras.src.ops.numpy import greater +from keras.src.ops.numpy import greater_equal +from keras.src.ops.numpy import hstack +from keras.src.ops.numpy import identity +from keras.src.ops.numpy import imag +from keras.src.ops.numpy import isclose +from keras.src.ops.numpy import isfinite +from keras.src.ops.numpy import isinf +from keras.src.ops.numpy import isnan +from keras.src.ops.numpy import less +from keras.src.ops.numpy import less_equal +from keras.src.ops.numpy import linspace +from keras.src.ops.numpy import log +from keras.src.ops.numpy import log1p +from keras.src.ops.numpy import log2 +from keras.src.ops.numpy import log10 +from keras.src.ops.numpy import logaddexp +from keras.src.ops.numpy import logical_and +from keras.src.ops.numpy import logical_not +from keras.src.ops.numpy import logical_or +from keras.src.ops.numpy import logical_xor +from keras.src.ops.numpy import logspace +from keras.src.ops.numpy import matmul +from keras.src.ops.numpy import max +from keras.src.ops.numpy import maximum +from keras.src.ops.numpy import mean +from keras.src.ops.numpy import median +from keras.src.ops.numpy import meshgrid +from keras.src.ops.numpy import min +from keras.src.ops.numpy import minimum +from keras.src.ops.numpy import mod +from keras.src.ops.numpy import moveaxis +from keras.src.ops.numpy import multiply +from keras.src.ops.numpy import nan_to_num +from keras.src.ops.numpy import ndim +from keras.src.ops.numpy import negative +from keras.src.ops.numpy import nonzero +from keras.src.ops.numpy import not_equal +from keras.src.ops.numpy import ones +from keras.src.ops.numpy import ones_like +from keras.src.ops.numpy import outer +from keras.src.ops.numpy import pad +from keras.src.ops.numpy import power +from keras.src.ops.numpy import prod +from keras.src.ops.numpy import quantile +from keras.src.ops.numpy import ravel +from keras.src.ops.numpy import real +from keras.src.ops.numpy import reciprocal +from keras.src.ops.numpy import repeat +from keras.src.ops.numpy import reshape +from keras.src.ops.numpy import roll +from keras.src.ops.numpy import round +from keras.src.ops.numpy import sign +from keras.src.ops.numpy import sin +from keras.src.ops.numpy import sinh +from keras.src.ops.numpy import size +from keras.src.ops.numpy import sort +from keras.src.ops.numpy import split +from keras.src.ops.numpy import sqrt +from keras.src.ops.numpy import square +from keras.src.ops.numpy import squeeze +from keras.src.ops.numpy import stack +from keras.src.ops.numpy import std +from keras.src.ops.numpy import subtract +from keras.src.ops.numpy import sum +from keras.src.ops.numpy import swapaxes +from keras.src.ops.numpy import take +from keras.src.ops.numpy import take_along_axis +from keras.src.ops.numpy import tan +from keras.src.ops.numpy import tanh +from keras.src.ops.numpy import tensordot +from keras.src.ops.numpy import tile +from keras.src.ops.numpy import trace +from keras.src.ops.numpy import transpose +from keras.src.ops.numpy import tri +from keras.src.ops.numpy import tril +from keras.src.ops.numpy import triu +from keras.src.ops.numpy import true_divide +from keras.src.ops.numpy import var +from keras.src.ops.numpy import vdot +from keras.src.ops.numpy import vstack +from keras.src.ops.numpy import where +from keras.src.ops.numpy import zeros +from keras.src.ops.numpy import zeros_like diff --git a/keras/api/ops/image/__init__.py b/keras/api/ops/image/__init__.py new file mode 100644 index 000000000000..e4c8464c2195 --- /dev/null +++ b/keras/api/ops/image/__init__.py @@ -0,0 +1,13 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.ops.image import affine_transform +from keras.src.ops.image import crop_images +from keras.src.ops.image import extract_patches +from keras.src.ops.image import map_coordinates +from keras.src.ops.image import pad_images +from keras.src.ops.image import resize +from keras.src.ops.image import rgb_to_grayscale diff --git a/keras/api/ops/linalg/__init__.py b/keras/api/ops/linalg/__init__.py new file mode 100644 index 000000000000..da392d6c2490 --- /dev/null +++ b/keras/api/ops/linalg/__init__.py @@ -0,0 +1,16 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.ops.linalg import cholesky +from keras.src.ops.linalg import det +from keras.src.ops.linalg import eig +from keras.src.ops.linalg import inv +from keras.src.ops.linalg import lu_factor +from keras.src.ops.linalg import norm +from keras.src.ops.linalg import qr +from keras.src.ops.linalg import solve +from keras.src.ops.linalg import solve_triangular +from keras.src.ops.linalg import svd diff --git a/keras/api/ops/nn/__init__.py b/keras/api/ops/nn/__init__.py new file mode 100644 index 000000000000..9452ea18a766 --- /dev/null +++ b/keras/api/ops/nn/__init__.py @@ -0,0 +1,38 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.ops.nn import average_pool +from keras.src.ops.nn import batch_normalization +from keras.src.ops.nn import binary_crossentropy +from keras.src.ops.nn import categorical_crossentropy +from keras.src.ops.nn import conv +from keras.src.ops.nn import conv_transpose +from keras.src.ops.nn import ctc_loss +from keras.src.ops.nn import depthwise_conv +from keras.src.ops.nn import elu +from keras.src.ops.nn import gelu +from keras.src.ops.nn import hard_sigmoid +from keras.src.ops.nn import hard_silu +from keras.src.ops.nn import hard_silu as hard_swish +from keras.src.ops.nn import leaky_relu +from keras.src.ops.nn import log_sigmoid +from keras.src.ops.nn import log_softmax +from keras.src.ops.nn import max_pool +from keras.src.ops.nn import moments +from keras.src.ops.nn import multi_hot +from keras.src.ops.nn import normalize +from keras.src.ops.nn import one_hot +from keras.src.ops.nn import relu +from keras.src.ops.nn import relu6 +from keras.src.ops.nn import selu +from keras.src.ops.nn import separable_conv +from keras.src.ops.nn import sigmoid +from keras.src.ops.nn import silu +from keras.src.ops.nn import silu as swish +from keras.src.ops.nn import softmax +from keras.src.ops.nn import softplus +from keras.src.ops.nn import softsign +from keras.src.ops.nn import sparse_categorical_crossentropy diff --git a/keras/api/ops/numpy/__init__.py b/keras/api/ops/numpy/__init__.py new file mode 100644 index 000000000000..1d5434e40288 --- /dev/null +++ b/keras/api/ops/numpy/__init__.py @@ -0,0 +1,146 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.ops.numpy import abs +from keras.src.ops.numpy import absolute +from keras.src.ops.numpy import add +from keras.src.ops.numpy import all +from keras.src.ops.numpy import amax +from keras.src.ops.numpy import amin +from keras.src.ops.numpy import any +from keras.src.ops.numpy import append +from keras.src.ops.numpy import arange +from keras.src.ops.numpy import arccos +from keras.src.ops.numpy import arccosh +from keras.src.ops.numpy import arcsin +from keras.src.ops.numpy import arcsinh +from keras.src.ops.numpy import arctan +from keras.src.ops.numpy import arctan2 +from keras.src.ops.numpy import arctanh +from keras.src.ops.numpy import argmax +from keras.src.ops.numpy import argmin +from keras.src.ops.numpy import argsort +from keras.src.ops.numpy import array +from keras.src.ops.numpy import average +from keras.src.ops.numpy import bincount +from keras.src.ops.numpy import broadcast_to +from keras.src.ops.numpy import ceil +from keras.src.ops.numpy import clip +from keras.src.ops.numpy import concatenate +from keras.src.ops.numpy import conj +from keras.src.ops.numpy import conjugate +from keras.src.ops.numpy import copy +from keras.src.ops.numpy import correlate +from keras.src.ops.numpy import cos +from keras.src.ops.numpy import cosh +from keras.src.ops.numpy import count_nonzero +from keras.src.ops.numpy import cross +from keras.src.ops.numpy import cumprod +from keras.src.ops.numpy import cumsum +from keras.src.ops.numpy import diag +from keras.src.ops.numpy import diagonal +from keras.src.ops.numpy import diff +from keras.src.ops.numpy import digitize +from keras.src.ops.numpy import divide +from keras.src.ops.numpy import divide_no_nan +from keras.src.ops.numpy import dot +from keras.src.ops.numpy import einsum +from keras.src.ops.numpy import empty +from keras.src.ops.numpy import equal +from keras.src.ops.numpy import exp +from keras.src.ops.numpy import expand_dims +from keras.src.ops.numpy import expm1 +from keras.src.ops.numpy import eye +from keras.src.ops.numpy import flip +from keras.src.ops.numpy import floor +from keras.src.ops.numpy import floor_divide +from keras.src.ops.numpy import full +from keras.src.ops.numpy import full_like +from keras.src.ops.numpy import get_item +from keras.src.ops.numpy import greater +from keras.src.ops.numpy import greater_equal +from keras.src.ops.numpy import hstack +from keras.src.ops.numpy import identity +from keras.src.ops.numpy import imag +from keras.src.ops.numpy import isclose +from keras.src.ops.numpy import isfinite +from keras.src.ops.numpy import isinf +from keras.src.ops.numpy import isnan +from keras.src.ops.numpy import less +from keras.src.ops.numpy import less_equal +from keras.src.ops.numpy import linspace +from keras.src.ops.numpy import log +from keras.src.ops.numpy import log1p +from keras.src.ops.numpy import log2 +from keras.src.ops.numpy import log10 +from keras.src.ops.numpy import logaddexp +from keras.src.ops.numpy import logical_and +from keras.src.ops.numpy import logical_not +from keras.src.ops.numpy import logical_or +from keras.src.ops.numpy import logical_xor +from keras.src.ops.numpy import logspace +from keras.src.ops.numpy import matmul +from keras.src.ops.numpy import max +from keras.src.ops.numpy import maximum +from keras.src.ops.numpy import mean +from keras.src.ops.numpy import median +from keras.src.ops.numpy import meshgrid +from keras.src.ops.numpy import min +from keras.src.ops.numpy import minimum +from keras.src.ops.numpy import mod +from keras.src.ops.numpy import moveaxis +from keras.src.ops.numpy import multiply +from keras.src.ops.numpy import nan_to_num +from keras.src.ops.numpy import ndim +from keras.src.ops.numpy import negative +from keras.src.ops.numpy import nonzero +from keras.src.ops.numpy import not_equal +from keras.src.ops.numpy import ones +from keras.src.ops.numpy import ones_like +from keras.src.ops.numpy import outer +from keras.src.ops.numpy import pad +from keras.src.ops.numpy import power +from keras.src.ops.numpy import prod +from keras.src.ops.numpy import quantile +from keras.src.ops.numpy import ravel +from keras.src.ops.numpy import real +from keras.src.ops.numpy import reciprocal +from keras.src.ops.numpy import repeat +from keras.src.ops.numpy import reshape +from keras.src.ops.numpy import roll +from keras.src.ops.numpy import round +from keras.src.ops.numpy import sign +from keras.src.ops.numpy import sin +from keras.src.ops.numpy import sinh +from keras.src.ops.numpy import size +from keras.src.ops.numpy import sort +from keras.src.ops.numpy import split +from keras.src.ops.numpy import sqrt +from keras.src.ops.numpy import square +from keras.src.ops.numpy import squeeze +from keras.src.ops.numpy import stack +from keras.src.ops.numpy import std +from keras.src.ops.numpy import subtract +from keras.src.ops.numpy import sum +from keras.src.ops.numpy import swapaxes +from keras.src.ops.numpy import take +from keras.src.ops.numpy import take_along_axis +from keras.src.ops.numpy import tan +from keras.src.ops.numpy import tanh +from keras.src.ops.numpy import tensordot +from keras.src.ops.numpy import tile +from keras.src.ops.numpy import trace +from keras.src.ops.numpy import transpose +from keras.src.ops.numpy import tri +from keras.src.ops.numpy import tril +from keras.src.ops.numpy import triu +from keras.src.ops.numpy import true_divide +from keras.src.ops.numpy import var +from keras.src.ops.numpy import vdot +from keras.src.ops.numpy import vstack +from keras.src.ops.numpy import where +from keras.src.ops.numpy import zeros +from keras.src.ops.numpy import zeros_like diff --git a/keras/api/optimizers/__init__.py b/keras/api/optimizers/__init__.py new file mode 100644 index 000000000000..5dab6705b58d --- /dev/null +++ b/keras/api/optimizers/__init__.py @@ -0,0 +1,24 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.api.optimizers import legacy +from keras.api.optimizers import schedules +from keras.src.optimizers import deserialize +from keras.src.optimizers import get +from keras.src.optimizers import serialize +from keras.src.optimizers.adadelta import Adadelta +from keras.src.optimizers.adafactor import Adafactor +from keras.src.optimizers.adagrad import Adagrad +from keras.src.optimizers.adam import Adam +from keras.src.optimizers.adamax import Adamax +from keras.src.optimizers.adamw import AdamW +from keras.src.optimizers.ftrl import Ftrl +from keras.src.optimizers.lion import Lion +from keras.src.optimizers.loss_scale_optimizer import LossScaleOptimizer +from keras.src.optimizers.nadam import Nadam +from keras.src.optimizers.optimizer import Optimizer +from keras.src.optimizers.rmsprop import RMSprop +from keras.src.optimizers.sgd import SGD diff --git a/keras/api/optimizers/legacy/__init__.py b/keras/api/optimizers/legacy/__init__.py new file mode 100644 index 000000000000..bff1a0313630 --- /dev/null +++ b/keras/api/optimizers/legacy/__init__.py @@ -0,0 +1,12 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.optimizers import LegacyOptimizerWarning as Adagrad +from keras.src.optimizers import LegacyOptimizerWarning as Adam +from keras.src.optimizers import LegacyOptimizerWarning as Ftrl +from keras.src.optimizers import LegacyOptimizerWarning as Optimizer +from keras.src.optimizers import LegacyOptimizerWarning as RMSprop +from keras.src.optimizers import LegacyOptimizerWarning as SGD diff --git a/keras/api/optimizers/schedules/__init__.py b/keras/api/optimizers/schedules/__init__.py new file mode 100644 index 000000000000..6178626258ed --- /dev/null +++ b/keras/api/optimizers/schedules/__init__.py @@ -0,0 +1,27 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.optimizers.schedules.learning_rate_schedule import CosineDecay +from keras.src.optimizers.schedules.learning_rate_schedule import ( + CosineDecayRestarts, +) +from keras.src.optimizers.schedules.learning_rate_schedule import ( + ExponentialDecay, +) +from keras.src.optimizers.schedules.learning_rate_schedule import ( + InverseTimeDecay, +) +from keras.src.optimizers.schedules.learning_rate_schedule import ( + LearningRateSchedule, +) +from keras.src.optimizers.schedules.learning_rate_schedule import ( + PiecewiseConstantDecay, +) +from keras.src.optimizers.schedules.learning_rate_schedule import ( + PolynomialDecay, +) +from keras.src.optimizers.schedules.learning_rate_schedule import deserialize +from keras.src.optimizers.schedules.learning_rate_schedule import serialize diff --git a/keras/api/preprocessing/__init__.py b/keras/api/preprocessing/__init__.py new file mode 100644 index 000000000000..c9ed7fd664c2 --- /dev/null +++ b/keras/api/preprocessing/__init__.py @@ -0,0 +1,13 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.api.preprocessing import image +from keras.api.preprocessing import sequence +from keras.src.utils.image_dataset_utils import image_dataset_from_directory +from keras.src.utils.text_dataset_utils import text_dataset_from_directory +from keras.src.utils.timeseries_dataset_utils import ( + timeseries_dataset_from_array, +) diff --git a/keras/api/preprocessing/image/__init__.py b/keras/api/preprocessing/image/__init__.py new file mode 100644 index 000000000000..f68afe8789d5 --- /dev/null +++ b/keras/api/preprocessing/image/__init__.py @@ -0,0 +1,11 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.utils.image_utils import array_to_img +from keras.src.utils.image_utils import img_to_array +from keras.src.utils.image_utils import load_img +from keras.src.utils.image_utils import save_img +from keras.src.utils.image_utils import smart_resize diff --git a/keras/api/preprocessing/sequence/__init__.py b/keras/api/preprocessing/sequence/__init__.py new file mode 100644 index 000000000000..188e01af9c48 --- /dev/null +++ b/keras/api/preprocessing/sequence/__init__.py @@ -0,0 +1,7 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.utils.sequence_utils import pad_sequences diff --git a/keras/api/quantizers/__init__.py b/keras/api/quantizers/__init__.py new file mode 100644 index 000000000000..d8a209bbb623 --- /dev/null +++ b/keras/api/quantizers/__init__.py @@ -0,0 +1,15 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.quantizers import deserialize +from keras.src.quantizers import get +from keras.src.quantizers import serialize +from keras.src.quantizers.quantizers import AbsMaxQuantizer +from keras.src.quantizers.quantizers import Quantizer +from keras.src.quantizers.quantizers import abs_max_quantize +from keras.src.quantizers.quantizers import compute_float8_amax_history +from keras.src.quantizers.quantizers import compute_float8_scale +from keras.src.quantizers.quantizers import quantize_and_dequantize diff --git a/keras/api/random/__init__.py b/keras/api/random/__init__.py new file mode 100644 index 000000000000..faf9c67f3fc4 --- /dev/null +++ b/keras/api/random/__init__.py @@ -0,0 +1,17 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.random.random import beta +from keras.src.random.random import binomial +from keras.src.random.random import categorical +from keras.src.random.random import dropout +from keras.src.random.random import gamma +from keras.src.random.random import normal +from keras.src.random.random import randint +from keras.src.random.random import shuffle +from keras.src.random.random import truncated_normal +from keras.src.random.random import uniform +from keras.src.random.seed_generator import SeedGenerator diff --git a/keras/api/regularizers/__init__.py b/keras/api/regularizers/__init__.py new file mode 100644 index 000000000000..93b51eaa51bd --- /dev/null +++ b/keras/api/regularizers/__init__.py @@ -0,0 +1,20 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.regularizers import deserialize +from keras.src.regularizers import get +from keras.src.regularizers import serialize +from keras.src.regularizers.regularizers import L1 +from keras.src.regularizers.regularizers import L1 as l1 +from keras.src.regularizers.regularizers import L1L2 +from keras.src.regularizers.regularizers import L1L2 as l1_l2 +from keras.src.regularizers.regularizers import L2 +from keras.src.regularizers.regularizers import L2 as l2 +from keras.src.regularizers.regularizers import OrthogonalRegularizer +from keras.src.regularizers.regularizers import ( + OrthogonalRegularizer as orthogonal_regularizer, +) +from keras.src.regularizers.regularizers import Regularizer diff --git a/keras/api/saving/__init__.py b/keras/api/saving/__init__.py new file mode 100644 index 000000000000..2f772922f8d1 --- /dev/null +++ b/keras/api/saving/__init__.py @@ -0,0 +1,20 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.saving.object_registration import CustomObjectScope +from keras.src.saving.object_registration import ( + CustomObjectScope as custom_object_scope, +) +from keras.src.saving.object_registration import get_custom_objects +from keras.src.saving.object_registration import get_registered_name +from keras.src.saving.object_registration import get_registered_object +from keras.src.saving.object_registration import register_keras_serializable +from keras.src.saving.saving_api import load_model +from keras.src.saving.saving_api import load_weights +from keras.src.saving.saving_api import save_model +from keras.src.saving.saving_api import save_weights +from keras.src.saving.serialization_lib import deserialize_keras_object +from keras.src.saving.serialization_lib import serialize_keras_object diff --git a/keras/api/tree/__init__.py b/keras/api/tree/__init__.py new file mode 100644 index 000000000000..388d19a0ec26 --- /dev/null +++ b/keras/api/tree/__init__.py @@ -0,0 +1,15 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.tree.tree_api import assert_same_structure +from keras.src.tree.tree_api import flatten +from keras.src.tree.tree_api import is_nested +from keras.src.tree.tree_api import lists_to_tuples +from keras.src.tree.tree_api import map_shape_structure +from keras.src.tree.tree_api import map_structure +from keras.src.tree.tree_api import map_structure_up_to +from keras.src.tree.tree_api import pack_sequence_as +from keras.src.tree.tree_api import traverse diff --git a/keras/api/utils/__init__.py b/keras/api/utils/__init__.py new file mode 100644 index 000000000000..aab787cc930f --- /dev/null +++ b/keras/api/utils/__init__.py @@ -0,0 +1,54 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.api.utils import legacy +from keras.src.backend.common.global_state import clear_session +from keras.src.backend.common.keras_tensor import is_keras_tensor +from keras.src.backend.common.variables import standardize_dtype +from keras.src.layers.preprocessing.feature_space import FeatureSpace +from keras.src.ops.operation_utils import get_source_inputs +from keras.src.saving.object_registration import CustomObjectScope +from keras.src.saving.object_registration import ( + CustomObjectScope as custom_object_scope, +) +from keras.src.saving.object_registration import get_custom_objects +from keras.src.saving.object_registration import get_registered_name +from keras.src.saving.object_registration import get_registered_object +from keras.src.saving.object_registration import register_keras_serializable +from keras.src.saving.serialization_lib import deserialize_keras_object +from keras.src.saving.serialization_lib import serialize_keras_object +from keras.src.trainers.data_adapters.data_adapter_utils import ( + pack_x_y_sample_weight, +) +from keras.src.trainers.data_adapters.data_adapter_utils import ( + unpack_x_y_sample_weight, +) +from keras.src.trainers.data_adapters.py_dataset_adapter import PyDataset +from keras.src.trainers.data_adapters.py_dataset_adapter import ( + PyDataset as Sequence, +) +from keras.src.utils.audio_dataset_utils import audio_dataset_from_directory +from keras.src.utils.dataset_utils import split_dataset +from keras.src.utils.file_utils import get_file +from keras.src.utils.image_dataset_utils import image_dataset_from_directory +from keras.src.utils.image_utils import array_to_img +from keras.src.utils.image_utils import img_to_array +from keras.src.utils.image_utils import load_img +from keras.src.utils.image_utils import save_img +from keras.src.utils.io_utils import disable_interactive_logging +from keras.src.utils.io_utils import enable_interactive_logging +from keras.src.utils.io_utils import is_interactive_logging_enabled +from keras.src.utils.model_visualization import model_to_dot +from keras.src.utils.model_visualization import plot_model +from keras.src.utils.numerical_utils import normalize +from keras.src.utils.numerical_utils import to_categorical +from keras.src.utils.progbar import Progbar +from keras.src.utils.rng_utils import set_random_seed +from keras.src.utils.sequence_utils import pad_sequences +from keras.src.utils.text_dataset_utils import text_dataset_from_directory +from keras.src.utils.timeseries_dataset_utils import ( + timeseries_dataset_from_array, +) diff --git a/keras/api/utils/legacy/__init__.py b/keras/api/utils/legacy/__init__.py new file mode 100644 index 000000000000..ac4d2d43dd9a --- /dev/null +++ b/keras/api/utils/legacy/__init__.py @@ -0,0 +1,8 @@ +"""DO NOT EDIT. + +This file was autogenerated. Do not edit it by hand, +since your modifications would be overwritten. +""" + +from keras.src.legacy.saving.serialization import deserialize_keras_object +from keras.src.legacy.saving.serialization import serialize_keras_object diff --git a/keras/backend/__init__.py b/keras/backend/__init__.py deleted file mode 100644 index 66e8bcb9ded9..000000000000 --- a/keras/backend/__init__.py +++ /dev/null @@ -1,45 +0,0 @@ -from keras.backend.config import backend - -if backend() == "torch": - # When using the torch backend, - # torch needs to be imported first, otherwise it will segfault - # upon import. - import torch - -from keras.backend.common.dtypes import result_type -from keras.backend.common.keras_tensor import KerasTensor -from keras.backend.common.keras_tensor import any_symbolic_tensors -from keras.backend.common.keras_tensor import is_keras_tensor -from keras.backend.common.name_scope import name_scope -from keras.backend.common.stateless_scope import StatelessScope -from keras.backend.common.stateless_scope import get_stateless_scope -from keras.backend.common.stateless_scope import in_stateless_scope -from keras.backend.common.variables import AutocastScope -from keras.backend.common.variables import get_autocast_scope -from keras.backend.common.variables import is_float_dtype -from keras.backend.common.variables import is_int_dtype -from keras.backend.common.variables import standardize_dtype -from keras.backend.common.variables import standardize_shape -from keras.backend.config import epsilon -from keras.backend.config import floatx -from keras.backend.config import image_data_format -from keras.backend.config import set_epsilon -from keras.backend.config import set_floatx -from keras.backend.config import set_image_data_format -from keras.backend.config import standardize_data_format - -# Import backend functions. -if backend() == "tensorflow": - from keras.backend.tensorflow import * # noqa: F403 -elif backend() == "jax": - from keras.backend.jax import * # noqa: F403 -elif backend() == "torch": - from keras.backend.torch import * # noqa: F403 - - distribution_lib = None -elif backend() == "numpy": - from keras.backend.numpy import * # noqa: F403 - - distribution_lib = None -else: - raise ValueError(f"Unable to import backend : {backend()}") diff --git a/keras/backend/common/__init__.py b/keras/backend/common/__init__.py deleted file mode 100644 index a29e86ce15ab..000000000000 --- a/keras/backend/common/__init__.py +++ /dev/null @@ -1,10 +0,0 @@ -from keras.backend.common import backend_utils -from keras.backend.common.dtypes import result_type -from keras.backend.common.variables import AutocastScope -from keras.backend.common.variables import KerasVariable -from keras.backend.common.variables import get_autocast_scope -from keras.backend.common.variables import is_float_dtype -from keras.backend.common.variables import is_int_dtype -from keras.backend.common.variables import standardize_dtype -from keras.backend.common.variables import standardize_shape -from keras.random import random diff --git a/keras/backend/jax/__init__.py b/keras/backend/jax/__init__.py deleted file mode 100644 index 327bd95dc0de..000000000000 --- a/keras/backend/jax/__init__.py +++ /dev/null @@ -1,25 +0,0 @@ -from keras.backend.jax import core -from keras.backend.jax import distribution_lib -from keras.backend.jax import image -from keras.backend.jax import linalg -from keras.backend.jax import math -from keras.backend.jax import nn -from keras.backend.jax import numpy -from keras.backend.jax import random -from keras.backend.jax.core import SUPPORTS_SPARSE_TENSORS -from keras.backend.jax.core import Variable -from keras.backend.jax.core import cast -from keras.backend.jax.core import compute_output_spec -from keras.backend.jax.core import cond -from keras.backend.jax.core import convert_to_numpy -from keras.backend.jax.core import convert_to_tensor -from keras.backend.jax.core import device_scope -from keras.backend.jax.core import is_tensor -from keras.backend.jax.core import scatter -from keras.backend.jax.core import shape -from keras.backend.jax.core import stop_gradient -from keras.backend.jax.core import vectorized_map -from keras.backend.jax.rnn import cudnn_ok -from keras.backend.jax.rnn import gru -from keras.backend.jax.rnn import lstm -from keras.backend.jax.rnn import rnn diff --git a/keras/backend/numpy/__init__.py b/keras/backend/numpy/__init__.py deleted file mode 100644 index f84ec2e32291..000000000000 --- a/keras/backend/numpy/__init__.py +++ /dev/null @@ -1,21 +0,0 @@ -from keras.backend.numpy import core -from keras.backend.numpy import image -from keras.backend.numpy import linalg -from keras.backend.numpy import math -from keras.backend.numpy import nn -from keras.backend.numpy import numpy -from keras.backend.numpy import random -from keras.backend.numpy.core import SUPPORTS_SPARSE_TENSORS -from keras.backend.numpy.core import Variable -from keras.backend.numpy.core import cast -from keras.backend.numpy.core import compute_output_spec -from keras.backend.numpy.core import cond -from keras.backend.numpy.core import convert_to_numpy -from keras.backend.numpy.core import convert_to_tensor -from keras.backend.numpy.core import is_tensor -from keras.backend.numpy.core import shape -from keras.backend.numpy.core import vectorized_map -from keras.backend.numpy.rnn import cudnn_ok -from keras.backend.numpy.rnn import gru -from keras.backend.numpy.rnn import lstm -from keras.backend.numpy.rnn import rnn diff --git a/keras/backend/tensorflow/__init__.py b/keras/backend/tensorflow/__init__.py deleted file mode 100644 index 2791de505385..000000000000 --- a/keras/backend/tensorflow/__init__.py +++ /dev/null @@ -1,27 +0,0 @@ -from keras.backend.tensorflow import core -from keras.backend.tensorflow import distribution_lib -from keras.backend.tensorflow import image -from keras.backend.tensorflow import linalg -from keras.backend.tensorflow import math -from keras.backend.tensorflow import nn -from keras.backend.tensorflow import numpy -from keras.backend.tensorflow import random -from keras.backend.tensorflow import tensorboard -from keras.backend.tensorflow.core import SUPPORTS_SPARSE_TENSORS -from keras.backend.tensorflow.core import Variable -from keras.backend.tensorflow.core import cast -from keras.backend.tensorflow.core import compute_output_spec -from keras.backend.tensorflow.core import cond -from keras.backend.tensorflow.core import convert_to_numpy -from keras.backend.tensorflow.core import convert_to_tensor -from keras.backend.tensorflow.core import device_scope -from keras.backend.tensorflow.core import is_tensor -from keras.backend.tensorflow.core import name_scope -from keras.backend.tensorflow.core import scatter -from keras.backend.tensorflow.core import shape -from keras.backend.tensorflow.core import stop_gradient -from keras.backend.tensorflow.core import vectorized_map -from keras.backend.tensorflow.rnn import cudnn_ok -from keras.backend.tensorflow.rnn import gru -from keras.backend.tensorflow.rnn import lstm -from keras.backend.tensorflow.rnn import rnn diff --git a/keras/backend/torch/__init__.py b/keras/backend/torch/__init__.py deleted file mode 100644 index 1358104f6f4b..000000000000 --- a/keras/backend/torch/__init__.py +++ /dev/null @@ -1,41 +0,0 @@ -"""Torch backend APIs. - -# Note on device placement - -Torch has a different device placement style compared to TF and JAX. -In short, variables/tensors are not created on GPU by default, -and the GPU cannot directly communicate with the CPU. -To bring Torch behavior in line with TF and JAX automated device placement, -we are doing the following to automate device placement if a GPU is available: - -- Variables are created on GPU. -- Input data will be placed on GPU at the first `keras.layers.Layer` call. -- Tensor creation happens on GPU, e.g., `zeros()` will create a tensor on GPU. -- `convert_to_numpy` will bring the tensor to CPU before converting it to NumPy. -""" - -from keras.backend.torch import core -from keras.backend.torch import image -from keras.backend.torch import linalg -from keras.backend.torch import math -from keras.backend.torch import nn -from keras.backend.torch import numpy -from keras.backend.torch import random -from keras.backend.torch.core import SUPPORTS_SPARSE_TENSORS -from keras.backend.torch.core import Variable -from keras.backend.torch.core import cast -from keras.backend.torch.core import compute_output_spec -from keras.backend.torch.core import cond -from keras.backend.torch.core import convert_to_numpy -from keras.backend.torch.core import convert_to_tensor -from keras.backend.torch.core import device_scope -from keras.backend.torch.core import is_tensor -from keras.backend.torch.core import scatter -from keras.backend.torch.core import shape -from keras.backend.torch.core import stop_gradient -from keras.backend.torch.core import to_torch_dtype -from keras.backend.torch.core import vectorized_map -from keras.backend.torch.rnn import cudnn_ok -from keras.backend.torch.rnn import gru -from keras.backend.torch.rnn import lstm -from keras.backend.torch.rnn import rnn diff --git a/keras/backend/torch/optimizers/__init__.py b/keras/backend/torch/optimizers/__init__.py deleted file mode 100644 index d067b931b625..000000000000 --- a/keras/backend/torch/optimizers/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from keras.backend.torch.optimizers.torch_optimizer import TorchOptimizer diff --git a/keras/backend/torch/optimizers/torch_adamw.py b/keras/backend/torch/optimizers/torch_adamw.py deleted file mode 100644 index c43ed17bce75..000000000000 --- a/keras/backend/torch/optimizers/torch_adamw.py +++ /dev/null @@ -1,6 +0,0 @@ -from keras import optimizers -from keras.backend.torch.optimizers import torch_adam - - -class AdamW(torch_adam.Adam, optimizers.AdamW): - pass diff --git a/keras/callbacks/__init__.py b/keras/callbacks/__init__.py deleted file mode 100644 index 42a6dd4948d9..000000000000 --- a/keras/callbacks/__init__.py +++ /dev/null @@ -1,15 +0,0 @@ -from keras.callbacks.backup_and_restore import BackupAndRestore -from keras.callbacks.callback import Callback -from keras.callbacks.callback_list import CallbackList -from keras.callbacks.csv_logger import CSVLogger -from keras.callbacks.early_stopping import EarlyStopping -from keras.callbacks.history import History -from keras.callbacks.lambda_callback import LambdaCallback -from keras.callbacks.learning_rate_scheduler import LearningRateScheduler -from keras.callbacks.model_checkpoint import ModelCheckpoint -from keras.callbacks.progbar_logger import ProgbarLogger -from keras.callbacks.reduce_lr_on_plateau import ReduceLROnPlateau -from keras.callbacks.remote_monitor import RemoteMonitor -from keras.callbacks.swap_ema_weights import SwapEMAWeights -from keras.callbacks.tensorboard import TensorBoard -from keras.callbacks.terminate_on_nan import TerminateOnNaN diff --git a/keras/datasets/__init__.py b/keras/datasets/__init__.py deleted file mode 100644 index 8fb280792f88..000000000000 --- a/keras/datasets/__init__.py +++ /dev/null @@ -1,10 +0,0 @@ -"""Small NumPy datasets for debugging/testing.""" - -from keras.datasets import boston_housing -from keras.datasets import california_housing -from keras.datasets import cifar10 -from keras.datasets import cifar100 -from keras.datasets import fashion_mnist -from keras.datasets import imdb -from keras.datasets import mnist -from keras.datasets import reuters diff --git a/keras/distribution/__init__.py b/keras/distribution/__init__.py deleted file mode 100644 index 880faf6d8165..000000000000 --- a/keras/distribution/__init__.py +++ /dev/null @@ -1,11 +0,0 @@ -from keras.distribution.distribution_lib import DataParallel -from keras.distribution.distribution_lib import DeviceMesh -from keras.distribution.distribution_lib import Distribution -from keras.distribution.distribution_lib import LayoutMap -from keras.distribution.distribution_lib import ModelParallel -from keras.distribution.distribution_lib import TensorLayout -from keras.distribution.distribution_lib import distribute_tensor -from keras.distribution.distribution_lib import distribution -from keras.distribution.distribution_lib import initialize -from keras.distribution.distribution_lib import list_devices -from keras.distribution.distribution_lib import set_distribution diff --git a/keras/export/__init__.py b/keras/export/__init__.py deleted file mode 100644 index f59fb3dd04d9..000000000000 --- a/keras/export/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from keras.export.export_lib import ExportArchive diff --git a/keras/layers/__init__.py b/keras/layers/__init__.py deleted file mode 100644 index 9f3f95743024..000000000000 --- a/keras/layers/__init__.py +++ /dev/null @@ -1,161 +0,0 @@ -from keras.api_export import keras_export -from keras.layers.activations.activation import Activation -from keras.layers.activations.elu import ELU -from keras.layers.activations.leaky_relu import LeakyReLU -from keras.layers.activations.prelu import PReLU -from keras.layers.activations.relu import ReLU -from keras.layers.activations.softmax import Softmax -from keras.layers.attention.additive_attention import AdditiveAttention -from keras.layers.attention.attention import Attention -from keras.layers.attention.grouped_query_attention import GroupedQueryAttention -from keras.layers.attention.multi_head_attention import MultiHeadAttention -from keras.layers.convolutional.conv1d import Conv1D -from keras.layers.convolutional.conv1d_transpose import Conv1DTranspose -from keras.layers.convolutional.conv2d import Conv2D -from keras.layers.convolutional.conv2d_transpose import Conv2DTranspose -from keras.layers.convolutional.conv3d import Conv3D -from keras.layers.convolutional.conv3d_transpose import Conv3DTranspose -from keras.layers.convolutional.depthwise_conv1d import DepthwiseConv1D -from keras.layers.convolutional.depthwise_conv2d import DepthwiseConv2D -from keras.layers.convolutional.separable_conv1d import SeparableConv1D -from keras.layers.convolutional.separable_conv2d import SeparableConv2D -from keras.layers.core.dense import Dense -from keras.layers.core.einsum_dense import EinsumDense -from keras.layers.core.embedding import Embedding -from keras.layers.core.identity import Identity -from keras.layers.core.input_layer import Input -from keras.layers.core.input_layer import InputLayer -from keras.layers.core.lambda_layer import Lambda -from keras.layers.core.masking import Masking -from keras.layers.core.wrapper import Wrapper -from keras.layers.layer import Layer -from keras.layers.merging.add import Add -from keras.layers.merging.add import add -from keras.layers.merging.average import Average -from keras.layers.merging.average import average -from keras.layers.merging.concatenate import Concatenate -from keras.layers.merging.concatenate import concatenate -from keras.layers.merging.dot import Dot -from keras.layers.merging.dot import dot -from keras.layers.merging.maximum import Maximum -from keras.layers.merging.maximum import maximum -from keras.layers.merging.minimum import Minimum -from keras.layers.merging.minimum import minimum -from keras.layers.merging.multiply import Multiply -from keras.layers.merging.multiply import multiply -from keras.layers.merging.subtract import Subtract -from keras.layers.merging.subtract import subtract -from keras.layers.normalization.batch_normalization import BatchNormalization -from keras.layers.normalization.group_normalization import GroupNormalization -from keras.layers.normalization.layer_normalization import LayerNormalization -from keras.layers.normalization.spectral_normalization import ( - SpectralNormalization, -) -from keras.layers.normalization.unit_normalization import UnitNormalization -from keras.layers.pooling.average_pooling1d import AveragePooling1D -from keras.layers.pooling.average_pooling2d import AveragePooling2D -from keras.layers.pooling.average_pooling3d import AveragePooling3D -from keras.layers.pooling.global_average_pooling1d import GlobalAveragePooling1D -from keras.layers.pooling.global_average_pooling2d import GlobalAveragePooling2D -from keras.layers.pooling.global_average_pooling3d import GlobalAveragePooling3D -from keras.layers.pooling.global_max_pooling1d import GlobalMaxPooling1D -from keras.layers.pooling.global_max_pooling2d import GlobalMaxPooling2D -from keras.layers.pooling.global_max_pooling3d import GlobalMaxPooling3D -from keras.layers.pooling.max_pooling1d import MaxPooling1D -from keras.layers.pooling.max_pooling2d import MaxPooling2D -from keras.layers.pooling.max_pooling3d import MaxPooling3D -from keras.layers.preprocessing.audio_preprocessing import MelSpectrogram -from keras.layers.preprocessing.category_encoding import CategoryEncoding -from keras.layers.preprocessing.center_crop import CenterCrop -from keras.layers.preprocessing.discretization import Discretization -from keras.layers.preprocessing.hashed_crossing import HashedCrossing -from keras.layers.preprocessing.hashing import Hashing -from keras.layers.preprocessing.index_lookup import IndexLookup -from keras.layers.preprocessing.integer_lookup import IntegerLookup -from keras.layers.preprocessing.normalization import Normalization -from keras.layers.preprocessing.random_brightness import RandomBrightness -from keras.layers.preprocessing.random_contrast import RandomContrast -from keras.layers.preprocessing.random_crop import RandomCrop -from keras.layers.preprocessing.random_flip import RandomFlip -from keras.layers.preprocessing.random_rotation import RandomRotation -from keras.layers.preprocessing.random_translation import RandomTranslation -from keras.layers.preprocessing.random_zoom import RandomZoom -from keras.layers.preprocessing.rescaling import Rescaling -from keras.layers.preprocessing.resizing import Resizing -from keras.layers.preprocessing.string_lookup import StringLookup -from keras.layers.preprocessing.text_vectorization import TextVectorization -from keras.layers.regularization.activity_regularization import ( - ActivityRegularization, -) -from keras.layers.regularization.alpha_dropout import AlphaDropout -from keras.layers.regularization.dropout import Dropout -from keras.layers.regularization.gaussian_dropout import GaussianDropout -from keras.layers.regularization.gaussian_noise import GaussianNoise -from keras.layers.regularization.spatial_dropout import SpatialDropout1D -from keras.layers.regularization.spatial_dropout import SpatialDropout2D -from keras.layers.regularization.spatial_dropout import SpatialDropout3D -from keras.layers.reshaping.cropping1d import Cropping1D -from keras.layers.reshaping.cropping2d import Cropping2D -from keras.layers.reshaping.cropping3d import Cropping3D -from keras.layers.reshaping.flatten import Flatten -from keras.layers.reshaping.permute import Permute -from keras.layers.reshaping.repeat_vector import RepeatVector -from keras.layers.reshaping.reshape import Reshape -from keras.layers.reshaping.up_sampling1d import UpSampling1D -from keras.layers.reshaping.up_sampling2d import UpSampling2D -from keras.layers.reshaping.up_sampling3d import UpSampling3D -from keras.layers.reshaping.zero_padding1d import ZeroPadding1D -from keras.layers.reshaping.zero_padding2d import ZeroPadding2D -from keras.layers.reshaping.zero_padding3d import ZeroPadding3D -from keras.layers.rnn.bidirectional import Bidirectional -from keras.layers.rnn.conv_lstm1d import ConvLSTM1D -from keras.layers.rnn.conv_lstm2d import ConvLSTM2D -from keras.layers.rnn.conv_lstm3d import ConvLSTM3D -from keras.layers.rnn.gru import GRU -from keras.layers.rnn.gru import GRUCell -from keras.layers.rnn.lstm import LSTM -from keras.layers.rnn.lstm import LSTMCell -from keras.layers.rnn.rnn import RNN -from keras.layers.rnn.simple_rnn import SimpleRNN -from keras.layers.rnn.simple_rnn import SimpleRNNCell -from keras.layers.rnn.stacked_rnn_cells import StackedRNNCells -from keras.layers.rnn.time_distributed import TimeDistributed -from keras.saving import serialization_lib - - -@keras_export("keras.layers.serialize") -def serialize(layer): - """Returns the layer configuration as a Python dict. - - Args: - layer: A `keras.layers.Layer` instance to serialize. - - Returns: - Python dict which contains the configuration of the layer. - """ - return serialization_lib.serialize_keras_object(layer) - - -@keras_export("keras.layers.deserialize") -def deserialize(config, custom_objects=None): - """Returns a Keras layer object via its configuration. - - Args: - config: A python dict containing a serialized layer configuration. - custom_objects: Optional dictionary mapping names (strings) to custom - objects (classes and functions) to be considered during - deserialization. - - Returns: - A Keras layer instance. - """ - obj = serialization_lib.deserialize_keras_object( - config, - custom_objects=custom_objects, - ) - if not isinstance(obj, Layer): - raise ValueError( - "`keras.layers.deserialize` was passed a `config` object that is " - f"not a `keras.layers.Layer`. Received: {config}" - ) - return obj diff --git a/keras/layers/activations/__init__.py b/keras/layers/activations/__init__.py deleted file mode 100644 index 176e43fe183d..000000000000 --- a/keras/layers/activations/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from keras.layers.activations.elu import ELU -from keras.layers.activations.leaky_relu import LeakyReLU -from keras.layers.activations.prelu import PReLU -from keras.layers.activations.relu import ReLU -from keras.layers.activations.softmax import Softmax diff --git a/keras/models/__init__.py b/keras/models/__init__.py deleted file mode 100644 index 21d90b45f81c..000000000000 --- a/keras/models/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from keras.models.functional import Functional -from keras.models.model import Model -from keras.models.sequential import Sequential diff --git a/keras/ops/__init__.py b/keras/ops/__init__.py deleted file mode 100644 index 3afb84a2b296..000000000000 --- a/keras/ops/__init__.py +++ /dev/null @@ -1,16 +0,0 @@ -# from keras.ops.numpy import Matmul, matmul -# from keras.ops.numpy import Add, add -# from keras.ops.numpy import Multiply, multiply - -from keras.backend import cast -from keras.backend import cond -from keras.backend import is_tensor -from keras.backend import name_scope -from keras.backend import random -from keras.ops import image -from keras.ops import operation_utils -from keras.ops.core import * # noqa: F403 -from keras.ops.linalg import * # noqa: F403 -from keras.ops.math import * # noqa: F403 -from keras.ops.nn import * # noqa: F403 -from keras.ops.numpy import * # noqa: F403 diff --git a/keras/optimizers/schedules/__init__.py b/keras/optimizers/schedules/__init__.py deleted file mode 100644 index 480e06da3a4f..000000000000 --- a/keras/optimizers/schedules/__init__.py +++ /dev/null @@ -1,10 +0,0 @@ -from keras.optimizers.schedules.learning_rate_schedule import CosineDecay -from keras.optimizers.schedules.learning_rate_schedule import ( - CosineDecayRestarts, -) -from keras.optimizers.schedules.learning_rate_schedule import ExponentialDecay -from keras.optimizers.schedules.learning_rate_schedule import InverseTimeDecay -from keras.optimizers.schedules.learning_rate_schedule import ( - PiecewiseConstantDecay, -) -from keras.optimizers.schedules.learning_rate_schedule import PolynomialDecay diff --git a/keras/random/__init__.py b/keras/random/__init__.py deleted file mode 100644 index 292f299ba7fd..000000000000 --- a/keras/random/__init__.py +++ /dev/null @@ -1,9 +0,0 @@ -from keras.random.random import categorical -from keras.random.random import dropout -from keras.random.random import gamma -from keras.random.random import normal -from keras.random.random import randint -from keras.random.random import shuffle -from keras.random.random import truncated_normal -from keras.random.random import uniform -from keras.random.seed_generator import SeedGenerator diff --git a/keras/saving/__init__.py b/keras/saving/__init__.py deleted file mode 100644 index 9f709a3c1ba9..000000000000 --- a/keras/saving/__init__.py +++ /dev/null @@ -1,9 +0,0 @@ -from keras.saving.object_registration import CustomObjectScope -from keras.saving.object_registration import custom_object_scope -from keras.saving.object_registration import get_custom_objects -from keras.saving.object_registration import get_registered_name -from keras.saving.object_registration import get_registered_object -from keras.saving.object_registration import register_keras_serializable -from keras.saving.saving_api import load_model -from keras.saving.serialization_lib import deserialize_keras_object -from keras.saving.serialization_lib import serialize_keras_object diff --git a/keras/src/__init__.py b/keras/src/__init__.py new file mode 100644 index 000000000000..d4cd3c0829a1 --- /dev/null +++ b/keras/src/__init__.py @@ -0,0 +1,19 @@ +from keras.src import activations +from keras.src import applications +from keras.src import backend +from keras.src import constraints +from keras.src import datasets +from keras.src import initializers +from keras.src import layers +from keras.src import models +from keras.src import ops +from keras.src import optimizers +from keras.src import regularizers +from keras.src import utils +from keras.src.backend import KerasTensor +from keras.src.layers import Input +from keras.src.layers import Layer +from keras.src.models import Functional +from keras.src.models import Model +from keras.src.models import Sequential +from keras.src.version import __version__ diff --git a/keras/activations/__init__.py b/keras/src/activations/__init__.py similarity index 68% rename from keras/activations/__init__.py rename to keras/src/activations/__init__.py index 8d9aaa5403eb..13bc6de5dba3 100644 --- a/keras/activations/__init__.py +++ b/keras/src/activations/__init__.py @@ -1,26 +1,26 @@ import types -from keras.activations.activations import elu -from keras.activations.activations import exponential -from keras.activations.activations import gelu -from keras.activations.activations import hard_sigmoid -from keras.activations.activations import hard_silu -from keras.activations.activations import leaky_relu -from keras.activations.activations import linear -from keras.activations.activations import log_softmax -from keras.activations.activations import mish -from keras.activations.activations import relu -from keras.activations.activations import relu6 -from keras.activations.activations import selu -from keras.activations.activations import sigmoid -from keras.activations.activations import silu -from keras.activations.activations import softmax -from keras.activations.activations import softplus -from keras.activations.activations import softsign -from keras.activations.activations import tanh -from keras.api_export import keras_export -from keras.saving import object_registration -from keras.saving import serialization_lib +from keras.src.activations.activations import elu +from keras.src.activations.activations import exponential +from keras.src.activations.activations import gelu +from keras.src.activations.activations import hard_sigmoid +from keras.src.activations.activations import hard_silu +from keras.src.activations.activations import leaky_relu +from keras.src.activations.activations import linear +from keras.src.activations.activations import log_softmax +from keras.src.activations.activations import mish +from keras.src.activations.activations import relu +from keras.src.activations.activations import relu6 +from keras.src.activations.activations import selu +from keras.src.activations.activations import sigmoid +from keras.src.activations.activations import silu +from keras.src.activations.activations import softmax +from keras.src.activations.activations import softplus +from keras.src.activations.activations import softsign +from keras.src.activations.activations import tanh +from keras.src.api_export import keras_export +from keras.src.saving import object_registration +from keras.src.saving import serialization_lib ALL_OBJECTS = { relu, diff --git a/keras/activations/activations.py b/keras/src/activations/activations.py similarity index 99% rename from keras/activations/activations.py rename to keras/src/activations/activations.py index b9617c80c20a..32c3f5855d71 100644 --- a/keras/activations/activations.py +++ b/keras/src/activations/activations.py @@ -1,6 +1,6 @@ -from keras import backend -from keras import ops -from keras.api_export import keras_export +from keras.src import backend +from keras.src import ops +from keras.src.api_export import keras_export @keras_export("keras.activations.relu") diff --git a/keras/activations/activations_test.py b/keras/src/activations/activations_test.py similarity index 99% rename from keras/activations/activations_test.py rename to keras/src/activations/activations_test.py index c752468d34e1..c0ae34a1739f 100644 --- a/keras/activations/activations_test.py +++ b/keras/src/activations/activations_test.py @@ -1,8 +1,8 @@ import numpy as np -from keras import activations -from keras import backend -from keras import testing +from keras.src import activations +from keras.src import backend +from keras.src import testing def _ref_softmax(values): diff --git a/keras/api_export.py b/keras/src/api_export.py similarity index 100% rename from keras/api_export.py rename to keras/src/api_export.py diff --git a/keras/applications/__init__.py b/keras/src/applications/__init__.py similarity index 100% rename from keras/applications/__init__.py rename to keras/src/applications/__init__.py diff --git a/keras/applications/applications_test.py b/keras/src/applications/applications_test.py similarity index 91% rename from keras/applications/applications_test.py rename to keras/src/applications/applications_test.py index 8397cd275f0a..bf0d1cdb82f0 100644 --- a/keras/applications/applications_test.py +++ b/keras/src/applications/applications_test.py @@ -4,26 +4,26 @@ import pytest from absl.testing import parameterized -from keras import backend -from keras import testing -from keras.applications import convnext -from keras.applications import densenet -from keras.applications import efficientnet -from keras.applications import efficientnet_v2 -from keras.applications import inception_resnet_v2 -from keras.applications import inception_v3 -from keras.applications import mobilenet -from keras.applications import mobilenet_v2 -from keras.applications import mobilenet_v3 -from keras.applications import nasnet -from keras.applications import resnet -from keras.applications import resnet_v2 -from keras.applications import vgg16 -from keras.applications import vgg19 -from keras.applications import xception -from keras.saving import serialization_lib -from keras.utils import file_utils -from keras.utils import image_utils +from keras.src import backend +from keras.src import testing +from keras.src.applications import convnext +from keras.src.applications import densenet +from keras.src.applications import efficientnet +from keras.src.applications import efficientnet_v2 +from keras.src.applications import inception_resnet_v2 +from keras.src.applications import inception_v3 +from keras.src.applications import mobilenet +from keras.src.applications import mobilenet_v2 +from keras.src.applications import mobilenet_v3 +from keras.src.applications import nasnet +from keras.src.applications import resnet +from keras.src.applications import resnet_v2 +from keras.src.applications import vgg16 +from keras.src.applications import vgg19 +from keras.src.applications import xception +from keras.src.saving import serialization_lib +from keras.src.utils import file_utils +from keras.src.utils import image_utils try: import PIL diff --git a/keras/applications/convnext.py b/keras/src/applications/convnext.py similarity index 98% rename from keras/applications/convnext.py rename to keras/src/applications/convnext.py index f658a2da1425..2e464be0c7f1 100644 --- a/keras/applications/convnext.py +++ b/keras/src/applications/convnext.py @@ -1,17 +1,17 @@ import numpy as np -from keras import backend -from keras import initializers -from keras import layers -from keras import ops -from keras import random -from keras.api_export import keras_export -from keras.applications import imagenet_utils -from keras.layers.layer import Layer -from keras.models import Functional -from keras.models import Sequential -from keras.ops import operation_utils -from keras.utils import file_utils +from keras.src import backend +from keras.src import initializers +from keras.src import layers +from keras.src import ops +from keras.src import random +from keras.src.api_export import keras_export +from keras.src.applications import imagenet_utils +from keras.src.layers.layer import Layer +from keras.src.models import Functional +from keras.src.models import Sequential +from keras.src.ops import operation_utils +from keras.src.utils import file_utils BASE_WEIGHTS_PATH = ( "https://storage.googleapis.com/tensorflow/keras-applications/convnext/" diff --git a/keras/applications/densenet.py b/keras/src/applications/densenet.py similarity index 98% rename from keras/applications/densenet.py rename to keras/src/applications/densenet.py index d9bca939c986..e7d2accb4d33 100644 --- a/keras/applications/densenet.py +++ b/keras/src/applications/densenet.py @@ -1,10 +1,10 @@ -from keras import backend -from keras import layers -from keras.api_export import keras_export -from keras.applications import imagenet_utils -from keras.models import Functional -from keras.ops import operation_utils -from keras.utils import file_utils +from keras.src import backend +from keras.src import layers +from keras.src.api_export import keras_export +from keras.src.applications import imagenet_utils +from keras.src.models import Functional +from keras.src.ops import operation_utils +from keras.src.utils import file_utils BASE_WEIGHTS_PATH = ( "https://storage.googleapis.com/tensorflow/keras-applications/densenet/" diff --git a/keras/applications/efficientnet.py b/keras/src/applications/efficientnet.py similarity index 98% rename from keras/applications/efficientnet.py rename to keras/src/applications/efficientnet.py index eae679b5b05f..5d61bc904b19 100644 --- a/keras/applications/efficientnet.py +++ b/keras/src/applications/efficientnet.py @@ -1,13 +1,13 @@ import copy import math -from keras import backend -from keras import layers -from keras.api_export import keras_export -from keras.applications import imagenet_utils -from keras.models import Functional -from keras.ops import operation_utils -from keras.utils import file_utils +from keras.src import backend +from keras.src import layers +from keras.src.api_export import keras_export +from keras.src.applications import imagenet_utils +from keras.src.models import Functional +from keras.src.ops import operation_utils +from keras.src.utils import file_utils BASE_WEIGHTS_PATH = "https://storage.googleapis.com/keras-applications/" diff --git a/keras/applications/efficientnet_v2.py b/keras/src/applications/efficientnet_v2.py similarity index 99% rename from keras/applications/efficientnet_v2.py rename to keras/src/applications/efficientnet_v2.py index 2cd7cde1ac80..e9b626081c57 100644 --- a/keras/applications/efficientnet_v2.py +++ b/keras/src/applications/efficientnet_v2.py @@ -1,14 +1,14 @@ import copy import math -from keras import backend -from keras import initializers -from keras import layers -from keras.api_export import keras_export -from keras.applications import imagenet_utils -from keras.models import Functional -from keras.ops import operation_utils -from keras.utils import file_utils +from keras.src import backend +from keras.src import initializers +from keras.src import layers +from keras.src.api_export import keras_export +from keras.src.applications import imagenet_utils +from keras.src.models import Functional +from keras.src.ops import operation_utils +from keras.src.utils import file_utils BASE_WEIGHTS_PATH = "https://storage.googleapis.com/tensorflow/keras-applications/efficientnet_v2/" # noqa: E501 diff --git a/keras/applications/imagenet_utils.py b/keras/src/applications/imagenet_utils.py similarity index 98% rename from keras/applications/imagenet_utils.py rename to keras/src/applications/imagenet_utils.py index 9e3f11bb1b16..f88c0af64d88 100644 --- a/keras/applications/imagenet_utils.py +++ b/keras/src/applications/imagenet_utils.py @@ -3,11 +3,11 @@ import numpy as np -from keras import activations -from keras import backend -from keras import ops -from keras.api_export import keras_export -from keras.utils import file_utils +from keras.src import activations +from keras.src import backend +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.utils import file_utils CLASS_INDEX = None CLASS_INDEX_PATH = ( diff --git a/keras/applications/imagenet_utils_test.py b/keras/src/applications/imagenet_utils_test.py similarity index 98% rename from keras/applications/imagenet_utils_test.py rename to keras/src/applications/imagenet_utils_test.py index dc09911ed44f..861632a9eb05 100644 --- a/keras/applications/imagenet_utils_test.py +++ b/keras/src/applications/imagenet_utils_test.py @@ -3,10 +3,10 @@ from absl.testing import parameterized import keras -from keras import backend -from keras import testing -from keras.applications import imagenet_utils as utils -from keras.dtype_policies.dtype_policy import set_dtype_policy +from keras.src import backend +from keras.src import testing +from keras.src.applications import imagenet_utils as utils +from keras.src.dtype_policies.dtype_policy import set_dtype_policy class TestImageNetUtils(testing.TestCase, parameterized.TestCase): diff --git a/keras/applications/inception_resnet_v2.py b/keras/src/applications/inception_resnet_v2.py similarity index 97% rename from keras/applications/inception_resnet_v2.py rename to keras/src/applications/inception_resnet_v2.py index 46b008324023..ca01832b2d48 100644 --- a/keras/applications/inception_resnet_v2.py +++ b/keras/src/applications/inception_resnet_v2.py @@ -1,11 +1,11 @@ -from keras import backend -from keras import layers -from keras.api_export import keras_export -from keras.applications import imagenet_utils -from keras.layers.layer import Layer -from keras.models import Functional -from keras.ops import operation_utils -from keras.utils import file_utils +from keras.src import backend +from keras.src import layers +from keras.src.api_export import keras_export +from keras.src.applications import imagenet_utils +from keras.src.layers.layer import Layer +from keras.src.models import Functional +from keras.src.ops import operation_utils +from keras.src.utils import file_utils BASE_WEIGHT_URL = ( "https://storage.googleapis.com/tensorflow/" diff --git a/keras/applications/inception_v3.py b/keras/src/applications/inception_v3.py similarity index 98% rename from keras/applications/inception_v3.py rename to keras/src/applications/inception_v3.py index beab281500f3..7eef55b60518 100644 --- a/keras/applications/inception_v3.py +++ b/keras/src/applications/inception_v3.py @@ -1,10 +1,10 @@ -from keras import backend -from keras import layers -from keras.api_export import keras_export -from keras.applications import imagenet_utils -from keras.models import Functional -from keras.ops import operation_utils -from keras.utils import file_utils +from keras.src import backend +from keras.src import layers +from keras.src.api_export import keras_export +from keras.src.applications import imagenet_utils +from keras.src.models import Functional +from keras.src.ops import operation_utils +from keras.src.utils import file_utils WEIGHTS_PATH = ( "https://storage.googleapis.com/tensorflow/keras-applications/" diff --git a/keras/applications/mobilenet.py b/keras/src/applications/mobilenet.py similarity index 98% rename from keras/applications/mobilenet.py rename to keras/src/applications/mobilenet.py index c748c11db617..7c01779405ff 100644 --- a/keras/applications/mobilenet.py +++ b/keras/src/applications/mobilenet.py @@ -1,12 +1,12 @@ import warnings -from keras import backend -from keras import layers -from keras.api_export import keras_export -from keras.applications import imagenet_utils -from keras.models import Functional -from keras.ops import operation_utils -from keras.utils import file_utils +from keras.src import backend +from keras.src import layers +from keras.src.api_export import keras_export +from keras.src.applications import imagenet_utils +from keras.src.models import Functional +from keras.src.ops import operation_utils +from keras.src.utils import file_utils BASE_WEIGHT_PATH = ( "https://storage.googleapis.com/tensorflow/keras-applications/mobilenet/" diff --git a/keras/applications/mobilenet_v2.py b/keras/src/applications/mobilenet_v2.py similarity index 98% rename from keras/applications/mobilenet_v2.py rename to keras/src/applications/mobilenet_v2.py index 96db08c32e6c..3a6a8f0e14db 100644 --- a/keras/applications/mobilenet_v2.py +++ b/keras/src/applications/mobilenet_v2.py @@ -1,12 +1,12 @@ import warnings -from keras import backend -from keras import layers -from keras.api_export import keras_export -from keras.applications import imagenet_utils -from keras.models import Functional -from keras.ops import operation_utils -from keras.utils import file_utils +from keras.src import backend +from keras.src import layers +from keras.src.api_export import keras_export +from keras.src.applications import imagenet_utils +from keras.src.models import Functional +from keras.src.ops import operation_utils +from keras.src.utils import file_utils BASE_WEIGHT_PATH = ( "https://storage.googleapis.com/tensorflow/keras-applications/mobilenet_v2/" diff --git a/keras/applications/mobilenet_v3.py b/keras/src/applications/mobilenet_v3.py similarity index 98% rename from keras/applications/mobilenet_v3.py rename to keras/src/applications/mobilenet_v3.py index 96f27d16a7cc..8f8b1422761b 100644 --- a/keras/applications/mobilenet_v3.py +++ b/keras/src/applications/mobilenet_v3.py @@ -1,12 +1,12 @@ import warnings -from keras import backend -from keras import layers -from keras.api_export import keras_export -from keras.applications import imagenet_utils -from keras.models import Functional -from keras.ops import operation_utils -from keras.utils import file_utils +from keras.src import backend +from keras.src import layers +from keras.src.api_export import keras_export +from keras.src.applications import imagenet_utils +from keras.src.models import Functional +from keras.src.ops import operation_utils +from keras.src.utils import file_utils BASE_WEIGHT_PATH = ( "https://storage.googleapis.com/tensorflow/keras-applications/mobilenet_v3/" diff --git a/keras/applications/nasnet.py b/keras/src/applications/nasnet.py similarity index 99% rename from keras/applications/nasnet.py rename to keras/src/applications/nasnet.py index 4f1271de492c..5769adb14eb9 100644 --- a/keras/applications/nasnet.py +++ b/keras/src/applications/nasnet.py @@ -1,12 +1,12 @@ import warnings -from keras import backend -from keras import layers -from keras.api_export import keras_export -from keras.applications import imagenet_utils -from keras.models import Functional -from keras.ops import operation_utils -from keras.utils import file_utils +from keras.src import backend +from keras.src import layers +from keras.src.api_export import keras_export +from keras.src.applications import imagenet_utils +from keras.src.models import Functional +from keras.src.ops import operation_utils +from keras.src.utils import file_utils BASE_WEIGHTS_PATH = ( "https://storage.googleapis.com/tensorflow/keras-applications/nasnet/" diff --git a/keras/applications/resnet.py b/keras/src/applications/resnet.py similarity index 98% rename from keras/applications/resnet.py rename to keras/src/applications/resnet.py index a5230e2da551..b752be1b208c 100644 --- a/keras/applications/resnet.py +++ b/keras/src/applications/resnet.py @@ -1,10 +1,10 @@ -from keras import backend -from keras import layers -from keras.api_export import keras_export -from keras.applications import imagenet_utils -from keras.models import Functional -from keras.ops import operation_utils -from keras.utils import file_utils +from keras.src import backend +from keras.src import layers +from keras.src.api_export import keras_export +from keras.src.applications import imagenet_utils +from keras.src.models import Functional +from keras.src.ops import operation_utils +from keras.src.utils import file_utils BASE_WEIGHTS_PATH = ( "https://storage.googleapis.com/tensorflow/keras-applications/resnet/" diff --git a/keras/applications/resnet_v2.py b/keras/src/applications/resnet_v2.py similarity index 97% rename from keras/applications/resnet_v2.py rename to keras/src/applications/resnet_v2.py index 21652ffc121f..9bdd09091481 100644 --- a/keras/applications/resnet_v2.py +++ b/keras/src/applications/resnet_v2.py @@ -1,6 +1,6 @@ -from keras.api_export import keras_export -from keras.applications import imagenet_utils -from keras.applications import resnet +from keras.src.api_export import keras_export +from keras.src.applications import imagenet_utils +from keras.src.applications import resnet @keras_export( diff --git a/keras/applications/vgg16.py b/keras/src/applications/vgg16.py similarity index 96% rename from keras/applications/vgg16.py rename to keras/src/applications/vgg16.py index f83983d8001b..af39dffc8df0 100644 --- a/keras/applications/vgg16.py +++ b/keras/src/applications/vgg16.py @@ -1,10 +1,10 @@ -from keras import backend -from keras import layers -from keras.api_export import keras_export -from keras.applications import imagenet_utils -from keras.models import Functional -from keras.ops import operation_utils -from keras.utils import file_utils +from keras.src import backend +from keras.src import layers +from keras.src.api_export import keras_export +from keras.src.applications import imagenet_utils +from keras.src.models import Functional +from keras.src.ops import operation_utils +from keras.src.utils import file_utils WEIGHTS_PATH = ( "https://storage.googleapis.com/tensorflow/keras-applications/" diff --git a/keras/applications/vgg19.py b/keras/src/applications/vgg19.py similarity index 97% rename from keras/applications/vgg19.py rename to keras/src/applications/vgg19.py index 48abebdfd005..0d416523138f 100644 --- a/keras/applications/vgg19.py +++ b/keras/src/applications/vgg19.py @@ -1,10 +1,10 @@ -from keras import backend -from keras import layers -from keras.api_export import keras_export -from keras.applications import imagenet_utils -from keras.models import Functional -from keras.ops import operation_utils -from keras.utils import file_utils +from keras.src import backend +from keras.src import layers +from keras.src.api_export import keras_export +from keras.src.applications import imagenet_utils +from keras.src.models import Functional +from keras.src.ops import operation_utils +from keras.src.utils import file_utils WEIGHTS_PATH = ( "https://storage.googleapis.com/tensorflow/keras-applications/" diff --git a/keras/applications/xception.py b/keras/src/applications/xception.py similarity index 97% rename from keras/applications/xception.py rename to keras/src/applications/xception.py index 93d0a4ac7078..0841321cd413 100644 --- a/keras/applications/xception.py +++ b/keras/src/applications/xception.py @@ -1,10 +1,10 @@ -from keras import backend -from keras import layers -from keras.api_export import keras_export -from keras.applications import imagenet_utils -from keras.models import Functional -from keras.ops import operation_utils -from keras.utils import file_utils +from keras.src import backend +from keras.src import layers +from keras.src.api_export import keras_export +from keras.src.applications import imagenet_utils +from keras.src.models import Functional +from keras.src.ops import operation_utils +from keras.src.utils import file_utils WEIGHTS_PATH = ( "https://storage.googleapis.com/tensorflow/keras-applications/" diff --git a/keras/src/backend/__init__.py b/keras/src/backend/__init__.py new file mode 100644 index 000000000000..5c7fa2235207 --- /dev/null +++ b/keras/src/backend/__init__.py @@ -0,0 +1,45 @@ +from keras.src.backend.config import backend + +if backend() == "torch": + # When using the torch backend, + # torch needs to be imported first, otherwise it will segfault + # upon import. + import torch + +from keras.src.backend.common.dtypes import result_type +from keras.src.backend.common.keras_tensor import KerasTensor +from keras.src.backend.common.keras_tensor import any_symbolic_tensors +from keras.src.backend.common.keras_tensor import is_keras_tensor +from keras.src.backend.common.name_scope import name_scope +from keras.src.backend.common.stateless_scope import StatelessScope +from keras.src.backend.common.stateless_scope import get_stateless_scope +from keras.src.backend.common.stateless_scope import in_stateless_scope +from keras.src.backend.common.variables import AutocastScope +from keras.src.backend.common.variables import get_autocast_scope +from keras.src.backend.common.variables import is_float_dtype +from keras.src.backend.common.variables import is_int_dtype +from keras.src.backend.common.variables import standardize_dtype +from keras.src.backend.common.variables import standardize_shape +from keras.src.backend.config import epsilon +from keras.src.backend.config import floatx +from keras.src.backend.config import image_data_format +from keras.src.backend.config import set_epsilon +from keras.src.backend.config import set_floatx +from keras.src.backend.config import set_image_data_format +from keras.src.backend.config import standardize_data_format + +# Import backend functions. +if backend() == "tensorflow": + from keras.src.backend.tensorflow import * # noqa: F403 +elif backend() == "jax": + from keras.src.backend.jax import * # noqa: F403 +elif backend() == "torch": + from keras.src.backend.torch import * # noqa: F403 + + distribution_lib = None +elif backend() == "numpy": + from keras.src.backend.numpy import * # noqa: F403 + + distribution_lib = None +else: + raise ValueError(f"Unable to import backend : {backend()}") diff --git a/keras/src/backend/common/__init__.py b/keras/src/backend/common/__init__.py new file mode 100644 index 000000000000..fabac625b5a6 --- /dev/null +++ b/keras/src/backend/common/__init__.py @@ -0,0 +1,10 @@ +from keras.src.backend.common import backend_utils +from keras.src.backend.common.dtypes import result_type +from keras.src.backend.common.variables import AutocastScope +from keras.src.backend.common.variables import KerasVariable +from keras.src.backend.common.variables import get_autocast_scope +from keras.src.backend.common.variables import is_float_dtype +from keras.src.backend.common.variables import is_int_dtype +from keras.src.backend.common.variables import standardize_dtype +from keras.src.backend.common.variables import standardize_shape +from keras.src.random import random diff --git a/keras/backend/common/backend_utils.py b/keras/src/backend/common/backend_utils.py similarity index 100% rename from keras/backend/common/backend_utils.py rename to keras/src/backend/common/backend_utils.py diff --git a/keras/backend/common/backend_utils_test.py b/keras/src/backend/common/backend_utils_test.py similarity index 96% rename from keras/backend/common/backend_utils_test.py rename to keras/src/backend/common/backend_utils_test.py index 3c737f4baa14..68b0bbddda0c 100644 --- a/keras/backend/common/backend_utils_test.py +++ b/keras/src/backend/common/backend_utils_test.py @@ -1,19 +1,19 @@ -from keras.backend.common.backend_utils import ( +from keras.src.backend.common.backend_utils import ( _convert_conv_tranpose_padding_args_from_keras_to_jax, ) -from keras.backend.common.backend_utils import ( +from keras.src.backend.common.backend_utils import ( _convert_conv_tranpose_padding_args_from_keras_to_torch, ) -from keras.backend.common.backend_utils import ( +from keras.src.backend.common.backend_utils import ( _get_output_shape_given_tf_padding, ) -from keras.backend.common.backend_utils import ( +from keras.src.backend.common.backend_utils import ( compute_conv_transpose_padding_args_for_jax, ) -from keras.backend.common.backend_utils import ( +from keras.src.backend.common.backend_utils import ( compute_conv_transpose_padding_args_for_torch, ) -from keras.testing import test_case +from keras.src.testing import test_case class ConvertConvTransposePaddingArgsJAXTest(test_case.TestCase): diff --git a/keras/backend/common/compute_output_spec_test.py b/keras/src/backend/common/compute_output_spec_test.py similarity index 97% rename from keras/backend/common/compute_output_spec_test.py rename to keras/src/backend/common/compute_output_spec_test.py index def1a942cdc5..8ee856f4d31b 100644 --- a/keras/backend/common/compute_output_spec_test.py +++ b/keras/src/backend/common/compute_output_spec_test.py @@ -1,7 +1,7 @@ import pytest -from keras import backend -from keras import testing +from keras.src import backend +from keras.src import testing def example_fn(x): diff --git a/keras/backend/common/dtypes.py b/keras/src/backend/common/dtypes.py similarity index 98% rename from keras/backend/common/dtypes.py rename to keras/src/backend/common/dtypes.py index dcb922db2156..87253c87b8c4 100644 --- a/keras/backend/common/dtypes.py +++ b/keras/src/backend/common/dtypes.py @@ -1,8 +1,8 @@ import functools -from keras.api_export import keras_export -from keras.backend import config -from keras.backend.common.variables import standardize_dtype +from keras.src.api_export import keras_export +from keras.src.backend import config +from keras.src.backend.common.variables import standardize_dtype BOOL_TYPES = ("bool",) INT_TYPES = ( diff --git a/keras/backend/common/dtypes_test.py b/keras/src/backend/common/dtypes_test.py similarity index 96% rename from keras/backend/common/dtypes_test.py rename to keras/src/backend/common/dtypes_test.py index 200e4fa2b9e3..bc6dbd74bbbe 100644 --- a/keras/backend/common/dtypes_test.py +++ b/keras/src/backend/common/dtypes_test.py @@ -2,18 +2,18 @@ from absl.testing import parameterized -from keras import backend -from keras import ops -from keras.backend.common import dtypes -from keras.testing import test_case -from keras.testing.test_utils import named_product +from keras.src import backend +from keras.src import ops +from keras.src.backend.common import dtypes +from keras.src.testing import test_case +from keras.src.testing.test_utils import named_product class DtypesTest(test_case.TestCase, parameterized.TestCase): """Test the dtype to verify that the behavior matches JAX.""" if backend.backend() == "torch": - from keras.backend.torch.core import to_torch_dtype + from keras.src.backend.torch.core import to_torch_dtype # TODO: torch doesn't support uint64. ALL_DTYPES = [] diff --git a/keras/backend/common/global_state.py b/keras/src/backend/common/global_state.py similarity index 95% rename from keras/backend/common/global_state.py rename to keras/src/backend/common/global_state.py index c0ed8c1e5a51..8ecf11b95056 100644 --- a/keras/backend/common/global_state.py +++ b/keras/src/backend/common/global_state.py @@ -1,8 +1,8 @@ import gc import threading -from keras import backend -from keras.api_export import keras_export +from keras.src import backend +from keras.src.api_export import keras_export GLOBAL_STATE_TRACKER = threading.local() GLOBAL_SETTINGS_TRACKER = threading.local() @@ -77,7 +77,7 @@ def clear_session(free_memory=True): GLOBAL_SETTINGS_TRACKER = threading.local() if backend.backend() == "tensorflow": - from keras.utils.module_utils import tensorflow as tf + from keras.src.utils.module_utils import tensorflow as tf tf.compat.v1.reset_default_graph() if tf.executing_eagerly(): diff --git a/keras/backend/common/global_state_test.py b/keras/src/backend/common/global_state_test.py similarity index 72% rename from keras/backend/common/global_state_test.py rename to keras/src/backend/common/global_state_test.py index 880886a7d98b..5f2a05ba15a4 100644 --- a/keras/backend/common/global_state_test.py +++ b/keras/src/backend/common/global_state_test.py @@ -1,6 +1,6 @@ -from keras.backend.common import global_state -from keras.testing import test_case -from keras.utils.naming import auto_name +from keras.src.backend.common import global_state +from keras.src.testing import test_case +from keras.src.utils.naming import auto_name class GlobalStateTest(test_case.TestCase): diff --git a/keras/backend/common/keras_tensor.py b/keras/src/backend/common/keras_tensor.py similarity index 85% rename from keras/backend/common/keras_tensor.py rename to keras/src/backend/common/keras_tensor.py index af030407f231..2876a57cffb4 100644 --- a/keras/backend/common/keras_tensor.py +++ b/keras/src/backend/common/keras_tensor.py @@ -1,6 +1,6 @@ -from keras import tree -from keras.api_export import keras_export -from keras.utils.naming import auto_name +from keras.src import tree +from keras.src.api_export import keras_export +from keras.src.utils.naming import auto_name @keras_export("keras.KerasTensor") @@ -35,7 +35,7 @@ def __init__( record_history=True, name=None, ): - from keras import backend + from keras.src import backend self.shape = backend.standardize_shape(shape) self.dtype = backend.standardize_dtype(dtype) @@ -48,12 +48,12 @@ def ndim(self): return len(self.shape) def reshape(self, newshape): - from keras import ops + from keras.src import ops return ops.Reshape(newshape)(self) def squeeze(self, axis=None): - from keras import ops + from keras.src import ops return ops.Squeeze(axis)(self) @@ -125,167 +125,167 @@ def __bool__(self): raise TypeError("A symbolic KerasTensor cannot be used as a boolean.") def __add__(self, other): - from keras import ops + from keras.src import ops return ops.Add().symbolic_call(self, other) def __radd__(self, other): - from keras import ops + from keras.src import ops return ops.Add().symbolic_call(other, self) def __sub__(self, other): - from keras import ops + from keras.src import ops return ops.Subtract().symbolic_call(self, other) def __rsub__(self, other): - from keras import ops + from keras.src import ops return ops.Subtract().symbolic_call(other, self) def __mul__(self, other): - from keras import ops + from keras.src import ops return ops.Multiply().symbolic_call(self, other) def __rmul__(self, other): - from keras import ops + from keras.src import ops return ops.Multiply().symbolic_call(other, self) def __matmul__(self, other): - from keras import ops + from keras.src import ops return ops.Matmul().symbolic_call(self, other) def __rmatmul__(self, other): - from keras import ops + from keras.src import ops return ops.Matmul().symbolic_call(other, self) def __div__(self, other): - from keras import ops + from keras.src import ops return ops.Divide().symbolic_call(self, other) def __rdiv__(self, other): - from keras import ops + from keras.src import ops return ops.Divide().symbolic_call(other, self) def __truediv__(self, other): - from keras import ops + from keras.src import ops return ops.TrueDivide().symbolic_call(self, other) def __rtruediv__(self, other): - from keras import ops + from keras.src import ops return ops.TrueDivide().symbolic_call(other, self) def __neg__(self): - from keras import ops + from keras.src import ops return ops.Negative().symbolic_call(self) def __abs__(self): - from keras import ops + from keras.src import ops return ops.Absolute().symbolic_call(self) def __pow__(self, other): - from keras import ops + from keras.src import ops return ops.Power().symbolic_call(self, other) def __rpow__(self, other): - from keras import ops + from keras.src import ops return ops.Power().symbolic_call(other, self) def __floordiv__(self, other): - from keras import ops + from keras.src import ops return ops.FloorDivide().symbolic_call(self, other) def __rfloordiv__(self, other): - from keras import ops + from keras.src import ops return ops.FloorDivide().symbolic_call(other, self) def __mod__(self, other): - from keras import ops + from keras.src import ops return ops.Mod().symbolic_call(self, other) def __rmod__(self, other): - from keras import ops + from keras.src import ops return ops.Mod().symbolic_call(other, self) def __lt__(self, other): - from keras import ops + from keras.src import ops return ops.Less().symbolic_call(self, other) def __le__(self, other): - from keras import ops + from keras.src import ops return ops.LessEqual().symbolic_call(self, other) def __gt__(self, other): - from keras import ops + from keras.src import ops return ops.Greater().symbolic_call(self, other) def __ge__(self, other): - from keras import ops + from keras.src import ops return ops.GreaterEqual().symbolic_call(self, other) def __ne__(self, other): - from keras import ops + from keras.src import ops return ops.NotEqual().symbolic_call(self, other) def __and__(self, other): - from keras import ops + from keras.src import ops return ops.LogicalAnd().symbolic_call(self, other) def __rand__(self, other): - from keras import ops + from keras.src import ops return ops.LogicalAnd().symbolic_call(other, self) def __or__(self, other): - from keras import ops + from keras.src import ops return ops.LogicalOr().symbolic_call(self, other) def __ror__(self, other): - from keras import ops + from keras.src import ops return ops.LogicalOr().symbolic_call(other, self) def __invert__(self): - from keras import ops + from keras.src import ops return ops.LogicalNot().symbolic_call(self) def __xor__(self, other): - from keras import ops + from keras.src import ops return ops.LogicalXor().symbolic_call(self, other) def __rxor__(self, other): - from keras import ops + from keras.src import ops return ops.LogicalXor().symbolic_call(other, self) def __getitem__(self, key): - from keras import ops + from keras.src import ops return ops.GetItem().symbolic_call(self, key) diff --git a/keras/backend/common/keras_tensor_test.py b/keras/src/backend/common/keras_tensor_test.py similarity index 88% rename from keras/backend/common/keras_tensor_test.py rename to keras/src/backend/common/keras_tensor_test.py index 5b63f4961ce2..ca6391024f87 100644 --- a/keras/backend/common/keras_tensor_test.py +++ b/keras/src/backend/common/keras_tensor_test.py @@ -4,10 +4,10 @@ import numpy as np import tensorflow as tf -from keras import backend -from keras import ops -from keras import testing -from keras.backend.common import keras_tensor +from keras.src import backend +from keras.src import ops +from keras.src import testing +from keras.src.backend.common import keras_tensor class KerasTensorTest(testing.TestCase): @@ -80,7 +80,7 @@ def test_is_keras_tensor(self): y = np.array([1, 2, 3]) self.assertFalse(keras_tensor.is_keras_tensor(y)) - @patch("keras.ops.Absolute.symbolic_call") + @patch("keras.src.ops.Absolute.symbolic_call") def test_abs_method(self, mock_symbolic_call): mock_tensor = Mock() mock_symbolic_call.return_value = mock_tensor @@ -89,51 +89,51 @@ def test_abs_method(self, mock_symbolic_call): mock_symbolic_call.assert_called_once_with(x) self.assertEqual(abs_x, mock_tensor) - @patch("keras.ops.Negative.symbolic_call") + @patch("keras.src.ops.Negative.symbolic_call") def test_neg_method(self, mock_method): self._test_unary_op_method(mock_method, lambda x: -x) - @patch("keras.ops.Subtract.symbolic_call") + @patch("keras.src.ops.Subtract.symbolic_call") def test_sub_method(self, mock_method): y = Mock() self._test_binary_op_method(mock_method, y, lambda x, y: x - y) - @patch("keras.ops.Multiply.symbolic_call") + @patch("keras.src.ops.Multiply.symbolic_call") def test_mul_method(self, mock_method): y = Mock() self._test_binary_op_method(mock_method, y, lambda x, y: x * y) - @patch("keras.ops.Matmul.symbolic_call") + @patch("keras.src.ops.Matmul.symbolic_call") def test_matmul_method(self, mock_method): y = Mock() self._test_binary_op_method(mock_method, y, lambda x, y: x @ y) - @patch("keras.ops.Power.symbolic_call") + @patch("keras.src.ops.Power.symbolic_call") def test_pow_method(self, mock_method): y = Mock() self._test_binary_op_method(mock_method, y, lambda x, y: x**y) - @patch("keras.ops.Mod.symbolic_call") + @patch("keras.src.ops.Mod.symbolic_call") def test_mod_method(self, mock_method): y = Mock() self._test_binary_op_method(mock_method, y, lambda x, y: x % y) - @patch("keras.ops.Less.symbolic_call") + @patch("keras.src.ops.Less.symbolic_call") def test_lt_method(self, mock_method): y = Mock() self._test_binary_op_method(mock_method, y, lambda x, y: x < y) - @patch("keras.ops.LogicalAnd.symbolic_call") + @patch("keras.src.ops.LogicalAnd.symbolic_call") def test_and_method(self, mock_method): y = Mock() self._test_binary_op_method(mock_method, y, lambda x, y: x & y) - @patch("keras.ops.LogicalOr.symbolic_call") + @patch("keras.src.ops.LogicalOr.symbolic_call") def test_or_method(self, mock_method): y = Mock() self._test_binary_op_method(mock_method, y, lambda x, y: x | y) - @patch("keras.ops.GetItem.symbolic_call") + @patch("keras.src.ops.GetItem.symbolic_call") def test_getitem_method(self, mock_method): y = Mock() self._test_binary_op_method(mock_method, y, lambda x, y: x[y]) @@ -154,7 +154,7 @@ def _test_binary_op_method(self, mock_method, other, operator): mock_method.assert_called_once_with(x, other) self.assertEqual(result, mock_tensor) - @patch("keras.ops.Add.symbolic_call") + @patch("keras.src.ops.Add.symbolic_call") def test_radd_method(self, mock_symbolic_call): """Test __radd__ method""" mock_tensor = Mock() @@ -165,7 +165,7 @@ def test_radd_method(self, mock_symbolic_call): mock_symbolic_call.assert_called_once_with(y, x) self.assertEqual(result, mock_tensor) - @patch("keras.ops.Subtract.symbolic_call") + @patch("keras.src.ops.Subtract.symbolic_call") def test_rsub_method(self, mock_symbolic_call): """Test __rsub__ method""" mock_tensor = Mock() @@ -176,7 +176,7 @@ def test_rsub_method(self, mock_symbolic_call): mock_symbolic_call.assert_called_once_with(y, x) self.assertEqual(result, mock_tensor) - @patch("keras.ops.Multiply.symbolic_call") + @patch("keras.src.ops.Multiply.symbolic_call") def test_rmul_method(self, mock_symbolic_call): """Test __rmul__ method""" mock_tensor = Mock() @@ -187,7 +187,7 @@ def test_rmul_method(self, mock_symbolic_call): mock_symbolic_call.assert_called_once_with(y, x) self.assertEqual(result, mock_tensor) - @patch("keras.ops.Matmul.symbolic_call") + @patch("keras.src.ops.Matmul.symbolic_call") def test_rmatmul_method(self, mock_symbolic_call): """Test __rmatmul__ method""" mock_tensor = Mock() @@ -198,7 +198,7 @@ def test_rmatmul_method(self, mock_symbolic_call): mock_symbolic_call.assert_called_once_with(y, x) self.assertEqual(result, mock_tensor) - @patch("keras.ops.Power.symbolic_call") + @patch("keras.src.ops.Power.symbolic_call") def test_rpow_method(self, mock_symbolic_call): """Test __rpow__ method""" mock_tensor = Mock() @@ -209,7 +209,7 @@ def test_rpow_method(self, mock_symbolic_call): mock_symbolic_call.assert_called_once_with(y, x) self.assertEqual(result, mock_tensor) - @patch("keras.ops.FloorDivide.symbolic_call") + @patch("keras.src.ops.FloorDivide.symbolic_call") def test_floordiv_method(self, mock_symbolic_call): """Test __floordiv__ method""" mock_tensor = Mock() @@ -220,7 +220,7 @@ def test_floordiv_method(self, mock_symbolic_call): mock_symbolic_call.assert_called_once_with(x, y) self.assertEqual(result, mock_tensor) - @patch("keras.ops.FloorDivide.symbolic_call") + @patch("keras.src.ops.FloorDivide.symbolic_call") def test_rfloordiv_method(self, mock_symbolic_call): """Test __rfloordiv__ method""" mock_tensor = Mock() @@ -231,7 +231,7 @@ def test_rfloordiv_method(self, mock_symbolic_call): mock_symbolic_call.assert_called_once_with(y, x) self.assertEqual(result, mock_tensor) - @patch("keras.ops.Mod.symbolic_call") + @patch("keras.src.ops.Mod.symbolic_call") def test_rmod_method(self, mock_symbolic_call): """Test __rmod__ method""" mock_tensor = Mock() @@ -242,7 +242,7 @@ def test_rmod_method(self, mock_symbolic_call): mock_symbolic_call.assert_called_once_with(y, x) self.assertEqual(result, mock_tensor) - @patch("keras.ops.LessEqual.symbolic_call") + @patch("keras.src.ops.LessEqual.symbolic_call") def test_le_method(self, mock_symbolic_call): """Test __le__ method""" mock_tensor = Mock() @@ -253,7 +253,7 @@ def test_le_method(self, mock_symbolic_call): mock_symbolic_call.assert_called_once_with(x, y) self.assertEqual(result, mock_tensor) - @patch("keras.ops.Greater.symbolic_call") + @patch("keras.src.ops.Greater.symbolic_call") def test_gt_method(self, mock_symbolic_call): """Test __gt__ method""" mock_tensor = Mock() @@ -264,7 +264,7 @@ def test_gt_method(self, mock_symbolic_call): mock_symbolic_call.assert_called_once_with(x, y) self.assertEqual(result, mock_tensor) - @patch("keras.ops.GreaterEqual.symbolic_call") + @patch("keras.src.ops.GreaterEqual.symbolic_call") def test_ge_method(self, mock_symbolic_call): """Test __ge__ method""" mock_tensor = Mock() @@ -275,7 +275,7 @@ def test_ge_method(self, mock_symbolic_call): mock_symbolic_call.assert_called_once_with(x, y) self.assertEqual(result, mock_tensor) - @patch("keras.ops.NotEqual.symbolic_call") + @patch("keras.src.ops.NotEqual.symbolic_call") def test_ne_method(self, mock_symbolic_call): """Test __ne__ method""" mock_tensor = Mock() @@ -286,7 +286,7 @@ def test_ne_method(self, mock_symbolic_call): mock_symbolic_call.assert_called_once_with(x, y) self.assertEqual(result, mock_tensor) - @patch("keras.ops.LogicalAnd.symbolic_call") + @patch("keras.src.ops.LogicalAnd.symbolic_call") def test_rand_method(self, mock_symbolic_call): """Test __rand__ method""" mock_tensor = Mock() @@ -297,7 +297,7 @@ def test_rand_method(self, mock_symbolic_call): mock_symbolic_call.assert_called_once_with(y, x) self.assertEqual(result, mock_tensor) - @patch("keras.ops.LogicalOr.symbolic_call") + @patch("keras.src.ops.LogicalOr.symbolic_call") def test_ror_method(self, mock_symbolic_call): """Test __ror__ method""" mock_tensor = Mock() @@ -308,7 +308,7 @@ def test_ror_method(self, mock_symbolic_call): mock_symbolic_call.assert_called_once_with(y, x) self.assertEqual(result, mock_tensor) - @patch("keras.ops.LogicalNot.symbolic_call") + @patch("keras.src.ops.LogicalNot.symbolic_call") def test_invert_method(self, mock_symbolic_call): """Test __invert__ method""" mock_tensor = Mock() @@ -318,7 +318,7 @@ def test_invert_method(self, mock_symbolic_call): mock_symbolic_call.assert_called_once_with(x) self.assertEqual(result, mock_tensor) - @patch("keras.ops.LogicalXor.symbolic_call") + @patch("keras.src.ops.LogicalXor.symbolic_call") def test_xor_method(self, mock_symbolic_call): """Test __xor__ method""" mock_tensor = Mock() @@ -329,7 +329,7 @@ def test_xor_method(self, mock_symbolic_call): mock_symbolic_call.assert_called_once_with(x, y) self.assertEqual(result, mock_tensor) - @patch("keras.ops.LogicalXor.symbolic_call") + @patch("keras.src.ops.LogicalXor.symbolic_call") def test_rxor_method(self, mock_symbolic_call): """Test __rxor__ method""" mock_tensor = Mock() @@ -340,7 +340,7 @@ def test_rxor_method(self, mock_symbolic_call): mock_symbolic_call.assert_called_once_with(y, x) self.assertEqual(result, mock_tensor) - @patch("keras.ops.TrueDivide.symbolic_call") + @patch("keras.src.ops.TrueDivide.symbolic_call") def test_truediv_method(self, mock_symbolic_call): """Test __truediv__ method""" mock_tensor = Mock() @@ -351,7 +351,7 @@ def test_truediv_method(self, mock_symbolic_call): mock_symbolic_call.assert_called_once_with(x, y) self.assertEqual(result, mock_tensor) - @patch("keras.ops.TrueDivide.symbolic_call") + @patch("keras.src.ops.TrueDivide.symbolic_call") def test_rtruediv_method(self, mock_symbolic_call): """Test __rtruediv__ method""" mock_tensor = Mock() @@ -362,7 +362,7 @@ def test_rtruediv_method(self, mock_symbolic_call): mock_symbolic_call.assert_called_once_with(y, x) self.assertEqual(result, mock_tensor) - @patch("keras.ops.Divide.symbolic_call") + @patch("keras.src.ops.Divide.symbolic_call") def test_div_method(self, mock_symbolic_call): """Test __div__ method""" mock_tensor = Mock() @@ -374,7 +374,7 @@ def test_div_method(self, mock_symbolic_call): mock_symbolic_call.assert_called_once_with(x, y) self.assertEqual(result, mock_tensor) - @patch("keras.ops.Divide.symbolic_call") + @patch("keras.src.ops.Divide.symbolic_call") def test_rdiv_method(self, mock_symbolic_call): """Test __rdiv__ method""" mock_tensor = Mock() diff --git a/keras/backend/common/name_scope.py b/keras/src/backend/common/name_scope.py similarity index 98% rename from keras/backend/common/name_scope.py rename to keras/src/backend/common/name_scope.py index 02768fd43d0d..71a8408767b6 100644 --- a/keras/backend/common/name_scope.py +++ b/keras/src/backend/common/name_scope.py @@ -1,4 +1,4 @@ -from keras.backend.common import global_state +from keras.src.backend.common import global_state class name_scope: diff --git a/keras/backend/common/name_scope_test.py b/keras/src/backend/common/name_scope_test.py similarity index 92% rename from keras/backend/common/name_scope_test.py rename to keras/src/backend/common/name_scope_test.py index 0650fadec093..2e79f2146958 100644 --- a/keras/backend/common/name_scope_test.py +++ b/keras/src/backend/common/name_scope_test.py @@ -1,6 +1,6 @@ -from keras import testing -from keras.backend.common.name_scope import current_path -from keras.backend.common.name_scope import name_scope +from keras.src import testing +from keras.src.backend.common.name_scope import current_path +from keras.src.backend.common.name_scope import name_scope class NameScopeTest(testing.TestCase): diff --git a/keras/backend/common/stateless_scope.py b/keras/src/backend/common/stateless_scope.py similarity index 91% rename from keras/backend/common/stateless_scope.py rename to keras/src/backend/common/stateless_scope.py index a3abf758e2c4..e3f4f9d69693 100644 --- a/keras/backend/common/stateless_scope.py +++ b/keras/src/backend/common/stateless_scope.py @@ -1,5 +1,5 @@ -from keras.api_export import keras_export -from keras.backend.common import global_state +from keras.src.api_export import keras_export +from keras.src.backend.common import global_state @keras_export("keras.StatelessScope") @@ -38,8 +38,8 @@ def __init__( collect_losses=False, initialize_variables=True, ): - from keras import backend - from keras.backend.common.variables import KerasVariable + from keras.src import backend + from keras.src.backend.common.variables import KerasVariable self.collect_losses = collect_losses self.initialize_variables = initialize_variables @@ -90,7 +90,9 @@ def __exit__(self, *args, **kwargs): # We're back in eager scope; # if any variables were created within the stateless # scope, we initialize them here. - from keras.backend.common.variables import initialize_all_variables + from keras.src.backend.common.variables import ( + initialize_all_variables, + ) initialize_all_variables() diff --git a/keras/backend/common/stateless_scope_test.py b/keras/src/backend/common/stateless_scope_test.py similarity index 92% rename from keras/backend/common/stateless_scope_test.py rename to keras/src/backend/common/stateless_scope_test.py index f3f917620db9..295c6ffb091d 100644 --- a/keras/backend/common/stateless_scope_test.py +++ b/keras/src/backend/common/stateless_scope_test.py @@ -1,9 +1,9 @@ import numpy as np -from keras import backend -from keras import ops -from keras import testing -from keras.backend.common.stateless_scope import StatelessScope +from keras.src import backend +from keras.src import ops +from keras.src import testing +from keras.src.backend.common.stateless_scope import StatelessScope class TestStatelessScope(testing.TestCase): diff --git a/keras/backend/common/variables.py b/keras/src/backend/common/variables.py similarity index 96% rename from keras/backend/common/variables.py rename to keras/src/backend/common/variables.py index 3d9c80989687..156d50eba4bf 100644 --- a/keras/backend/common/variables.py +++ b/keras/src/backend/common/variables.py @@ -1,14 +1,14 @@ import numpy as np -from keras.api_export import keras_export -from keras.backend import config -from keras.backend.common import dtypes -from keras.backend.common import global_state -from keras.backend.common.name_scope import current_path -from keras.backend.common.stateless_scope import get_stateless_scope -from keras.backend.common.stateless_scope import in_stateless_scope -from keras.utils.module_utils import tensorflow as tf -from keras.utils.naming import auto_name +from keras.src.api_export import keras_export +from keras.src.backend import config +from keras.src.backend.common import dtypes +from keras.src.backend.common import global_state +from keras.src.backend.common.name_scope import current_path +from keras.src.backend.common.stateless_scope import get_stateless_scope +from keras.src.backend.common.stateless_scope import in_stateless_scope +from keras.src.utils.module_utils import tensorflow as tf +from keras.src.utils.naming import auto_name class KerasVariable: @@ -55,7 +55,7 @@ class KerasVariable: **Using a Keras initializer to create a `Variable`:** ```python - from keras.initializers import Ones + from keras.src.initializers import Ones variable_from_initializer = keras.Variable( initializer=Ones(), shape=(3, 3), dtype="float32" ) @@ -120,7 +120,7 @@ def __init__( # Ref: https://github.com/google/flax/blob/main/flax/linen/fp8_ops.py self._overwrite_with_gradient = False if isinstance(initializer, str): - from keras import initializers + from keras.src import initializers initializer = initializers.get(initializer) if callable(initializer): @@ -298,7 +298,7 @@ def regularizer(self): @regularizer.setter def regularizer(self, value): - from keras.regularizers import Regularizer + from keras.src.regularizers import Regularizer if value is not None and not isinstance(value, Regularizer): raise ValueError( @@ -314,7 +314,7 @@ def constraint(self): @constraint.setter def constraint(self, value): - from keras.constraints import Constraint + from keras.src.constraints import Constraint if value is not None and not isinstance(value, Constraint): raise ValueError( @@ -605,7 +605,7 @@ def __init__(self, dtype): self.original_scope = None def maybe_cast(self, value): - from keras import backend + from keras.src import backend if self.dtype is not None and is_float_dtype(value.dtype): return backend.cast(value, dtype=self.dtype) diff --git a/keras/backend/common/variables_test.py b/keras/src/backend/common/variables_test.py similarity index 98% rename from keras/backend/common/variables_test.py rename to keras/src/backend/common/variables_test.py index 1062aa4ac76c..7ece491e8d05 100644 --- a/keras/backend/common/variables_test.py +++ b/keras/src/backend/common/variables_test.py @@ -2,15 +2,15 @@ import pytest from absl.testing import parameterized -from keras import backend -from keras import initializers -from keras.backend.common import dtypes -from keras.backend.common.variables import AutocastScope -from keras.backend.common.variables import KerasVariable -from keras.backend.common.variables import shape_equal -from keras.backend.common.variables import standardize_dtype -from keras.backend.common.variables import standardize_shape -from keras.testing import test_case +from keras.src import backend +from keras.src import initializers +from keras.src.backend.common import dtypes +from keras.src.backend.common.variables import AutocastScope +from keras.src.backend.common.variables import KerasVariable +from keras.src.backend.common.variables import shape_equal +from keras.src.backend.common.variables import standardize_dtype +from keras.src.backend.common.variables import standardize_shape +from keras.src.testing import test_case class VariableInitializationTest(test_case.TestCase): @@ -267,7 +267,7 @@ def test_variable_numpy(self): reason="Tests for MirroredVariable under tf backend", ) def test_variable_numpy_scalar(self): - from keras.utils.module_utils import tensorflow as tf + from keras.src.utils.module_utils import tensorflow as tf strategy = tf.distribute.MirroredStrategy(["cpu:0", "cpu:1"]) with strategy.scope(): diff --git a/keras/backend/config.py b/keras/src/backend/config.py similarity index 99% rename from keras/backend/config.py rename to keras/src/backend/config.py index 8725e27b56ff..19af01fe83a2 100644 --- a/keras/backend/config.py +++ b/keras/src/backend/config.py @@ -1,7 +1,7 @@ import json import os -from keras.api_export import keras_export +from keras.src.api_export import keras_export # The type of float to use throughout a session. _FLOATX = "float32" diff --git a/keras/backend/exports.py b/keras/src/backend/exports.py similarity index 86% rename from keras/backend/exports.py rename to keras/src/backend/exports.py index 2c02eed603d4..54ee1c74bb8a 100644 --- a/keras/backend/exports.py +++ b/keras/src/backend/exports.py @@ -1,5 +1,5 @@ -from keras import backend -from keras.api_export import keras_export +from keras.src import backend +from keras.src.api_export import keras_export if backend.backend() == "tensorflow": BackendVariable = backend.tensorflow.core.Variable @@ -11,7 +11,7 @@ BackendVariable = backend.torch.core.Variable backend_name_scope = backend.common.name_scope.name_scope elif backend.backend() == "numpy": - from keras.backend.numpy.core import Variable as NumpyVariable + from keras.src.backend.numpy.core import Variable as NumpyVariable BackendVariable = NumpyVariable backend_name_scope = backend.common.name_scope.name_scope diff --git a/keras/src/backend/jax/__init__.py b/keras/src/backend/jax/__init__.py new file mode 100644 index 000000000000..934bf5f4b159 --- /dev/null +++ b/keras/src/backend/jax/__init__.py @@ -0,0 +1,25 @@ +from keras.src.backend.jax import core +from keras.src.backend.jax import distribution_lib +from keras.src.backend.jax import image +from keras.src.backend.jax import linalg +from keras.src.backend.jax import math +from keras.src.backend.jax import nn +from keras.src.backend.jax import numpy +from keras.src.backend.jax import random +from keras.src.backend.jax.core import SUPPORTS_SPARSE_TENSORS +from keras.src.backend.jax.core import Variable +from keras.src.backend.jax.core import cast +from keras.src.backend.jax.core import compute_output_spec +from keras.src.backend.jax.core import cond +from keras.src.backend.jax.core import convert_to_numpy +from keras.src.backend.jax.core import convert_to_tensor +from keras.src.backend.jax.core import device_scope +from keras.src.backend.jax.core import is_tensor +from keras.src.backend.jax.core import scatter +from keras.src.backend.jax.core import shape +from keras.src.backend.jax.core import stop_gradient +from keras.src.backend.jax.core import vectorized_map +from keras.src.backend.jax.rnn import cudnn_ok +from keras.src.backend.jax.rnn import gru +from keras.src.backend.jax.rnn import lstm +from keras.src.backend.jax.rnn import rnn diff --git a/keras/backend/jax/core.py b/keras/src/backend/jax/core.py similarity index 97% rename from keras/backend/jax/core.py rename to keras/src/backend/jax/core.py index 7b37807239f4..4d95bcaa7004 100644 --- a/keras/backend/jax/core.py +++ b/keras/src/backend/jax/core.py @@ -4,13 +4,13 @@ import ml_dtypes import numpy as np -from keras import tree -from keras.backend.common import KerasVariable -from keras.backend.common import global_state -from keras.backend.common import standardize_dtype -from keras.backend.common.keras_tensor import KerasTensor -from keras.backend.common.stateless_scope import StatelessScope -from keras.backend.jax import distribution_lib +from keras.src import tree +from keras.src.backend.common import KerasVariable +from keras.src.backend.common import global_state +from keras.src.backend.common import standardize_dtype +from keras.src.backend.common.keras_tensor import KerasTensor +from keras.src.backend.common.stateless_scope import StatelessScope +from keras.src.backend.jax import distribution_lib SUPPORTS_SPARSE_TENSORS = True diff --git a/keras/backend/jax/distribution_lib.py b/keras/src/backend/jax/distribution_lib.py similarity index 99% rename from keras/backend/jax/distribution_lib.py rename to keras/src/backend/jax/distribution_lib.py index 8e15e3c96fb0..8dee363b86a1 100644 --- a/keras/backend/jax/distribution_lib.py +++ b/keras/src/backend/jax/distribution_lib.py @@ -9,7 +9,7 @@ import jax import numpy as np -from keras.utils import jax_utils +from keras.src.utils import jax_utils def list_devices(device_type=None): diff --git a/keras/backend/jax/distribution_lib_test.py b/keras/src/backend/jax/distribution_lib_test.py similarity index 98% rename from keras/backend/jax/distribution_lib_test.py rename to keras/src/backend/jax/distribution_lib_test.py index 130954fe050d..b3e6b014b70b 100644 --- a/keras/backend/jax/distribution_lib_test.py +++ b/keras/src/backend/jax/distribution_lib_test.py @@ -8,12 +8,12 @@ import numpy as np import pytest -from keras import backend -from keras import layers -from keras import models -from keras import testing -from keras.backend import distribution_lib as backend_dlib -from keras.distribution import distribution_lib +from keras.src import backend +from keras.src import layers +from keras.src import models +from keras.src import testing +from keras.src.backend import distribution_lib as backend_dlib +from keras.src.distribution import distribution_lib if backend.backend() == "jax": # Due to https://github.com/google/jax/issues/17188, we can't diff --git a/keras/backend/jax/image.py b/keras/src/backend/jax/image.py similarity index 99% rename from keras/backend/jax/image.py rename to keras/src/backend/jax/image.py index 462611ba968d..7bba72e3f927 100644 --- a/keras/backend/jax/image.py +++ b/keras/src/backend/jax/image.py @@ -3,7 +3,7 @@ import jax import jax.numpy as jnp -from keras.backend.jax.core import convert_to_tensor +from keras.src.backend.jax.core import convert_to_tensor RESIZE_INTERPOLATIONS = ( "bilinear", diff --git a/keras/backend/jax/layer.py b/keras/src/backend/jax/layer.py similarity index 100% rename from keras/backend/jax/layer.py rename to keras/src/backend/jax/layer.py diff --git a/keras/backend/jax/linalg.py b/keras/src/backend/jax/linalg.py similarity index 86% rename from keras/backend/jax/linalg.py rename to keras/src/backend/jax/linalg.py index 73d548a2d91d..bffdeba67dcc 100644 --- a/keras/backend/jax/linalg.py +++ b/keras/src/backend/jax/linalg.py @@ -2,11 +2,11 @@ import jax.numpy as jnp import jax.scipy as jsp -from keras.backend import config -from keras.backend import standardize_dtype -from keras.backend.common import dtypes -from keras.backend.jax.core import cast -from keras.backend.jax.core import convert_to_tensor +from keras.src.backend import config +from keras.src.backend import standardize_dtype +from keras.src.backend.common import dtypes +from keras.src.backend.jax.core import cast +from keras.src.backend.jax.core import convert_to_tensor def cholesky(a): diff --git a/keras/backend/jax/math.py b/keras/src/backend/jax/math.py similarity index 96% rename from keras/backend/jax/math.py rename to keras/src/backend/jax/math.py index 70add7674269..361eeee89173 100644 --- a/keras/backend/jax/math.py +++ b/keras/src/backend/jax/math.py @@ -3,12 +3,12 @@ import jax import jax.numpy as jnp -from keras.backend import config -from keras.backend import standardize_dtype -from keras.backend.common import dtypes -from keras.backend.jax.core import cast -from keras.backend.jax.core import convert_to_tensor -from keras.utils.module_utils import scipy +from keras.src.backend import config +from keras.src.backend import standardize_dtype +from keras.src.backend.common import dtypes +from keras.src.backend.jax.core import cast +from keras.src.backend.jax.core import convert_to_tensor +from keras.src.utils.module_utils import scipy def segment_sum(data, segment_ids, num_segments=None, sorted=False): diff --git a/keras/backend/jax/nn.py b/keras/src/backend/jax/nn.py similarity index 98% rename from keras/backend/jax/nn.py rename to keras/src/backend/jax/nn.py index 608a0dadc7fc..740c9b17e5a2 100644 --- a/keras/backend/jax/nn.py +++ b/keras/src/backend/jax/nn.py @@ -5,14 +5,14 @@ from jax import lax from jax import nn as jnn -from keras.backend import standardize_data_format -from keras.backend import standardize_dtype -from keras.backend.common.backend_utils import ( +from keras.src.backend import standardize_data_format +from keras.src.backend import standardize_dtype +from keras.src.backend.common.backend_utils import ( compute_conv_transpose_padding_args_for_jax, ) -from keras.backend.config import epsilon -from keras.backend.jax.core import cast -from keras.backend.jax.core import convert_to_tensor +from keras.src.backend.config import epsilon +from keras.src.backend.jax.core import cast +from keras.src.backend.jax.core import convert_to_tensor def relu(x): diff --git a/keras/backend/jax/numpy.py b/keras/src/backend/jax/numpy.py similarity index 98% rename from keras/backend/jax/numpy.py rename to keras/src/backend/jax/numpy.py index 70435d144d32..9520b21ec281 100644 --- a/keras/backend/jax/numpy.py +++ b/keras/src/backend/jax/numpy.py @@ -4,15 +4,15 @@ import jax.experimental.sparse as jax_sparse import jax.numpy as jnp -from keras.backend import config -from keras.backend.common import dtypes -from keras.backend.common.backend_utils import canonicalize_axis -from keras.backend.common.backend_utils import to_tuple_or_list -from keras.backend.common.variables import standardize_dtype -from keras.backend.jax import nn -from keras.backend.jax import sparse -from keras.backend.jax.core import cast -from keras.backend.jax.core import convert_to_tensor +from keras.src.backend import config +from keras.src.backend.common import dtypes +from keras.src.backend.common.backend_utils import canonicalize_axis +from keras.src.backend.common.backend_utils import to_tuple_or_list +from keras.src.backend.common.variables import standardize_dtype +from keras.src.backend.jax import nn +from keras.src.backend.jax import sparse +from keras.src.backend.jax.core import cast +from keras.src.backend.jax.core import convert_to_tensor @sparse.elementwise_binary_union(linear=True, use_sparsify=True) @@ -860,7 +860,7 @@ def repeat(x, repeats, axis=None): def reshape(x, newshape): if isinstance(x, jax_sparse.BCOO): - from keras.ops import operation_utils + from keras.src.ops import operation_utils # Resolve the -1 in `new_shape` if applicable and possible output_shape = operation_utils.compute_reshape_output_shape( diff --git a/keras/backend/jax/optimizer.py b/keras/src/backend/jax/optimizer.py similarity index 98% rename from keras/backend/jax/optimizer.py rename to keras/src/backend/jax/optimizer.py index 2a4d6844b9d9..cc461ce113a7 100644 --- a/keras/backend/jax/optimizer.py +++ b/keras/src/backend/jax/optimizer.py @@ -1,7 +1,7 @@ import jax from jax import numpy as jnp -from keras.optimizers import base_optimizer +from keras.src.optimizers import base_optimizer class JaxOptimizer(base_optimizer.BaseOptimizer): diff --git a/keras/backend/jax/random.py b/keras/src/backend/jax/random.py similarity index 93% rename from keras/backend/jax/random.py rename to keras/src/backend/jax/random.py index 6b2c7afba1b6..79901696339f 100644 --- a/keras/backend/jax/random.py +++ b/keras/src/backend/jax/random.py @@ -1,9 +1,9 @@ import jax -from keras.backend.config import floatx -from keras.random.seed_generator import SeedGenerator -from keras.random.seed_generator import draw_seed -from keras.random.seed_generator import make_default_seed +from keras.src.backend.config import floatx +from keras.src.random.seed_generator import SeedGenerator +from keras.src.random.seed_generator import draw_seed +from keras.src.random.seed_generator import make_default_seed def jax_draw_seed(seed): diff --git a/keras/backend/jax/rnn.py b/keras/src/backend/jax/rnn.py similarity index 98% rename from keras/backend/jax/rnn.py rename to keras/src/backend/jax/rnn.py index b6676fc8d3a9..688211b31f0d 100644 --- a/keras/backend/jax/rnn.py +++ b/keras/src/backend/jax/rnn.py @@ -3,8 +3,8 @@ from jax import lax from jax import numpy as jnp -from keras import tree -from keras.backend.common import stateless_scope +from keras.src import tree +from keras.src.backend.common import stateless_scope def rnn( diff --git a/keras/backend/jax/sparse.py b/keras/src/backend/jax/sparse.py similarity index 99% rename from keras/backend/jax/sparse.py rename to keras/src/backend/jax/sparse.py index 48359016cf1e..f2d7f19d7d16 100644 --- a/keras/backend/jax/sparse.py +++ b/keras/src/backend/jax/sparse.py @@ -3,7 +3,7 @@ import jax.experimental.sparse as jax_sparse import jax.numpy as jnp -from keras.utils import jax_utils +from keras.src.utils import jax_utils def axis_shape_dims_for_broadcast_in_dim(axis, input_shape, insert_dims): diff --git a/keras/backend/jax/trainer.py b/keras/src/backend/jax/trainer.py similarity index 98% rename from keras/backend/jax/trainer.py rename to keras/src/backend/jax/trainer.py index 85308f34175a..89ff3b0d1b7f 100644 --- a/keras/backend/jax/trainer.py +++ b/keras/src/backend/jax/trainer.py @@ -5,17 +5,17 @@ import jax import numpy as np -from keras import backend -from keras import callbacks as callbacks_module -from keras import optimizers as optimizers_module -from keras import tree -from keras.backend import distribution_lib as jax_distribution_lib -from keras.distribution import distribution_lib -from keras.trainers import trainer as base_trainer -from keras.trainers.data_adapters import array_slicing -from keras.trainers.data_adapters import data_adapter_utils -from keras.trainers.epoch_iterator import EpochIterator -from keras.utils import traceback_utils +from keras.src import backend +from keras.src import callbacks as callbacks_module +from keras.src import optimizers as optimizers_module +from keras.src import tree +from keras.src.backend import distribution_lib as jax_distribution_lib +from keras.src.distribution import distribution_lib +from keras.src.trainers import trainer as base_trainer +from keras.src.trainers.data_adapters import array_slicing +from keras.src.trainers.data_adapters import data_adapter_utils +from keras.src.trainers.epoch_iterator import EpochIterator +from keras.src.utils import traceback_utils class JAXTrainer(base_trainer.Trainer): diff --git a/keras/src/backend/numpy/__init__.py b/keras/src/backend/numpy/__init__.py new file mode 100644 index 000000000000..ce1277b8ddc1 --- /dev/null +++ b/keras/src/backend/numpy/__init__.py @@ -0,0 +1,21 @@ +from keras.src.backend.numpy import core +from keras.src.backend.numpy import image +from keras.src.backend.numpy import linalg +from keras.src.backend.numpy import math +from keras.src.backend.numpy import nn +from keras.src.backend.numpy import numpy +from keras.src.backend.numpy import random +from keras.src.backend.numpy.core import SUPPORTS_SPARSE_TENSORS +from keras.src.backend.numpy.core import Variable +from keras.src.backend.numpy.core import cast +from keras.src.backend.numpy.core import compute_output_spec +from keras.src.backend.numpy.core import cond +from keras.src.backend.numpy.core import convert_to_numpy +from keras.src.backend.numpy.core import convert_to_tensor +from keras.src.backend.numpy.core import is_tensor +from keras.src.backend.numpy.core import shape +from keras.src.backend.numpy.core import vectorized_map +from keras.src.backend.numpy.rnn import cudnn_ok +from keras.src.backend.numpy.rnn import gru +from keras.src.backend.numpy.rnn import lstm +from keras.src.backend.numpy.rnn import rnn diff --git a/keras/backend/numpy/core.py b/keras/src/backend/numpy/core.py similarity index 95% rename from keras/backend/numpy/core.py rename to keras/src/backend/numpy/core.py index dcd01554f2cb..c00b2598dfde 100644 --- a/keras/backend/numpy/core.py +++ b/keras/src/backend/numpy/core.py @@ -1,11 +1,11 @@ import numpy as np -from keras import tree -from keras.backend.common import KerasVariable -from keras.backend.common import standardize_dtype -from keras.backend.common.dtypes import result_type -from keras.backend.common.keras_tensor import KerasTensor -from keras.backend.common.stateless_scope import StatelessScope +from keras.src import tree +from keras.src.backend.common import KerasVariable +from keras.src.backend.common import standardize_dtype +from keras.src.backend.common.dtypes import result_type +from keras.src.backend.common.keras_tensor import KerasTensor +from keras.src.backend.common.stateless_scope import StatelessScope SUPPORTS_SPARSE_TENSORS = False diff --git a/keras/backend/numpy/image.py b/keras/src/backend/numpy/image.py similarity index 98% rename from keras/backend/numpy/image.py rename to keras/src/backend/numpy/image.py index efa42e42f137..2281c422d496 100644 --- a/keras/backend/numpy/image.py +++ b/keras/src/backend/numpy/image.py @@ -1,8 +1,8 @@ import jax import numpy as np -from keras.backend.numpy.core import convert_to_tensor -from keras.utils.module_utils import scipy +from keras.src.backend.numpy.core import convert_to_tensor +from keras.src.utils.module_utils import scipy RESIZE_INTERPOLATIONS = ( "bilinear", diff --git a/keras/backend/numpy/layer.py b/keras/src/backend/numpy/layer.py similarity index 100% rename from keras/backend/numpy/layer.py rename to keras/src/backend/numpy/layer.py diff --git a/keras/backend/numpy/linalg.py b/keras/src/backend/numpy/linalg.py similarity index 92% rename from keras/backend/numpy/linalg.py rename to keras/src/backend/numpy/linalg.py index 1b651a59aa05..32d0f762fd76 100644 --- a/keras/backend/numpy/linalg.py +++ b/keras/src/backend/numpy/linalg.py @@ -1,9 +1,9 @@ import numpy as np import scipy.linalg as sl -from keras.backend import standardize_dtype -from keras.backend.common import dtypes -from keras.backend.numpy.core import convert_to_tensor +from keras.src.backend import standardize_dtype +from keras.src.backend.common import dtypes +from keras.src.backend.numpy.core import convert_to_tensor def cholesky(a): diff --git a/keras/backend/numpy/math.py b/keras/src/backend/numpy/math.py similarity index 97% rename from keras/backend/numpy/math.py rename to keras/src/backend/numpy/math.py index bb9c3d499e5a..f14e43d863b8 100644 --- a/keras/backend/numpy/math.py +++ b/keras/src/backend/numpy/math.py @@ -1,11 +1,11 @@ import numpy as np -from keras.backend import standardize_dtype -from keras.backend.common import dtypes -from keras.backend.jax.math import fft as jax_fft -from keras.backend.jax.math import fft2 as jax_fft2 -from keras.backend.numpy.core import convert_to_tensor -from keras.utils.module_utils import scipy +from keras.src.backend import standardize_dtype +from keras.src.backend.common import dtypes +from keras.src.backend.jax.math import fft as jax_fft +from keras.src.backend.jax.math import fft2 as jax_fft2 +from keras.src.backend.numpy.core import convert_to_tensor +from keras.src.utils.module_utils import scipy def segment_sum(data, segment_ids, num_segments=None, sorted=False): diff --git a/keras/backend/numpy/nn.py b/keras/src/backend/numpy/nn.py similarity index 97% rename from keras/backend/numpy/nn.py rename to keras/src/backend/numpy/nn.py index 45ed3f05ac9c..7dee370ef005 100644 --- a/keras/backend/numpy/nn.py +++ b/keras/src/backend/numpy/nn.py @@ -3,16 +3,16 @@ from jax import lax from jax import numpy as jnp -from keras.backend import standardize_data_format -from keras.backend import standardize_dtype -from keras.backend.common.backend_utils import ( +from keras.src.backend import standardize_data_format +from keras.src.backend import standardize_dtype +from keras.src.backend.common.backend_utils import ( compute_conv_transpose_padding_args_for_jax, ) -from keras.backend.config import epsilon -from keras.backend.numpy.core import cast -from keras.backend.numpy.core import convert_to_tensor -from keras.backend.numpy.core import is_tensor -from keras.utils.module_utils import scipy +from keras.src.backend.config import epsilon +from keras.src.backend.numpy.core import cast +from keras.src.backend.numpy.core import convert_to_tensor +from keras.src.backend.numpy.core import is_tensor +from keras.src.utils.module_utils import scipy def relu(x): diff --git a/keras/backend/numpy/numpy.py b/keras/src/backend/numpy/numpy.py similarity index 98% rename from keras/backend/numpy/numpy.py rename to keras/src/backend/numpy/numpy.py index 5965ce380218..fa098a029978 100644 --- a/keras/backend/numpy/numpy.py +++ b/keras/src/backend/numpy/numpy.py @@ -1,11 +1,11 @@ import numpy as np -from keras import tree -from keras.backend import config -from keras.backend import standardize_dtype -from keras.backend.common import dtypes -from keras.backend.common.backend_utils import standardize_axis_for_numpy -from keras.backend.numpy.core import convert_to_tensor +from keras.src import tree +from keras.src.backend import config +from keras.src.backend import standardize_dtype +from keras.src.backend.common import dtypes +from keras.src.backend.common.backend_utils import standardize_axis_for_numpy +from keras.src.backend.numpy.core import convert_to_tensor def add(x1, x2): diff --git a/keras/backend/numpy/random.py b/keras/src/backend/numpy/random.py similarity index 93% rename from keras/backend/numpy/random.py rename to keras/src/backend/numpy/random.py index b3204b430292..f8fd65aa38ba 100644 --- a/keras/backend/numpy/random.py +++ b/keras/src/backend/numpy/random.py @@ -1,10 +1,10 @@ import numpy as np -from keras.backend.config import floatx -from keras.backend.numpy.nn import softmax -from keras.random.seed_generator import SeedGenerator -from keras.random.seed_generator import draw_seed -from keras.random.seed_generator import make_default_seed +from keras.src.backend.config import floatx +from keras.src.backend.numpy.nn import softmax +from keras.src.random.seed_generator import SeedGenerator +from keras.src.random.seed_generator import draw_seed +from keras.src.random.seed_generator import make_default_seed def normal(shape, mean=0.0, stddev=1.0, dtype=None, seed=None): diff --git a/keras/backend/numpy/rnn.py b/keras/src/backend/numpy/rnn.py similarity index 99% rename from keras/backend/numpy/rnn.py rename to keras/src/backend/numpy/rnn.py index 6d760f0f6ebe..07f657525144 100644 --- a/keras/backend/numpy/rnn.py +++ b/keras/src/backend/numpy/rnn.py @@ -1,6 +1,6 @@ import numpy as np -from keras import tree +from keras.src import tree def rnn( diff --git a/keras/backend/numpy/trainer.py b/keras/src/backend/numpy/trainer.py similarity index 95% rename from keras/backend/numpy/trainer.py rename to keras/src/backend/numpy/trainer.py index 700e4b856dce..c92465874673 100644 --- a/keras/backend/numpy/trainer.py +++ b/keras/src/backend/numpy/trainer.py @@ -1,15 +1,15 @@ import numpy as np -from keras import backend -from keras import callbacks as callbacks_module -from keras import tree -from keras.backend.common import standardize_dtype -from keras.backend.common.keras_tensor import KerasTensor -from keras.backend.numpy.core import is_tensor -from keras.trainers import trainer as base_trainer -from keras.trainers.data_adapters import data_adapter_utils -from keras.trainers.epoch_iterator import EpochIterator -from keras.utils import traceback_utils +from keras.src import backend +from keras.src import callbacks as callbacks_module +from keras.src import tree +from keras.src.backend.common import standardize_dtype +from keras.src.backend.common.keras_tensor import KerasTensor +from keras.src.backend.numpy.core import is_tensor +from keras.src.trainers import trainer as base_trainer +from keras.src.trainers.data_adapters import data_adapter_utils +from keras.src.trainers.epoch_iterator import EpochIterator +from keras.src.utils import traceback_utils class NumpyTrainer(base_trainer.Trainer): diff --git a/keras/src/backend/tensorflow/__init__.py b/keras/src/backend/tensorflow/__init__.py new file mode 100644 index 000000000000..c70f22ee4668 --- /dev/null +++ b/keras/src/backend/tensorflow/__init__.py @@ -0,0 +1,27 @@ +from keras.src.backend.tensorflow import core +from keras.src.backend.tensorflow import distribution_lib +from keras.src.backend.tensorflow import image +from keras.src.backend.tensorflow import linalg +from keras.src.backend.tensorflow import math +from keras.src.backend.tensorflow import nn +from keras.src.backend.tensorflow import numpy +from keras.src.backend.tensorflow import random +from keras.src.backend.tensorflow import tensorboard +from keras.src.backend.tensorflow.core import SUPPORTS_SPARSE_TENSORS +from keras.src.backend.tensorflow.core import Variable +from keras.src.backend.tensorflow.core import cast +from keras.src.backend.tensorflow.core import compute_output_spec +from keras.src.backend.tensorflow.core import cond +from keras.src.backend.tensorflow.core import convert_to_numpy +from keras.src.backend.tensorflow.core import convert_to_tensor +from keras.src.backend.tensorflow.core import device_scope +from keras.src.backend.tensorflow.core import is_tensor +from keras.src.backend.tensorflow.core import name_scope +from keras.src.backend.tensorflow.core import scatter +from keras.src.backend.tensorflow.core import shape +from keras.src.backend.tensorflow.core import stop_gradient +from keras.src.backend.tensorflow.core import vectorized_map +from keras.src.backend.tensorflow.rnn import cudnn_ok +from keras.src.backend.tensorflow.rnn import gru +from keras.src.backend.tensorflow.rnn import lstm +from keras.src.backend.tensorflow.rnn import rnn diff --git a/keras/backend/tensorflow/core.py b/keras/src/backend/tensorflow/core.py similarity index 93% rename from keras/backend/tensorflow/core.py rename to keras/src/backend/tensorflow/core.py index 6e72539d11be..575e6dc6da26 100644 --- a/keras/backend/tensorflow/core.py +++ b/keras/src/backend/tensorflow/core.py @@ -2,16 +2,16 @@ import tensorflow as tf from tensorflow.compiler.tf2xla.python.xla import dynamic_update_slice -from keras import tree -from keras.backend.common import KerasVariable -from keras.backend.common import global_state -from keras.backend.common import standardize_dtype -from keras.backend.common.keras_tensor import KerasTensor -from keras.backend.common.name_scope import name_scope as base_name_scope -from keras.backend.common.stateless_scope import StatelessScope -from keras.backend.common.stateless_scope import in_stateless_scope -from keras.backend.tensorflow.sparse import sparse_to_dense -from keras.utils.naming import auto_name +from keras.src import tree +from keras.src.backend.common import KerasVariable +from keras.src.backend.common import global_state +from keras.src.backend.common import standardize_dtype +from keras.src.backend.common.keras_tensor import KerasTensor +from keras.src.backend.common.name_scope import name_scope as base_name_scope +from keras.src.backend.common.stateless_scope import StatelessScope +from keras.src.backend.common.stateless_scope import in_stateless_scope +from keras.src.backend.tensorflow.sparse import sparse_to_dense +from keras.src.utils.naming import auto_name SUPPORTS_SPARSE_TENSORS = True diff --git a/keras/backend/tensorflow/distribute_test.py b/keras/src/backend/tensorflow/distribute_test.py similarity index 95% rename from keras/backend/tensorflow/distribute_test.py rename to keras/src/backend/tensorflow/distribute_test.py index 413bac6f0fc4..ae07d08e6bf7 100644 --- a/keras/backend/tensorflow/distribute_test.py +++ b/keras/src/backend/tensorflow/distribute_test.py @@ -5,11 +5,11 @@ import tensorflow as tf from tensorflow.python.eager import context -from keras import backend -from keras import layers -from keras import models -from keras import testing -from keras.backend.tensorflow import trainer as tf_trainer +from keras.src import backend +from keras.src import layers +from keras.src import models +from keras.src import testing +from keras.src.backend.tensorflow import trainer as tf_trainer @pytest.mark.skipif( diff --git a/keras/backend/tensorflow/distribution_lib.py b/keras/src/backend/tensorflow/distribution_lib.py similarity index 100% rename from keras/backend/tensorflow/distribution_lib.py rename to keras/src/backend/tensorflow/distribution_lib.py diff --git a/keras/backend/tensorflow/image.py b/keras/src/backend/tensorflow/image.py similarity index 99% rename from keras/backend/tensorflow/image.py rename to keras/src/backend/tensorflow/image.py index b51b738c1732..c03825dd7d16 100644 --- a/keras/backend/tensorflow/image.py +++ b/keras/src/backend/tensorflow/image.py @@ -4,7 +4,7 @@ import tensorflow as tf -from keras.backend.tensorflow.core import convert_to_tensor +from keras.src.backend.tensorflow.core import convert_to_tensor RESIZE_INTERPOLATIONS = ( "bilinear", diff --git a/keras/backend/tensorflow/layer.py b/keras/src/backend/tensorflow/layer.py similarity index 92% rename from keras/backend/tensorflow/layer.py rename to keras/src/backend/tensorflow/layer.py index 7c871ba67cf8..fd1f33020132 100644 --- a/keras/backend/tensorflow/layer.py +++ b/keras/src/backend/tensorflow/layer.py @@ -1,9 +1,9 @@ import tensorflow as tf -from keras import tree -from keras.backend.tensorflow.trackable import KerasAutoTrackable -from keras.utils import tf_utils -from keras.utils import tracking +from keras.src import tree +from keras.src.backend.tensorflow.trackable import KerasAutoTrackable +from keras.src.utils import tf_utils +from keras.src.utils import tracking class TFLayer(KerasAutoTrackable): @@ -77,9 +77,9 @@ def _trackable_children(self, save_type="checkpoint", **kwargs): def _default_save_signature(self): """For SavedModel support: returns the default serving signature.""" - from keras.models.functional import Functional - from keras.models.model import Model - from keras.models.sequential import Sequential + from keras.src.models.functional import Functional + from keras.src.models.model import Model + from keras.src.models.sequential import Sequential if not isinstance(self, Model): return None diff --git a/keras/backend/tensorflow/linalg.py b/keras/src/backend/tensorflow/linalg.py similarity index 96% rename from keras/backend/tensorflow/linalg.py rename to keras/src/backend/tensorflow/linalg.py index 20b8fe5b23e7..b50a8b44e875 100644 --- a/keras/backend/tensorflow/linalg.py +++ b/keras/src/backend/tensorflow/linalg.py @@ -1,11 +1,11 @@ import tensorflow as tf from tensorflow.experimental import numpy as tfnp -from keras.backend import config -from keras.backend import standardize_dtype -from keras.backend.common import dtypes -from keras.backend.tensorflow.core import cast -from keras.backend.tensorflow.core import convert_to_tensor +from keras.src.backend import config +from keras.src.backend import standardize_dtype +from keras.src.backend.common import dtypes +from keras.src.backend.tensorflow.core import cast +from keras.src.backend.tensorflow.core import convert_to_tensor def cholesky(a): diff --git a/keras/backend/tensorflow/math.py b/keras/src/backend/tensorflow/math.py similarity index 97% rename from keras/backend/tensorflow/math.py rename to keras/src/backend/tensorflow/math.py index 9b4d4d151f83..ffc7f99f0da0 100644 --- a/keras/backend/tensorflow/math.py +++ b/keras/src/backend/tensorflow/math.py @@ -1,11 +1,11 @@ import tensorflow as tf from tensorflow.experimental import numpy as tfnp -from keras.backend import config -from keras.backend import standardize_dtype -from keras.backend.common import dtypes -from keras.backend.tensorflow.core import cast -from keras.backend.tensorflow.core import convert_to_tensor +from keras.src.backend import config +from keras.src.backend import standardize_dtype +from keras.src.backend.common import dtypes +from keras.src.backend.tensorflow.core import cast +from keras.src.backend.tensorflow.core import convert_to_tensor def segment_sum(data, segment_ids, num_segments=None, sorted=False): diff --git a/keras/backend/tensorflow/name_scope_test.py b/keras/src/backend/tensorflow/name_scope_test.py similarity index 94% rename from keras/backend/tensorflow/name_scope_test.py rename to keras/src/backend/tensorflow/name_scope_test.py index 8ec1aecb790e..f9d8eb7b8499 100644 --- a/keras/backend/tensorflow/name_scope_test.py +++ b/keras/src/backend/tensorflow/name_scope_test.py @@ -1,7 +1,7 @@ import tensorflow as tf -from keras.backend.tensorflow.core import name_scope -from keras.testing import TestCase +from keras.src.backend.tensorflow.core import name_scope +from keras.src.testing import TestCase class TFNameScopeTest(TestCase): diff --git a/keras/backend/tensorflow/nn.py b/keras/src/backend/tensorflow/nn.py similarity index 98% rename from keras/backend/tensorflow/nn.py rename to keras/src/backend/tensorflow/nn.py index 807f0206439a..2167087198f0 100644 --- a/keras/backend/tensorflow/nn.py +++ b/keras/src/backend/tensorflow/nn.py @@ -3,14 +3,14 @@ import tensorflow as tf -from keras.backend import standardize_data_format -from keras.backend import standardize_dtype -from keras.backend.common.backend_utils import ( +from keras.src.backend import standardize_data_format +from keras.src.backend import standardize_dtype +from keras.src.backend.common.backend_utils import ( compute_conv_transpose_output_shape, ) -from keras.backend.config import epsilon -from keras.backend.tensorflow.core import cast -from keras.backend.tensorflow.core import convert_to_tensor +from keras.src.backend.config import epsilon +from keras.src.backend.tensorflow.core import cast +from keras.src.backend.tensorflow.core import convert_to_tensor def relu(x): diff --git a/keras/backend/tensorflow/numpy.py b/keras/src/backend/tensorflow/numpy.py similarity index 98% rename from keras/backend/tensorflow/numpy.py rename to keras/src/backend/tensorflow/numpy.py index 1b6b754c9d71..d1a12e53a780 100644 --- a/keras/backend/tensorflow/numpy.py +++ b/keras/src/backend/tensorflow/numpy.py @@ -10,15 +10,15 @@ from tensorflow.experimental import numpy as tfnp from tensorflow.python.ops.linalg.sparse import sparse_csr_matrix_ops -from keras import tree -from keras.backend import config -from keras.backend import standardize_dtype -from keras.backend.common import dtypes -from keras.backend.common.backend_utils import canonicalize_axis -from keras.backend.common.backend_utils import to_tuple_or_list -from keras.backend.tensorflow import sparse -from keras.backend.tensorflow.core import cast -from keras.backend.tensorflow.core import convert_to_tensor +from keras.src import tree +from keras.src.backend import config +from keras.src.backend import standardize_dtype +from keras.src.backend.common import dtypes +from keras.src.backend.common.backend_utils import canonicalize_axis +from keras.src.backend.common.backend_utils import to_tuple_or_list +from keras.src.backend.tensorflow import sparse +from keras.src.backend.tensorflow.core import cast +from keras.src.backend.tensorflow.core import convert_to_tensor @sparse.elementwise_binary_union(tf.sparse.add) @@ -442,7 +442,7 @@ def sparse_dense_matmul_3d(a, b): ) if x1_sparse or x2_sparse: - from keras.ops.operation_utils import compute_matmul_output_shape + from keras.src.ops.operation_utils import compute_matmul_output_shape output_shape = compute_matmul_output_shape(x1_shape, x2_shape) if x1_sparse and x2_sparse: @@ -1022,7 +1022,9 @@ def expand_dims(x, axis): out_ndim = len(x.shape) + len(axis) axis = sorted([canonicalize_axis(a, out_ndim) for a in axis]) if isinstance(x, tf.SparseTensor): - from keras.ops.operation_utils import compute_expand_dims_output_shape + from keras.src.ops.operation_utils import ( + compute_expand_dims_output_shape, + ) output_shape = compute_expand_dims_output_shape(x.shape, axis) for a in axis: @@ -1607,7 +1609,7 @@ def repeat(x, repeats, axis=None): def reshape(x, newshape): x = convert_to_tensor(x) if isinstance(x, tf.SparseTensor): - from keras.ops.operation_utils import compute_reshape_output_shape + from keras.src.ops.operation_utils import compute_reshape_output_shape output_shape = compute_reshape_output_shape( x.shape, newshape, "newshape" @@ -2011,7 +2013,7 @@ def squeeze(x, axis=None): def transpose(x, axes=None): if isinstance(x, tf.SparseTensor): - from keras.ops.operation_utils import compute_transpose_output_shape + from keras.src.ops.operation_utils import compute_transpose_output_shape output = tf.sparse.transpose(x, perm=axes) output.set_shape(compute_transpose_output_shape(x.shape, axes)) diff --git a/keras/backend/tensorflow/optimizer.py b/keras/src/backend/tensorflow/optimizer.py similarity index 97% rename from keras/backend/tensorflow/optimizer.py rename to keras/src/backend/tensorflow/optimizer.py index 9524149b7535..1887ac52cf39 100644 --- a/keras/backend/tensorflow/optimizer.py +++ b/keras/src/backend/tensorflow/optimizer.py @@ -2,10 +2,10 @@ import tensorflow as tf -from keras import backend -from keras.backend.common import KerasVariable -from keras.backend.tensorflow.trackable import KerasAutoTrackable -from keras.optimizers import base_optimizer +from keras.src import backend +from keras.src.backend.common import KerasVariable +from keras.src.backend.tensorflow.trackable import KerasAutoTrackable +from keras.src.optimizers import base_optimizer class TFOptimizer(KerasAutoTrackable, base_optimizer.BaseOptimizer): diff --git a/keras/backend/tensorflow/optimizer_distribute_test.py b/keras/src/backend/tensorflow/optimizer_distribute_test.py similarity index 98% rename from keras/backend/tensorflow/optimizer_distribute_test.py rename to keras/src/backend/tensorflow/optimizer_distribute_test.py index 27f46ae54f32..a4d61da6b23d 100644 --- a/keras/backend/tensorflow/optimizer_distribute_test.py +++ b/keras/src/backend/tensorflow/optimizer_distribute_test.py @@ -5,9 +5,9 @@ import tensorflow as tf from tensorflow.python.eager import context -from keras import backend -from keras import testing -from keras.optimizers.sgd import SGD +from keras.src import backend +from keras.src import testing +from keras.src.optimizers.sgd import SGD @pytest.mark.skipif( diff --git a/keras/backend/tensorflow/random.py b/keras/src/backend/tensorflow/random.py similarity index 95% rename from keras/backend/tensorflow/random.py rename to keras/src/backend/tensorflow/random.py index b366c61be8c7..eeb38a6aa523 100644 --- a/keras/backend/tensorflow/random.py +++ b/keras/src/backend/tensorflow/random.py @@ -1,11 +1,11 @@ import tensorflow as tf from tensorflow.experimental import numpy as tfnp -from keras.backend.common import standardize_dtype -from keras.backend.config import floatx -from keras.random.seed_generator import SeedGenerator -from keras.random.seed_generator import draw_seed -from keras.random.seed_generator import make_default_seed +from keras.src.backend.common import standardize_dtype +from keras.src.backend.config import floatx +from keras.src.random.seed_generator import SeedGenerator +from keras.src.random.seed_generator import draw_seed +from keras.src.random.seed_generator import make_default_seed def tf_draw_seed(seed): diff --git a/keras/backend/tensorflow/rnn.py b/keras/src/backend/tensorflow/rnn.py similarity index 99% rename from keras/backend/tensorflow/rnn.py rename to keras/src/backend/tensorflow/rnn.py index c9de498a6cf6..1911deec897e 100644 --- a/keras/backend/tensorflow/rnn.py +++ b/keras/src/backend/tensorflow/rnn.py @@ -1,6 +1,6 @@ import tensorflow as tf -from keras import tree +from keras.src import tree def rnn( @@ -471,7 +471,7 @@ def gru( if not cudnn_supported: raise NotImplementedError - from keras.backend.tensorflow import Variable + from keras.src.backend.tensorflow import Variable if isinstance(kernel, Variable): kernel = kernel.value @@ -507,8 +507,8 @@ def _do_gru_arguments_support_cudnn( use_bias, reset_after, ): - from keras import activations - from keras import ops + from keras.src import activations + from keras.src import ops return ( activation in (activations.tanh, tf.tanh, ops.tanh) @@ -526,8 +526,8 @@ def _do_lstm_arguments_support_cudnn( unroll, use_bias, ): - from keras import activations - from keras import ops + from keras.src import activations + from keras.src import ops return ( activation in (activations.tanh, tf.tanh, ops.tanh) @@ -828,7 +828,7 @@ def lstm( if not cudnn_supported: raise NotImplementedError - from keras.backend.tensorflow import Variable + from keras.src.backend.tensorflow import Variable if isinstance(kernel, Variable): kernel = kernel.value diff --git a/keras/backend/tensorflow/saved_model_test.py b/keras/src/backend/tensorflow/saved_model_test.py similarity index 98% rename from keras/backend/tensorflow/saved_model_test.py rename to keras/src/backend/tensorflow/saved_model_test.py index 02be85362fd6..2e81818be176 100644 --- a/keras/backend/tensorflow/saved_model_test.py +++ b/keras/src/backend/tensorflow/saved_model_test.py @@ -6,13 +6,13 @@ import pytest import tensorflow as tf -from keras import backend -from keras import layers -from keras import metrics -from keras import models -from keras import optimizers -from keras import testing -from keras.saving import object_registration +from keras.src import backend +from keras.src import layers +from keras.src import metrics +from keras.src import models +from keras.src import optimizers +from keras.src import testing +from keras.src.saving import object_registration @object_registration.register_keras_serializable(package="my_package") diff --git a/keras/backend/tensorflow/sparse.py b/keras/src/backend/tensorflow/sparse.py similarity index 100% rename from keras/backend/tensorflow/sparse.py rename to keras/src/backend/tensorflow/sparse.py diff --git a/keras/backend/tensorflow/tensorboard.py b/keras/src/backend/tensorflow/tensorboard.py similarity index 100% rename from keras/backend/tensorflow/tensorboard.py rename to keras/src/backend/tensorflow/tensorboard.py diff --git a/keras/backend/tensorflow/trackable.py b/keras/src/backend/tensorflow/trackable.py similarity index 98% rename from keras/backend/tensorflow/trackable.py rename to keras/src/backend/tensorflow/trackable.py index 29ed4dd48017..e14b2996af34 100644 --- a/keras/backend/tensorflow/trackable.py +++ b/keras/src/backend/tensorflow/trackable.py @@ -1,6 +1,6 @@ import tensorflow as tf -from keras.utils import tracking +from keras.src.utils import tracking class KerasAutoTrackable(tf.__internal__.tracking.AutoTrackable): diff --git a/keras/backend/tensorflow/trainer.py b/keras/src/backend/tensorflow/trainer.py similarity index 98% rename from keras/backend/tensorflow/trainer.py rename to keras/src/backend/tensorflow/trainer.py index e1f0afaa1cf3..5a6b4aed945d 100644 --- a/keras/backend/tensorflow/trainer.py +++ b/keras/src/backend/tensorflow/trainer.py @@ -5,15 +5,15 @@ import tensorflow as tf from tensorflow.python.eager import context as tf_context -from keras import callbacks as callbacks_module -from keras import metrics as metrics_module -from keras import optimizers as optimizers_module -from keras import tree -from keras.trainers import trainer as base_trainer -from keras.trainers.data_adapters import array_slicing -from keras.trainers.data_adapters import data_adapter_utils -from keras.trainers.epoch_iterator import EpochIterator -from keras.utils import traceback_utils +from keras.src import callbacks as callbacks_module +from keras.src import metrics as metrics_module +from keras.src import optimizers as optimizers_module +from keras.src import tree +from keras.src.trainers import trainer as base_trainer +from keras.src.trainers.data_adapters import array_slicing +from keras.src.trainers.data_adapters import data_adapter_utils +from keras.src.trainers.epoch_iterator import EpochIterator +from keras.src.utils import traceback_utils class TensorFlowTrainer(base_trainer.Trainer): diff --git a/keras/backend/tests/compute_output_spec_test.py b/keras/src/backend/tests/compute_output_spec_test.py similarity index 97% rename from keras/backend/tests/compute_output_spec_test.py rename to keras/src/backend/tests/compute_output_spec_test.py index 5982086124ed..b3458bcc876f 100644 --- a/keras/backend/tests/compute_output_spec_test.py +++ b/keras/src/backend/tests/compute_output_spec_test.py @@ -2,9 +2,9 @@ import pytest -from keras import backend -from keras import ops -from keras.backend.common.keras_tensor import KerasTensor +from keras.src import backend +from keras.src import ops +from keras.src.backend.common.keras_tensor import KerasTensor def single_arg_test_fn(x): diff --git a/keras/backend/tests/device_scope_test.py b/keras/src/backend/tests/device_scope_test.py similarity index 98% rename from keras/backend/tests/device_scope_test.py rename to keras/src/backend/tests/device_scope_test.py index 1a7213213303..caee6742f61d 100644 --- a/keras/backend/tests/device_scope_test.py +++ b/keras/src/backend/tests/device_scope_test.py @@ -1,7 +1,7 @@ import pytest -from keras import backend -from keras import testing +from keras.src import backend +from keras.src import testing class DeviceTest(testing.TestCase): diff --git a/keras/src/backend/torch/__init__.py b/keras/src/backend/torch/__init__.py new file mode 100644 index 000000000000..d980ec87cfec --- /dev/null +++ b/keras/src/backend/torch/__init__.py @@ -0,0 +1,41 @@ +"""Torch backend APIs. + +# Note on device placement + +Torch has a different device placement style compared to TF and JAX. +In short, variables/tensors are not created on GPU by default, +and the GPU cannot directly communicate with the CPU. +To bring Torch behavior in line with TF and JAX automated device placement, +we are doing the following to automate device placement if a GPU is available: + +- Variables are created on GPU. +- Input data will be placed on GPU at the first `keras.layers.Layer` call. +- Tensor creation happens on GPU, e.g., `zeros()` will create a tensor on GPU. +- `convert_to_numpy` will bring the tensor to CPU before converting it to NumPy. +""" + +from keras.src.backend.torch import core +from keras.src.backend.torch import image +from keras.src.backend.torch import linalg +from keras.src.backend.torch import math +from keras.src.backend.torch import nn +from keras.src.backend.torch import numpy +from keras.src.backend.torch import random +from keras.src.backend.torch.core import SUPPORTS_SPARSE_TENSORS +from keras.src.backend.torch.core import Variable +from keras.src.backend.torch.core import cast +from keras.src.backend.torch.core import compute_output_spec +from keras.src.backend.torch.core import cond +from keras.src.backend.torch.core import convert_to_numpy +from keras.src.backend.torch.core import convert_to_tensor +from keras.src.backend.torch.core import device_scope +from keras.src.backend.torch.core import is_tensor +from keras.src.backend.torch.core import scatter +from keras.src.backend.torch.core import shape +from keras.src.backend.torch.core import stop_gradient +from keras.src.backend.torch.core import to_torch_dtype +from keras.src.backend.torch.core import vectorized_map +from keras.src.backend.torch.rnn import cudnn_ok +from keras.src.backend.torch.rnn import gru +from keras.src.backend.torch.rnn import lstm +from keras.src.backend.torch.rnn import rnn diff --git a/keras/backend/torch/core.py b/keras/src/backend/torch/core.py similarity index 97% rename from keras/backend/torch/core.py rename to keras/src/backend/torch/core.py index bb9bd98ff401..257afeeec699 100644 --- a/keras/backend/torch/core.py +++ b/keras/src/backend/torch/core.py @@ -5,14 +5,14 @@ import numpy as np import torch -from keras import tree -from keras.backend.common import KerasVariable -from keras.backend.common import global_state -from keras.backend.common import standardize_dtype -from keras.backend.common.dtypes import result_type -from keras.backend.common.keras_tensor import KerasTensor -from keras.backend.common.stateless_scope import StatelessScope -from keras.backend.config import floatx +from keras.src import tree +from keras.src.backend.common import KerasVariable +from keras.src.backend.common import global_state +from keras.src.backend.common import standardize_dtype +from keras.src.backend.common.dtypes import result_type +from keras.src.backend.common.keras_tensor import KerasTensor +from keras.src.backend.common.stateless_scope import StatelessScope +from keras.src.backend.config import floatx SUPPORTS_SPARSE_TENSORS = False diff --git a/keras/backend/torch/image.py b/keras/src/backend/torch/image.py similarity index 99% rename from keras/backend/torch/image.py rename to keras/src/backend/torch/image.py index e62162f8ed67..82f609612a78 100644 --- a/keras/backend/torch/image.py +++ b/keras/src/backend/torch/image.py @@ -4,7 +4,7 @@ import torch -from keras.backend.torch.core import convert_to_tensor +from keras.src.backend.torch.core import convert_to_tensor RESIZE_INTERPOLATIONS = {} # populated after torchvision import diff --git a/keras/backend/torch/layer.py b/keras/src/backend/torch/layer.py similarity index 87% rename from keras/backend/torch/layer.py rename to keras/src/backend/torch/layer.py index 001925f276a1..dfb31a552ab1 100644 --- a/keras/backend/torch/layer.py +++ b/keras/src/backend/torch/layer.py @@ -1,7 +1,7 @@ import torch -from keras.backend.common.stateless_scope import in_stateless_scope -from keras.ops.operation import Operation +from keras.src.backend.common.stateless_scope import in_stateless_scope +from keras.src.ops.operation import Operation class TorchLayer(torch.nn.Module): @@ -27,14 +27,14 @@ def forward(self, *args, **kwargs): return Operation.__call__(self, *args, **kwargs) def _setattr_hook(self, name, value): - from keras.layers import Layer + from keras.src.layers import Layer if ( isinstance(value, torch.nn.Module) and not isinstance(value, Layer) and not name == "torch_params" ): - from keras.utils.torch_utils import TorchModuleWrapper + from keras.src.utils.torch_utils import TorchModuleWrapper if not isinstance(self, TorchModuleWrapper): value = TorchModuleWrapper(value) diff --git a/keras/backend/torch/linalg.py b/keras/src/backend/torch/linalg.py similarity index 86% rename from keras/backend/torch/linalg.py rename to keras/src/backend/torch/linalg.py index 3deeaefdbe79..a9158cc64a62 100644 --- a/keras/backend/torch/linalg.py +++ b/keras/src/backend/torch/linalg.py @@ -1,10 +1,10 @@ import torch -from keras.backend import config -from keras.backend import standardize_dtype -from keras.backend.common import dtypes -from keras.backend.torch.core import cast -from keras.backend.torch.core import convert_to_tensor +from keras.src.backend import config +from keras.src.backend import standardize_dtype +from keras.src.backend.common import dtypes +from keras.src.backend.torch.core import cast +from keras.src.backend.torch.core import convert_to_tensor def cholesky(x): diff --git a/keras/backend/torch/math.py b/keras/src/backend/torch/math.py similarity index 97% rename from keras/backend/torch/math.py rename to keras/src/backend/torch/math.py index abcabae98c33..2d9de436d3fb 100644 --- a/keras/backend/torch/math.py +++ b/keras/src/backend/torch/math.py @@ -2,13 +2,13 @@ import torch -from keras.backend import config -from keras.backend import standardize_dtype -from keras.backend.common import dtypes -from keras.backend.torch.core import cast -from keras.backend.torch.core import convert_to_tensor -from keras.backend.torch.core import get_device -from keras.backend.torch.numpy import pad +from keras.src.backend import config +from keras.src.backend import standardize_dtype +from keras.src.backend.common import dtypes +from keras.src.backend.torch.core import cast +from keras.src.backend.torch.core import convert_to_tensor +from keras.src.backend.torch.core import get_device +from keras.src.backend.torch.numpy import pad def segment_sum(data, segment_ids, num_segments=None, **kwargs): diff --git a/keras/backend/torch/nn.py b/keras/src/backend/torch/nn.py similarity index 97% rename from keras/backend/torch/nn.py rename to keras/src/backend/torch/nn.py index f2105b5d5e12..a5cbaab3ea47 100644 --- a/keras/backend/torch/nn.py +++ b/keras/src/backend/torch/nn.py @@ -1,20 +1,20 @@ import torch import torch.nn.functional as tnn -from keras import tree -from keras.backend import standardize_data_format -from keras.backend import standardize_dtype -from keras.backend.common.backend_utils import ( +from keras.src import tree +from keras.src.backend import standardize_data_format +from keras.src.backend import standardize_dtype +from keras.src.backend.common.backend_utils import ( compute_conv_transpose_padding_args_for_torch, ) -from keras.backend.config import epsilon -from keras.backend.torch.core import cast -from keras.backend.torch.core import convert_to_tensor -from keras.backend.torch.core import get_device -from keras.backend.torch.numpy import expand_dims -from keras.backend.torch.numpy import maximum -from keras.backend.torch.numpy import where -from keras.utils.argument_validation import standardize_tuple +from keras.src.backend.config import epsilon +from keras.src.backend.torch.core import cast +from keras.src.backend.torch.core import convert_to_tensor +from keras.src.backend.torch.core import get_device +from keras.src.backend.torch.numpy import expand_dims +from keras.src.backend.torch.numpy import maximum +from keras.src.backend.torch.numpy import where +from keras.src.utils.argument_validation import standardize_tuple def relu(x): diff --git a/keras/backend/torch/numpy.py b/keras/src/backend/torch/numpy.py similarity index 98% rename from keras/backend/torch/numpy.py rename to keras/src/backend/torch/numpy.py index bcf9e090f88a..13f6a47c77ac 100644 --- a/keras/backend/torch/numpy.py +++ b/keras/src/backend/torch/numpy.py @@ -3,17 +3,17 @@ import torch -from keras.backend import KerasTensor -from keras.backend import config -from keras.backend.common import dtypes -from keras.backend.common.backend_utils import canonicalize_axis -from keras.backend.common.backend_utils import to_tuple_or_list -from keras.backend.common.variables import standardize_dtype -from keras.backend.torch.core import cast -from keras.backend.torch.core import convert_to_tensor -from keras.backend.torch.core import get_device -from keras.backend.torch.core import is_tensor -from keras.backend.torch.core import to_torch_dtype +from keras.src.backend import KerasTensor +from keras.src.backend import config +from keras.src.backend.common import dtypes +from keras.src.backend.common.backend_utils import canonicalize_axis +from keras.src.backend.common.backend_utils import to_tuple_or_list +from keras.src.backend.common.variables import standardize_dtype +from keras.src.backend.torch.core import cast +from keras.src.backend.torch.core import convert_to_tensor +from keras.src.backend.torch.core import get_device +from keras.src.backend.torch.core import is_tensor +from keras.src.backend.torch.core import to_torch_dtype TORCH_INT_TYPES = ( torch.int8, diff --git a/keras/src/backend/torch/optimizers/__init__.py b/keras/src/backend/torch/optimizers/__init__.py new file mode 100644 index 000000000000..008312b04b63 --- /dev/null +++ b/keras/src/backend/torch/optimizers/__init__.py @@ -0,0 +1 @@ +from keras.src.backend.torch.optimizers.torch_optimizer import TorchOptimizer diff --git a/keras/backend/torch/optimizers/torch_adadelta.py b/keras/src/backend/torch/optimizers/torch_adadelta.py similarity index 92% rename from keras/backend/torch/optimizers/torch_adadelta.py rename to keras/src/backend/torch/optimizers/torch_adadelta.py index c8a3607f9514..9e6038e7b6eb 100644 --- a/keras/backend/torch/optimizers/torch_adadelta.py +++ b/keras/src/backend/torch/optimizers/torch_adadelta.py @@ -1,8 +1,8 @@ import torch -from keras import ops -from keras import optimizers -from keras.backend.torch.optimizers import torch_parallel_optimizer +from keras.src import ops +from keras.src import optimizers +from keras.src.backend.torch.optimizers import torch_parallel_optimizer class Adadelta( diff --git a/keras/backend/torch/optimizers/torch_adagrad.py b/keras/src/backend/torch/optimizers/torch_adagrad.py similarity index 87% rename from keras/backend/torch/optimizers/torch_adagrad.py rename to keras/src/backend/torch/optimizers/torch_adagrad.py index 2cdaa87c1831..2a1e19f70fd6 100644 --- a/keras/backend/torch/optimizers/torch_adagrad.py +++ b/keras/src/backend/torch/optimizers/torch_adagrad.py @@ -1,8 +1,8 @@ import torch -from keras import ops -from keras import optimizers -from keras.backend.torch.optimizers import torch_parallel_optimizer +from keras.src import ops +from keras.src import optimizers +from keras.src.backend.torch.optimizers import torch_parallel_optimizer class Adagrad( diff --git a/keras/backend/torch/optimizers/torch_adam.py b/keras/src/backend/torch/optimizers/torch_adam.py similarity index 93% rename from keras/backend/torch/optimizers/torch_adam.py rename to keras/src/backend/torch/optimizers/torch_adam.py index 7819a0396943..3bb7db7c341c 100644 --- a/keras/backend/torch/optimizers/torch_adam.py +++ b/keras/src/backend/torch/optimizers/torch_adam.py @@ -1,8 +1,8 @@ import torch -from keras import ops -from keras import optimizers -from keras.backend.torch.optimizers import torch_parallel_optimizer +from keras.src import ops +from keras.src import optimizers +from keras.src.backend.torch.optimizers import torch_parallel_optimizer class Adam(torch_parallel_optimizer.TorchParallelOptimizer, optimizers.Adam): diff --git a/keras/backend/torch/optimizers/torch_adamax.py b/keras/src/backend/torch/optimizers/torch_adamax.py similarity index 91% rename from keras/backend/torch/optimizers/torch_adamax.py rename to keras/src/backend/torch/optimizers/torch_adamax.py index b9463ca0745d..9cb3c0184499 100644 --- a/keras/backend/torch/optimizers/torch_adamax.py +++ b/keras/src/backend/torch/optimizers/torch_adamax.py @@ -1,8 +1,8 @@ import torch -from keras import ops -from keras import optimizers -from keras.backend.torch.optimizers import torch_parallel_optimizer +from keras.src import ops +from keras.src import optimizers +from keras.src.backend.torch.optimizers import torch_parallel_optimizer class Adamax( diff --git a/keras/src/backend/torch/optimizers/torch_adamw.py b/keras/src/backend/torch/optimizers/torch_adamw.py new file mode 100644 index 000000000000..394727cd9b59 --- /dev/null +++ b/keras/src/backend/torch/optimizers/torch_adamw.py @@ -0,0 +1,6 @@ +from keras.src import optimizers +from keras.src.backend.torch.optimizers import torch_adam + + +class AdamW(torch_adam.Adam, optimizers.AdamW): + pass diff --git a/keras/backend/torch/optimizers/torch_lion.py b/keras/src/backend/torch/optimizers/torch_lion.py similarity index 87% rename from keras/backend/torch/optimizers/torch_lion.py rename to keras/src/backend/torch/optimizers/torch_lion.py index 9bb58d6fe328..f2022ad6e53e 100644 --- a/keras/backend/torch/optimizers/torch_lion.py +++ b/keras/src/backend/torch/optimizers/torch_lion.py @@ -1,8 +1,8 @@ import torch -from keras import ops -from keras import optimizers -from keras.backend.torch.optimizers import torch_parallel_optimizer +from keras.src import ops +from keras.src import optimizers +from keras.src.backend.torch.optimizers import torch_parallel_optimizer class Lion(torch_parallel_optimizer.TorchParallelOptimizer, optimizers.Lion): diff --git a/keras/backend/torch/optimizers/torch_nadam.py b/keras/src/backend/torch/optimizers/torch_nadam.py similarity index 92% rename from keras/backend/torch/optimizers/torch_nadam.py rename to keras/src/backend/torch/optimizers/torch_nadam.py index 08b73bb0c438..df82bd2c473b 100644 --- a/keras/backend/torch/optimizers/torch_nadam.py +++ b/keras/src/backend/torch/optimizers/torch_nadam.py @@ -1,9 +1,9 @@ import torch -from keras import ops -from keras import optimizers -from keras.backend.torch import core -from keras.backend.torch.optimizers import torch_parallel_optimizer +from keras.src import ops +from keras.src import optimizers +from keras.src.backend.torch import core +from keras.src.backend.torch.optimizers import torch_parallel_optimizer class Nadam(torch_parallel_optimizer.TorchParallelOptimizer, optimizers.Nadam): diff --git a/keras/backend/torch/optimizers/torch_optimizer.py b/keras/src/backend/torch/optimizers/torch_optimizer.py similarity index 58% rename from keras/backend/torch/optimizers/torch_optimizer.py rename to keras/src/backend/torch/optimizers/torch_optimizer.py index 880b6f3ee04b..85fc274c574f 100644 --- a/keras/backend/torch/optimizers/torch_optimizer.py +++ b/keras/src/backend/torch/optimizers/torch_optimizer.py @@ -1,22 +1,22 @@ import torch -from keras import optimizers -from keras.optimizers.base_optimizer import BaseOptimizer -from keras.utils import torch_utils +from keras.src import optimizers +from keras.src.optimizers.base_optimizer import BaseOptimizer +from keras.src.utils import torch_utils class TorchOptimizer(BaseOptimizer): def __new__(cls, *args, **kwargs): # Import locally to avoid circular imports. - from keras.backend.torch.optimizers import torch_adadelta - from keras.backend.torch.optimizers import torch_adagrad - from keras.backend.torch.optimizers import torch_adam - from keras.backend.torch.optimizers import torch_adamax - from keras.backend.torch.optimizers import torch_adamw - from keras.backend.torch.optimizers import torch_lion - from keras.backend.torch.optimizers import torch_nadam - from keras.backend.torch.optimizers import torch_rmsprop - from keras.backend.torch.optimizers import torch_sgd + from keras.src.backend.torch.optimizers import torch_adadelta + from keras.src.backend.torch.optimizers import torch_adagrad + from keras.src.backend.torch.optimizers import torch_adam + from keras.src.backend.torch.optimizers import torch_adamax + from keras.src.backend.torch.optimizers import torch_adamw + from keras.src.backend.torch.optimizers import torch_lion + from keras.src.backend.torch.optimizers import torch_nadam + from keras.src.backend.torch.optimizers import torch_rmsprop + from keras.src.backend.torch.optimizers import torch_sgd OPTIMIZERS = { optimizers.Adadelta: torch_adadelta.Adadelta, diff --git a/keras/backend/torch/optimizers/torch_parallel_optimizer.py b/keras/src/backend/torch/optimizers/torch_parallel_optimizer.py similarity index 87% rename from keras/backend/torch/optimizers/torch_parallel_optimizer.py rename to keras/src/backend/torch/optimizers/torch_parallel_optimizer.py index 3aa8a072a087..4fe3802af226 100644 --- a/keras/backend/torch/optimizers/torch_parallel_optimizer.py +++ b/keras/src/backend/torch/optimizers/torch_parallel_optimizer.py @@ -1,7 +1,7 @@ import torch -from keras.optimizers.base_optimizer import BaseOptimizer -from keras.utils import torch_utils +from keras.src.optimizers.base_optimizer import BaseOptimizer +from keras.src.utils import torch_utils class TorchParallelOptimizer(BaseOptimizer): diff --git a/keras/backend/torch/optimizers/torch_rmsprop.py b/keras/src/backend/torch/optimizers/torch_rmsprop.py similarity index 93% rename from keras/backend/torch/optimizers/torch_rmsprop.py rename to keras/src/backend/torch/optimizers/torch_rmsprop.py index 100c72c25cee..49c4c3916bc1 100644 --- a/keras/backend/torch/optimizers/torch_rmsprop.py +++ b/keras/src/backend/torch/optimizers/torch_rmsprop.py @@ -1,8 +1,8 @@ import torch -from keras import ops -from keras import optimizers -from keras.backend.torch.optimizers import torch_parallel_optimizer +from keras.src import ops +from keras.src import optimizers +from keras.src.backend.torch.optimizers import torch_parallel_optimizer class RMSprop( diff --git a/keras/backend/torch/optimizers/torch_sgd.py b/keras/src/backend/torch/optimizers/torch_sgd.py similarity index 91% rename from keras/backend/torch/optimizers/torch_sgd.py rename to keras/src/backend/torch/optimizers/torch_sgd.py index 726f102170e1..f16220d85ac3 100644 --- a/keras/backend/torch/optimizers/torch_sgd.py +++ b/keras/src/backend/torch/optimizers/torch_sgd.py @@ -1,7 +1,7 @@ import torch -from keras import optimizers -from keras.backend.torch.optimizers import torch_parallel_optimizer +from keras.src import optimizers +from keras.src.backend.torch.optimizers import torch_parallel_optimizer class SGD(torch_parallel_optimizer.TorchParallelOptimizer, optimizers.SGD): diff --git a/keras/backend/torch/random.py b/keras/src/backend/torch/random.py similarity index 95% rename from keras/backend/torch/random.py rename to keras/src/backend/torch/random.py index ab81713d1f68..e080731952e6 100644 --- a/keras/backend/torch/random.py +++ b/keras/src/backend/torch/random.py @@ -2,13 +2,13 @@ import torch._dynamo as dynamo import torch.nn.functional as tnn -from keras.backend.config import floatx -from keras.backend.torch.core import convert_to_tensor -from keras.backend.torch.core import get_device -from keras.backend.torch.core import to_torch_dtype -from keras.random.seed_generator import SeedGenerator -from keras.random.seed_generator import draw_seed -from keras.random.seed_generator import make_default_seed +from keras.src.backend.config import floatx +from keras.src.backend.torch.core import convert_to_tensor +from keras.src.backend.torch.core import get_device +from keras.src.backend.torch.core import to_torch_dtype +from keras.src.random.seed_generator import SeedGenerator +from keras.src.random.seed_generator import draw_seed +from keras.src.random.seed_generator import make_default_seed # torch.Generator not supported with dynamo diff --git a/keras/backend/torch/rnn.py b/keras/src/backend/torch/rnn.py similarity index 99% rename from keras/backend/torch/rnn.py rename to keras/src/backend/torch/rnn.py index 163f2bc26227..55604b4c77e5 100644 --- a/keras/backend/torch/rnn.py +++ b/keras/src/backend/torch/rnn.py @@ -1,7 +1,7 @@ import torch -from keras import tree -from keras.backend.torch.core import convert_to_tensor +from keras.src import tree +from keras.src.backend.torch.core import convert_to_tensor def rnn( diff --git a/keras/backend/torch/trainer.py b/keras/src/backend/torch/trainer.py similarity index 97% rename from keras/backend/torch/trainer.py rename to keras/src/backend/torch/trainer.py index f4cca60f84a4..0fb3ff529a47 100644 --- a/keras/backend/torch/trainer.py +++ b/keras/src/backend/torch/trainer.py @@ -4,15 +4,15 @@ import torch from packaging.version import parse -from keras import backend -from keras import callbacks as callbacks_module -from keras import optimizers as optimizers_module -from keras import tree -from keras.trainers import trainer as base_trainer -from keras.trainers.data_adapters import array_slicing -from keras.trainers.data_adapters import data_adapter_utils -from keras.trainers.epoch_iterator import EpochIterator -from keras.utils import traceback_utils +from keras.src import backend +from keras.src import callbacks as callbacks_module +from keras.src import optimizers as optimizers_module +from keras.src import tree +from keras.src.trainers import trainer as base_trainer +from keras.src.trainers.data_adapters import array_slicing +from keras.src.trainers.data_adapters import data_adapter_utils +from keras.src.trainers.epoch_iterator import EpochIterator +from keras.src.utils import traceback_utils class TorchTrainer(base_trainer.Trainer): diff --git a/keras/src/callbacks/__init__.py b/keras/src/callbacks/__init__.py new file mode 100644 index 000000000000..d8c835a418d4 --- /dev/null +++ b/keras/src/callbacks/__init__.py @@ -0,0 +1,15 @@ +from keras.src.callbacks.backup_and_restore import BackupAndRestore +from keras.src.callbacks.callback import Callback +from keras.src.callbacks.callback_list import CallbackList +from keras.src.callbacks.csv_logger import CSVLogger +from keras.src.callbacks.early_stopping import EarlyStopping +from keras.src.callbacks.history import History +from keras.src.callbacks.lambda_callback import LambdaCallback +from keras.src.callbacks.learning_rate_scheduler import LearningRateScheduler +from keras.src.callbacks.model_checkpoint import ModelCheckpoint +from keras.src.callbacks.progbar_logger import ProgbarLogger +from keras.src.callbacks.reduce_lr_on_plateau import ReduceLROnPlateau +from keras.src.callbacks.remote_monitor import RemoteMonitor +from keras.src.callbacks.swap_ema_weights import SwapEMAWeights +from keras.src.callbacks.tensorboard import TensorBoard +from keras.src.callbacks.terminate_on_nan import TerminateOnNaN diff --git a/keras/callbacks/backup_and_restore.py b/keras/src/callbacks/backup_and_restore.py similarity index 98% rename from keras/callbacks/backup_and_restore.py rename to keras/src/callbacks/backup_and_restore.py index 4798e8a5c5d2..36e52c15df42 100644 --- a/keras/callbacks/backup_and_restore.py +++ b/keras/src/callbacks/backup_and_restore.py @@ -1,8 +1,8 @@ import json -from keras.api_export import keras_export -from keras.callbacks.callback import Callback -from keras.utils import file_utils +from keras.src.api_export import keras_export +from keras.src.callbacks.callback import Callback +from keras.src.utils import file_utils @keras_export("keras.callbacks.BackupAndRestore") diff --git a/keras/callbacks/backup_and_restore_test.py b/keras/src/callbacks/backup_and_restore_test.py similarity index 97% rename from keras/callbacks/backup_and_restore_test.py rename to keras/src/callbacks/backup_and_restore_test.py index 814348307621..7ae5764bc5a8 100644 --- a/keras/callbacks/backup_and_restore_test.py +++ b/keras/src/callbacks/backup_and_restore_test.py @@ -1,11 +1,11 @@ import numpy as np import pytest -from keras import callbacks -from keras import layers -from keras import testing -from keras.models import Sequential -from keras.utils import file_utils +from keras.src import callbacks +from keras.src import layers +from keras.src import testing +from keras.src.models import Sequential +from keras.src.utils import file_utils class InterruptingCallback(callbacks.Callback): diff --git a/keras/callbacks/callback.py b/keras/src/callbacks/callback.py similarity index 99% rename from keras/callbacks/callback.py rename to keras/src/callbacks/callback.py index 764118655d7e..a232bd7a583f 100644 --- a/keras/callbacks/callback.py +++ b/keras/src/callbacks/callback.py @@ -1,5 +1,5 @@ -from keras import backend -from keras.api_export import keras_export +from keras.src import backend +from keras.src.api_export import keras_export @keras_export("keras.callbacks.Callback") diff --git a/keras/callbacks/callback_list.py b/keras/src/callbacks/callback_list.py similarity index 95% rename from keras/callbacks/callback_list.py rename to keras/src/callbacks/callback_list.py index 55d2567dbf35..04ea00a131f7 100644 --- a/keras/callbacks/callback_list.py +++ b/keras/src/callbacks/callback_list.py @@ -1,8 +1,8 @@ -from keras import tree -from keras.api_export import keras_export -from keras.callbacks.callback import Callback -from keras.callbacks.history import History -from keras.callbacks.progbar_logger import ProgbarLogger +from keras.src import tree +from keras.src.api_export import keras_export +from keras.src.callbacks.callback import Callback +from keras.src.callbacks.history import History +from keras.src.callbacks.progbar_logger import ProgbarLogger @keras_export("keras.callbacks.CallbackList") diff --git a/keras/callbacks/callback_test.py b/keras/src/callbacks/callback_test.py similarity index 89% rename from keras/callbacks/callback_test.py rename to keras/src/callbacks/callback_test.py index fcacf7eaa1da..31c77c904ceb 100644 --- a/keras/callbacks/callback_test.py +++ b/keras/src/callbacks/callback_test.py @@ -1,9 +1,9 @@ import numpy as np import pytest -from keras import models -from keras import testing -from keras.callbacks.callback import Callback +from keras.src import models +from keras.src import testing +from keras.src.callbacks.callback import Callback class CallbackTest(testing.TestCase): diff --git a/keras/callbacks/csv_logger.py b/keras/src/callbacks/csv_logger.py similarity index 95% rename from keras/callbacks/csv_logger.py rename to keras/src/callbacks/csv_logger.py index baab82adeb51..69665eacf004 100644 --- a/keras/callbacks/csv_logger.py +++ b/keras/src/callbacks/csv_logger.py @@ -3,9 +3,9 @@ import numpy as np -from keras.api_export import keras_export -from keras.callbacks.callback import Callback -from keras.utils import file_utils +from keras.src.api_export import keras_export +from keras.src.callbacks.callback import Callback +from keras.src.utils import file_utils @keras_export("keras.callbacks.CSVLogger") diff --git a/keras/callbacks/csv_logger_test.py b/keras/src/callbacks/csv_logger_test.py similarity index 96% rename from keras/callbacks/csv_logger_test.py rename to keras/src/callbacks/csv_logger_test.py index e2361b3711de..9da3be6aaa53 100644 --- a/keras/callbacks/csv_logger_test.py +++ b/keras/src/callbacks/csv_logger_test.py @@ -6,12 +6,12 @@ import numpy as np import pytest -from keras import callbacks -from keras import initializers -from keras import layers -from keras import testing -from keras.models import Sequential -from keras.utils import numerical_utils +from keras.src import callbacks +from keras.src import initializers +from keras.src import layers +from keras.src import testing +from keras.src.models import Sequential +from keras.src.utils import numerical_utils TRAIN_SAMPLES = 10 TEST_SAMPLES = 10 diff --git a/keras/callbacks/early_stopping.py b/keras/src/callbacks/early_stopping.py similarity index 97% rename from keras/callbacks/early_stopping.py rename to keras/src/callbacks/early_stopping.py index 1263357f4a3a..e7c1fe9c0dc0 100644 --- a/keras/callbacks/early_stopping.py +++ b/keras/src/callbacks/early_stopping.py @@ -1,10 +1,10 @@ import warnings -from keras import ops -from keras.api_export import keras_export -from keras.callbacks.callback import Callback -from keras.trainers import compile_utils -from keras.utils import io_utils +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.callbacks.callback import Callback +from keras.src.trainers import compile_utils +from keras.src.utils import io_utils @keras_export("keras.callbacks.EarlyStopping") diff --git a/keras/callbacks/early_stopping_test.py b/keras/src/callbacks/early_stopping_test.py similarity index 98% rename from keras/callbacks/early_stopping_test.py rename to keras/src/callbacks/early_stopping_test.py index 176e86ef6da3..e120fe8a2b2e 100644 --- a/keras/callbacks/early_stopping_test.py +++ b/keras/src/callbacks/early_stopping_test.py @@ -1,12 +1,12 @@ import numpy as np import pytest -from keras import callbacks -from keras import layers -from keras import metrics -from keras import models -from keras import ops -from keras import testing +from keras.src import callbacks +from keras.src import layers +from keras.src import metrics +from keras.src import models +from keras.src import ops +from keras.src import testing class EarlyStoppingTest(testing.TestCase): diff --git a/keras/callbacks/history.py b/keras/src/callbacks/history.py similarity index 92% rename from keras/callbacks/history.py rename to keras/src/callbacks/history.py index dd2a7d488c2e..6fb3c3c86171 100644 --- a/keras/callbacks/history.py +++ b/keras/src/callbacks/history.py @@ -1,5 +1,5 @@ -from keras.api_export import keras_export -from keras.callbacks.callback import Callback +from keras.src.api_export import keras_export +from keras.src.callbacks.callback import Callback @keras_export("keras.callbacks.History") diff --git a/keras/callbacks/lambda_callback.py b/keras/src/callbacks/lambda_callback.py similarity index 97% rename from keras/callbacks/lambda_callback.py rename to keras/src/callbacks/lambda_callback.py index 59756aebdb78..46dfd46e560c 100644 --- a/keras/callbacks/lambda_callback.py +++ b/keras/src/callbacks/lambda_callback.py @@ -1,5 +1,5 @@ -from keras.api_export import keras_export -from keras.callbacks.callback import Callback +from keras.src.api_export import keras_export +from keras.src.callbacks.callback import Callback @keras_export("keras.callbacks.LambdaCallback") diff --git a/keras/callbacks/lambda_callback_test.py b/keras/src/callbacks/lambda_callback_test.py similarity index 96% rename from keras/callbacks/lambda_callback_test.py rename to keras/src/callbacks/lambda_callback_test.py index bdecdac95af2..4c8a6add2146 100644 --- a/keras/callbacks/lambda_callback_test.py +++ b/keras/src/callbacks/lambda_callback_test.py @@ -2,12 +2,12 @@ import pytest from absl import logging -from keras import callbacks -from keras import layers -from keras import losses -from keras import optimizers -from keras import testing -from keras.models.sequential import Sequential +from keras.src import callbacks +from keras.src import layers +from keras.src import losses +from keras.src import optimizers +from keras.src import testing +from keras.src.models.sequential import Sequential class LambdaCallbackTest(testing.TestCase): diff --git a/keras/callbacks/learning_rate_scheduler.py b/keras/src/callbacks/learning_rate_scheduler.py similarity index 94% rename from keras/callbacks/learning_rate_scheduler.py rename to keras/src/callbacks/learning_rate_scheduler.py index dfedac312a30..6ac1486e8797 100644 --- a/keras/callbacks/learning_rate_scheduler.py +++ b/keras/src/callbacks/learning_rate_scheduler.py @@ -1,9 +1,9 @@ import numpy as np -from keras import backend -from keras.api_export import keras_export -from keras.callbacks.callback import Callback -from keras.utils import io_utils +from keras.src import backend +from keras.src.api_export import keras_export +from keras.src.callbacks.callback import Callback +from keras.src.utils import io_utils @keras_export("keras.callbacks.LearningRateScheduler") diff --git a/keras/callbacks/learning_rate_scheduler_test.py b/keras/src/callbacks/learning_rate_scheduler_test.py similarity index 92% rename from keras/callbacks/learning_rate_scheduler_test.py rename to keras/src/callbacks/learning_rate_scheduler_test.py index 7276825615b5..b76bcf8cf3cf 100644 --- a/keras/callbacks/learning_rate_scheduler_test.py +++ b/keras/src/callbacks/learning_rate_scheduler_test.py @@ -1,13 +1,13 @@ import pytest -from keras import callbacks -from keras import layers -from keras import optimizers -from keras import testing -from keras.models import Sequential -from keras.testing import test_utils -from keras.utils import io_utils -from keras.utils import numerical_utils +from keras.src import callbacks +from keras.src import layers +from keras.src import optimizers +from keras.src import testing +from keras.src.models import Sequential +from keras.src.testing import test_utils +from keras.src.utils import io_utils +from keras.src.utils import numerical_utils class LearningRateSchedulerTest(testing.TestCase): diff --git a/keras/callbacks/model_checkpoint.py b/keras/src/callbacks/model_checkpoint.py similarity index 98% rename from keras/callbacks/model_checkpoint.py rename to keras/src/callbacks/model_checkpoint.py index e9d329159194..b602fe4403d3 100644 --- a/keras/callbacks/model_checkpoint.py +++ b/keras/src/callbacks/model_checkpoint.py @@ -4,11 +4,11 @@ import numpy as np -from keras import backend -from keras.api_export import keras_export -from keras.callbacks.callback import Callback -from keras.utils import file_utils -from keras.utils import io_utils +from keras.src import backend +from keras.src.api_export import keras_export +from keras.src.callbacks.callback import Callback +from keras.src.utils import file_utils +from keras.src.utils import io_utils @keras_export("keras.callbacks.ModelCheckpoint") diff --git a/keras/callbacks/model_checkpoint_test.py b/keras/src/callbacks/model_checkpoint_test.py similarity index 98% rename from keras/callbacks/model_checkpoint_test.py rename to keras/src/callbacks/model_checkpoint_test.py index 680bb9501d74..38092e70a83f 100644 --- a/keras/callbacks/model_checkpoint_test.py +++ b/keras/src/callbacks/model_checkpoint_test.py @@ -3,15 +3,15 @@ import pytest -from keras import callbacks -from keras import layers -from keras import metrics -from keras import models -from keras import saving -from keras import testing -from keras.models import Sequential -from keras.testing import test_utils -from keras.utils import numerical_utils +from keras.src import callbacks +from keras.src import layers +from keras.src import metrics +from keras.src import models +from keras.src import saving +from keras.src import testing +from keras.src.models import Sequential +from keras.src.testing import test_utils +from keras.src.utils import numerical_utils try: import h5py diff --git a/keras/callbacks/progbar_logger.py b/keras/src/callbacks/progbar_logger.py similarity index 94% rename from keras/callbacks/progbar_logger.py rename to keras/src/callbacks/progbar_logger.py index be82f8a4f7a6..ac10d655a97c 100644 --- a/keras/callbacks/progbar_logger.py +++ b/keras/src/callbacks/progbar_logger.py @@ -1,7 +1,7 @@ -from keras.api_export import keras_export -from keras.callbacks.callback import Callback -from keras.utils import io_utils -from keras.utils.progbar import Progbar +from keras.src.api_export import keras_export +from keras.src.callbacks.callback import Callback +from keras.src.utils import io_utils +from keras.src.utils.progbar import Progbar @keras_export("keras.callbacks.ProgbarLogger") diff --git a/keras/callbacks/reduce_lr_on_plateau.py b/keras/src/callbacks/reduce_lr_on_plateau.py similarity index 96% rename from keras/callbacks/reduce_lr_on_plateau.py rename to keras/src/callbacks/reduce_lr_on_plateau.py index ccffb77206a5..d1ee33e34e1d 100644 --- a/keras/callbacks/reduce_lr_on_plateau.py +++ b/keras/src/callbacks/reduce_lr_on_plateau.py @@ -2,10 +2,10 @@ import numpy as np -from keras import backend -from keras.api_export import keras_export -from keras.callbacks.callback import Callback -from keras.utils import io_utils +from keras.src import backend +from keras.src.api_export import keras_export +from keras.src.callbacks.callback import Callback +from keras.src.utils import io_utils @keras_export("keras.callbacks.ReduceLROnPlateau") diff --git a/keras/callbacks/reduce_lr_on_plateau_test.py b/keras/src/callbacks/reduce_lr_on_plateau_test.py similarity index 93% rename from keras/callbacks/reduce_lr_on_plateau_test.py rename to keras/src/callbacks/reduce_lr_on_plateau_test.py index 10a8b0f47aec..96ebbaab2cf2 100644 --- a/keras/callbacks/reduce_lr_on_plateau_test.py +++ b/keras/src/callbacks/reduce_lr_on_plateau_test.py @@ -1,13 +1,13 @@ import pytest -from keras import callbacks -from keras import layers -from keras import optimizers -from keras import testing -from keras.models import Sequential -from keras.testing import test_utils -from keras.utils import io_utils -from keras.utils import numerical_utils +from keras.src import callbacks +from keras.src import layers +from keras.src import optimizers +from keras.src import testing +from keras.src.models import Sequential +from keras.src.testing import test_utils +from keras.src.utils import io_utils +from keras.src.utils import numerical_utils class ReduceLROnPlateauTest(testing.TestCase): diff --git a/keras/callbacks/remote_monitor.py b/keras/src/callbacks/remote_monitor.py similarity index 96% rename from keras/callbacks/remote_monitor.py rename to keras/src/callbacks/remote_monitor.py index 8ddca56aa95f..f8605a5c1726 100644 --- a/keras/callbacks/remote_monitor.py +++ b/keras/src/callbacks/remote_monitor.py @@ -3,8 +3,8 @@ import numpy as np -from keras.api_export import keras_export -from keras.callbacks.callback import Callback +from keras.src.api_export import keras_export +from keras.src.callbacks.callback import Callback try: import requests diff --git a/keras/callbacks/remote_monitor_test.py b/keras/src/callbacks/remote_monitor_test.py similarity index 94% rename from keras/callbacks/remote_monitor_test.py rename to keras/src/callbacks/remote_monitor_test.py index 3103580428e5..0660b5850975 100644 --- a/keras/callbacks/remote_monitor_test.py +++ b/keras/src/callbacks/remote_monitor_test.py @@ -3,12 +3,12 @@ import numpy as np -from keras import backend -from keras import callbacks -from keras import layers -from keras import testing -from keras.models import Sequential -from keras.utils import numerical_utils +from keras.src import backend +from keras.src import callbacks +from keras.src import layers +from keras.src import testing +from keras.src.models import Sequential +from keras.src.utils import numerical_utils try: import requests diff --git a/keras/callbacks/swap_ema_weights.py b/keras/src/callbacks/swap_ema_weights.py similarity index 97% rename from keras/callbacks/swap_ema_weights.py rename to keras/src/callbacks/swap_ema_weights.py index d7077c037886..9c13a90fff53 100644 --- a/keras/callbacks/swap_ema_weights.py +++ b/keras/src/callbacks/swap_ema_weights.py @@ -1,7 +1,7 @@ -from keras import backend -from keras import ops -from keras.api_export import keras_export -from keras.callbacks.callback import Callback +from keras.src import backend +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.callbacks.callback import Callback @keras_export("keras.callbacks.SwapEMAWeights") diff --git a/keras/callbacks/swap_ema_weights_test.py b/keras/src/callbacks/swap_ema_weights_test.py similarity index 94% rename from keras/callbacks/swap_ema_weights_test.py rename to keras/src/callbacks/swap_ema_weights_test.py index c24895d15a25..004544a27b30 100644 --- a/keras/callbacks/swap_ema_weights_test.py +++ b/keras/src/callbacks/swap_ema_weights_test.py @@ -4,17 +4,17 @@ import tensorflow as tf from tensorflow.python.eager import context -from keras import backend -from keras import callbacks -from keras import layers -from keras import losses -from keras import metrics -from keras import optimizers -from keras import saving -from keras import testing -from keras.models import Sequential -from keras.testing import test_utils -from keras.utils import numerical_utils +from keras.src import backend +from keras.src import callbacks +from keras.src import layers +from keras.src import losses +from keras.src import metrics +from keras.src import optimizers +from keras.src import saving +from keras.src import testing +from keras.src.models import Sequential +from keras.src.testing import test_utils +from keras.src.utils import numerical_utils class SwapEMAWeightsTest(testing.TestCase): diff --git a/keras/callbacks/tensorboard.py b/keras/src/callbacks/tensorboard.py similarity index 98% rename from keras/callbacks/tensorboard.py rename to keras/src/callbacks/tensorboard.py index 0a41c2b19e04..a9be2b29b816 100644 --- a/keras/callbacks/tensorboard.py +++ b/keras/src/callbacks/tensorboard.py @@ -4,14 +4,14 @@ import time import warnings -from keras import backend -from keras import ops -from keras import tree -from keras.api_export import keras_export -from keras.callbacks.callback import Callback -from keras.layers import Embedding -from keras.optimizers import Optimizer -from keras.utils import file_utils +from keras.src import backend +from keras.src import ops +from keras.src import tree +from keras.src.api_export import keras_export +from keras.src.callbacks.callback import Callback +from keras.src.layers import Embedding +from keras.src.optimizers import Optimizer +from keras.src.utils import file_utils @keras_export("keras.callbacks.TensorBoard") diff --git a/keras/callbacks/tensorboard_test.py b/keras/src/callbacks/tensorboard_test.py similarity index 98% rename from keras/callbacks/tensorboard_test.py rename to keras/src/callbacks/tensorboard_test.py index 598d6e26dee1..3f67532a2d08 100644 --- a/keras/callbacks/tensorboard_test.py +++ b/keras/src/callbacks/tensorboard_test.py @@ -9,15 +9,15 @@ from tensorflow.core.util import event_pb2 from tensorflow.python.lib.io import tf_record -from keras import backend -from keras import callbacks -from keras import layers -from keras import losses -from keras import models -from keras import ops -from keras import optimizers -from keras import testing -from keras.optimizers import schedules +from keras.src import backend +from keras.src import callbacks +from keras.src import layers +from keras.src import losses +from keras.src import models +from keras.src import ops +from keras.src import optimizers +from keras.src import testing +from keras.src.optimizers import schedules # Note: this file and tensorboard in general has a dependency on tensorflow diff --git a/keras/callbacks/terminate_on_nan.py b/keras/src/callbacks/terminate_on_nan.py similarity index 80% rename from keras/callbacks/terminate_on_nan.py rename to keras/src/callbacks/terminate_on_nan.py index 20eb5f2b3d70..55f7e4c06ab8 100644 --- a/keras/callbacks/terminate_on_nan.py +++ b/keras/src/callbacks/terminate_on_nan.py @@ -1,8 +1,8 @@ import numpy as np -from keras.api_export import keras_export -from keras.callbacks.callback import Callback -from keras.utils import io_utils +from keras.src.api_export import keras_export +from keras.src.callbacks.callback import Callback +from keras.src.utils import io_utils @keras_export("keras.callbacks.TerminateOnNaN") diff --git a/keras/callbacks/terminate_on_nan_test.py b/keras/src/callbacks/terminate_on_nan_test.py similarity index 87% rename from keras/callbacks/terminate_on_nan_test.py rename to keras/src/callbacks/terminate_on_nan_test.py index 39b6cba5130b..f84b1b89b6bc 100644 --- a/keras/callbacks/terminate_on_nan_test.py +++ b/keras/src/callbacks/terminate_on_nan_test.py @@ -1,12 +1,12 @@ import numpy as np import pytest -from keras import callbacks -from keras import initializers -from keras import layers -from keras import testing -from keras.models import Sequential -from keras.utils import numerical_utils +from keras.src import callbacks +from keras.src import initializers +from keras.src import layers +from keras.src import testing +from keras.src.models import Sequential +from keras.src.utils import numerical_utils class TerminateOnNaNTest(testing.TestCase): diff --git a/keras/constraints/__init__.py b/keras/src/constraints/__init__.py similarity index 75% rename from keras/constraints/__init__.py rename to keras/src/constraints/__init__.py index 08824e716344..cfafab080cd6 100644 --- a/keras/constraints/__init__.py +++ b/keras/src/constraints/__init__.py @@ -1,13 +1,13 @@ import inspect -from keras.api_export import keras_export -from keras.constraints.constraints import Constraint -from keras.constraints.constraints import MaxNorm -from keras.constraints.constraints import MinMaxNorm -from keras.constraints.constraints import NonNeg -from keras.constraints.constraints import UnitNorm -from keras.saving import serialization_lib -from keras.utils.naming import to_snake_case +from keras.src.api_export import keras_export +from keras.src.constraints.constraints import Constraint +from keras.src.constraints.constraints import MaxNorm +from keras.src.constraints.constraints import MinMaxNorm +from keras.src.constraints.constraints import NonNeg +from keras.src.constraints.constraints import UnitNorm +from keras.src.saving import serialization_lib +from keras.src.utils.naming import to_snake_case ALL_OBJECTS = { Constraint, diff --git a/keras/constraints/constraints.py b/keras/src/constraints/constraints.py similarity index 98% rename from keras/constraints/constraints.py rename to keras/src/constraints/constraints.py index a897e900aa0b..ecba6c69c45d 100644 --- a/keras/constraints/constraints.py +++ b/keras/src/constraints/constraints.py @@ -1,6 +1,6 @@ -from keras import backend -from keras import ops -from keras.api_export import keras_export +from keras.src import backend +from keras.src import ops +from keras.src.api_export import keras_export @keras_export("keras.constraints.Constraint") diff --git a/keras/constraints/constraints_test.py b/keras/src/constraints/constraints_test.py similarity index 97% rename from keras/constraints/constraints_test.py rename to keras/src/constraints/constraints_test.py index fb2168b161fa..0ebf6426e8f1 100644 --- a/keras/constraints/constraints_test.py +++ b/keras/src/constraints/constraints_test.py @@ -1,8 +1,8 @@ import numpy as np -from keras import backend -from keras import constraints -from keras import testing +from keras.src import backend +from keras.src import constraints +from keras.src import testing def get_example_array(): diff --git a/keras/src/datasets/__init__.py b/keras/src/datasets/__init__.py new file mode 100644 index 000000000000..b62b41c4e61b --- /dev/null +++ b/keras/src/datasets/__init__.py @@ -0,0 +1,10 @@ +"""Small NumPy datasets for debugging/testing.""" + +from keras.src.datasets import boston_housing +from keras.src.datasets import california_housing +from keras.src.datasets import cifar10 +from keras.src.datasets import cifar100 +from keras.src.datasets import fashion_mnist +from keras.src.datasets import imdb +from keras.src.datasets import mnist +from keras.src.datasets import reuters diff --git a/keras/datasets/boston_housing.py b/keras/src/datasets/boston_housing.py similarity index 96% rename from keras/datasets/boston_housing.py rename to keras/src/datasets/boston_housing.py index 40060de667ae..de6133a223d2 100644 --- a/keras/datasets/boston_housing.py +++ b/keras/src/datasets/boston_housing.py @@ -1,7 +1,7 @@ import numpy as np -from keras.api_export import keras_export -from keras.utils.file_utils import get_file +from keras.src.api_export import keras_export +from keras.src.utils.file_utils import get_file @keras_export("keras.datasets.boston_housing.load_data") diff --git a/keras/datasets/california_housing.py b/keras/src/datasets/california_housing.py similarity index 97% rename from keras/datasets/california_housing.py rename to keras/src/datasets/california_housing.py index b32d6f0ca10b..467d196a720d 100644 --- a/keras/datasets/california_housing.py +++ b/keras/src/datasets/california_housing.py @@ -2,8 +2,8 @@ import numpy as np -from keras.api_export import keras_export -from keras.utils.file_utils import get_file +from keras.src.api_export import keras_export +from keras.src.utils.file_utils import get_file @keras_export("keras.datasets.california_housing.load_data") diff --git a/keras/datasets/cifar.py b/keras/src/datasets/cifar.py similarity index 100% rename from keras/datasets/cifar.py rename to keras/src/datasets/cifar.py diff --git a/keras/datasets/cifar10.py b/keras/src/datasets/cifar10.py similarity index 94% rename from keras/datasets/cifar10.py rename to keras/src/datasets/cifar10.py index 2010bfca0bf7..f5d8a6178660 100644 --- a/keras/datasets/cifar10.py +++ b/keras/src/datasets/cifar10.py @@ -4,10 +4,10 @@ import numpy as np -from keras import backend -from keras.api_export import keras_export -from keras.datasets.cifar import load_batch -from keras.utils.file_utils import get_file +from keras.src import backend +from keras.src.api_export import keras_export +from keras.src.datasets.cifar import load_batch +from keras.src.utils.file_utils import get_file @keras_export("keras.datasets.cifar10.load_data") diff --git a/keras/datasets/cifar100.py b/keras/src/datasets/cifar100.py similarity index 94% rename from keras/datasets/cifar100.py rename to keras/src/datasets/cifar100.py index a09cc0398d7d..5d58b5b18787 100644 --- a/keras/datasets/cifar100.py +++ b/keras/src/datasets/cifar100.py @@ -4,10 +4,10 @@ import numpy as np -from keras import backend -from keras.api_export import keras_export -from keras.datasets.cifar import load_batch -from keras.utils.file_utils import get_file +from keras.src import backend +from keras.src.api_export import keras_export +from keras.src.datasets.cifar import load_batch +from keras.src.utils.file_utils import get_file @keras_export("keras.datasets.cifar100.load_data") diff --git a/keras/datasets/fashion_mnist.py b/keras/src/datasets/fashion_mnist.py similarity index 96% rename from keras/datasets/fashion_mnist.py rename to keras/src/datasets/fashion_mnist.py index 286a7b18ecd5..6700490e058d 100644 --- a/keras/datasets/fashion_mnist.py +++ b/keras/src/datasets/fashion_mnist.py @@ -5,8 +5,8 @@ import numpy as np -from keras.api_export import keras_export -from keras.utils.file_utils import get_file +from keras.src.api_export import keras_export +from keras.src.utils.file_utils import get_file @keras_export("keras.datasets.fashion_mnist.load_data") diff --git a/keras/datasets/imdb.py b/keras/src/datasets/imdb.py similarity index 97% rename from keras/datasets/imdb.py rename to keras/src/datasets/imdb.py index 4b4d79b718ad..a8b5537b111f 100644 --- a/keras/datasets/imdb.py +++ b/keras/src/datasets/imdb.py @@ -4,9 +4,9 @@ import numpy as np -from keras.api_export import keras_export -from keras.utils.file_utils import get_file -from keras.utils.python_utils import remove_long_seq +from keras.src.api_export import keras_export +from keras.src.utils.file_utils import get_file +from keras.src.utils.python_utils import remove_long_seq @keras_export("keras.datasets.imdb.load_data") diff --git a/keras/datasets/mnist.py b/keras/src/datasets/mnist.py similarity index 96% rename from keras/datasets/mnist.py rename to keras/src/datasets/mnist.py index 74d6b0d4fac1..b7e41cb78136 100644 --- a/keras/datasets/mnist.py +++ b/keras/src/datasets/mnist.py @@ -2,8 +2,8 @@ import numpy as np -from keras.api_export import keras_export -from keras.utils.file_utils import get_file +from keras.src.api_export import keras_export +from keras.src.utils.file_utils import get_file @keras_export("keras.datasets.mnist.load_data") diff --git a/keras/datasets/reuters.py b/keras/src/datasets/reuters.py similarity index 97% rename from keras/datasets/reuters.py rename to keras/src/datasets/reuters.py index 86aa7591673c..998754d1c282 100644 --- a/keras/datasets/reuters.py +++ b/keras/src/datasets/reuters.py @@ -4,9 +4,9 @@ import numpy as np -from keras.api_export import keras_export -from keras.utils.file_utils import get_file -from keras.utils.python_utils import remove_long_seq +from keras.src.api_export import keras_export +from keras.src.utils.file_utils import get_file +from keras.src.utils.python_utils import remove_long_seq @keras_export("keras.datasets.reuters.load_data") diff --git a/keras/src/distribution/__init__.py b/keras/src/distribution/__init__.py new file mode 100644 index 000000000000..04d907f35697 --- /dev/null +++ b/keras/src/distribution/__init__.py @@ -0,0 +1,11 @@ +from keras.src.distribution.distribution_lib import DataParallel +from keras.src.distribution.distribution_lib import DeviceMesh +from keras.src.distribution.distribution_lib import Distribution +from keras.src.distribution.distribution_lib import LayoutMap +from keras.src.distribution.distribution_lib import ModelParallel +from keras.src.distribution.distribution_lib import TensorLayout +from keras.src.distribution.distribution_lib import distribute_tensor +from keras.src.distribution.distribution_lib import distribution +from keras.src.distribution.distribution_lib import initialize +from keras.src.distribution.distribution_lib import list_devices +from keras.src.distribution.distribution_lib import set_distribution diff --git a/keras/distribution/distribution_lib.py b/keras/src/distribution/distribution_lib.py similarity index 98% rename from keras/distribution/distribution_lib.py rename to keras/src/distribution/distribution_lib.py index fa2828f1f87e..817355bba7b6 100644 --- a/keras/distribution/distribution_lib.py +++ b/keras/src/distribution/distribution_lib.py @@ -14,10 +14,10 @@ import numpy as np -from keras.api_export import keras_export -from keras.backend import KerasTensor -from keras.backend import distribution_lib -from keras.backend.common import global_state +from keras.src.api_export import keras_export +from keras.src.backend import KerasTensor +from keras.src.backend import distribution_lib +from keras.src.backend.common import global_state DEFAULT_BATCH_DIM_NAME = "batch" GLOBAL_ATTRIBUTE_NAME = "distribution" @@ -452,7 +452,7 @@ def distribute_dataset(self, dataset): distribute as tf_data_distribute, ) - from keras.utils.module_utils import tensorflow as tf + from keras.src.utils.module_utils import tensorflow as tf if not isinstance(dataset, tf.data.Dataset): raise ValueError( @@ -594,7 +594,7 @@ def distribute_dataset(self, dataset): distribute as tf_data_distribute, ) - from keras.utils.module_utils import tensorflow as tf + from keras.src.utils.module_utils import tensorflow as tf if not isinstance(dataset, tf.data.Dataset): raise ValueError( diff --git a/keras/distribution/distribution_lib_test.py b/keras/src/distribution/distribution_lib_test.py similarity index 99% rename from keras/distribution/distribution_lib_test.py rename to keras/src/distribution/distribution_lib_test.py index 7743f91f3944..93cadcd70f2d 100644 --- a/keras/distribution/distribution_lib_test.py +++ b/keras/src/distribution/distribution_lib_test.py @@ -7,10 +7,10 @@ import pytest import tensorflow as tf -from keras import backend -from keras import testing -from keras.backend import distribution_lib as backend_dlib -from keras.distribution import distribution_lib +from keras.src import backend +from keras.src import testing +from keras.src.backend import distribution_lib as backend_dlib +from keras.src.distribution import distribution_lib @pytest.mark.skipif( diff --git a/keras/dtype_policies/__init__.py b/keras/src/dtype_policies/__init__.py similarity index 64% rename from keras/dtype_policies/__init__.py rename to keras/src/dtype_policies/__init__.py index 39ccb8497ed5..ec84c2660417 100644 --- a/keras/dtype_policies/__init__.py +++ b/keras/src/dtype_policies/__init__.py @@ -1,16 +1,16 @@ -from keras import backend -from keras.dtype_policies import dtype_policy -from keras.dtype_policies.dtype_policy import QUANTIZATION_MODES -from keras.dtype_policies.dtype_policy import FloatDTypePolicy -from keras.dtype_policies.dtype_policy import QuantizedDTypePolicy -from keras.dtype_policies.dtype_policy import QuantizedFloat8DTypePolicy +from keras.src import backend +from keras.src.dtype_policies import dtype_policy +from keras.src.dtype_policies.dtype_policy import QUANTIZATION_MODES +from keras.src.dtype_policies.dtype_policy import FloatDTypePolicy +from keras.src.dtype_policies.dtype_policy import QuantizedDTypePolicy +from keras.src.dtype_policies.dtype_policy import QuantizedFloat8DTypePolicy def get(identifier): - from keras.dtype_policies.dtype_policy import ( + from keras.src.dtype_policies.dtype_policy import ( _get_quantized_dtype_policy_by_str, ) - from keras.saving import serialization_lib + from keras.src.saving import serialization_lib if identifier is None: return dtype_policy.dtype_policy() diff --git a/keras/dtype_policies/dtype_policy.py b/keras/src/dtype_policies/dtype_policy.py similarity index 98% rename from keras/dtype_policies/dtype_policy.py rename to keras/src/dtype_policies/dtype_policy.py index 0499a17bd3e7..75b39f075a26 100644 --- a/keras/dtype_policies/dtype_policy.py +++ b/keras/src/dtype_policies/dtype_policy.py @@ -1,7 +1,7 @@ -from keras import backend -from keras import ops -from keras.api_export import keras_export -from keras.backend.common import global_state +from keras.src import backend +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.backend.common import global_state QUANTIZATION_MODES = ("int8", "float8") diff --git a/keras/dtype_policies/dtype_policy_test.py b/keras/src/dtype_policies/dtype_policy_test.py similarity index 96% rename from keras/dtype_policies/dtype_policy_test.py rename to keras/src/dtype_policies/dtype_policy_test.py index 3e4fb8f75f5b..b040663781a8 100644 --- a/keras/dtype_policies/dtype_policy_test.py +++ b/keras/src/dtype_policies/dtype_policy_test.py @@ -1,12 +1,12 @@ from absl.testing import parameterized -from keras.dtype_policies.dtype_policy import DTypePolicy -from keras.dtype_policies.dtype_policy import FloatDTypePolicy -from keras.dtype_policies.dtype_policy import QuantizedDTypePolicy -from keras.dtype_policies.dtype_policy import QuantizedFloat8DTypePolicy -from keras.dtype_policies.dtype_policy import dtype_policy -from keras.dtype_policies.dtype_policy import set_dtype_policy -from keras.testing import test_case +from keras.src.dtype_policies.dtype_policy import DTypePolicy +from keras.src.dtype_policies.dtype_policy import FloatDTypePolicy +from keras.src.dtype_policies.dtype_policy import QuantizedDTypePolicy +from keras.src.dtype_policies.dtype_policy import QuantizedFloat8DTypePolicy +from keras.src.dtype_policies.dtype_policy import dtype_policy +from keras.src.dtype_policies.dtype_policy import set_dtype_policy +from keras.src.testing import test_case class DTypePolicyTest(test_case.TestCase): @@ -293,7 +293,7 @@ def test_serialization_for_float8(self): ("float8_from_mixed_bfloat16", "float8_from_mixed_bfloat16"), ) def test_get_quantized_dtype_policy_by_str(self, name): - from keras.dtype_policies.dtype_policy import ( + from keras.src.dtype_policies.dtype_policy import ( _get_quantized_dtype_policy_by_str, ) @@ -301,7 +301,7 @@ def test_get_quantized_dtype_policy_by_str(self, name): self.assertEqual(policy.name, name) def test_invalid_get_quantized_dtype_policy_by_str(self): - from keras.dtype_policies.dtype_policy import ( + from keras.src.dtype_policies.dtype_policy import ( _get_quantized_dtype_policy_by_str, ) diff --git a/keras/src/export/__init__.py b/keras/src/export/__init__.py new file mode 100644 index 000000000000..d9de43f685a0 --- /dev/null +++ b/keras/src/export/__init__.py @@ -0,0 +1 @@ +from keras.src.export.export_lib import ExportArchive diff --git a/keras/export/export_lib.py b/keras/src/export/export_lib.py similarity index 98% rename from keras/export/export_lib.py rename to keras/src/export/export_lib.py index a06901a3cae0..09ec145699cf 100644 --- a/keras/export/export_lib.py +++ b/keras/src/export/export_lib.py @@ -6,15 +6,15 @@ from absl import logging -from keras import backend -from keras import tree -from keras.api_export import keras_export -from keras.backend.common.stateless_scope import StatelessScope -from keras.layers import Layer -from keras.models import Functional -from keras.models import Sequential -from keras.utils import io_utils -from keras.utils.module_utils import tensorflow as tf +from keras.src import backend +from keras.src import tree +from keras.src.api_export import keras_export +from keras.src.backend.common.stateless_scope import StatelessScope +from keras.src.layers import Layer +from keras.src.models import Functional +from keras.src.models import Sequential +from keras.src.utils import io_utils +from keras.src.utils.module_utils import tensorflow as tf @keras_export("keras.export.ExportArchive") @@ -524,9 +524,9 @@ def _filter_and_track_resources(self): # Next, track lookup tables. # Hopefully, one day this will be automated at the tf.function level. self._tf_trackable._misc_assets = [] - from keras.layers import IntegerLookup - from keras.layers import StringLookup - from keras.layers import TextVectorization + from keras.src.layers import IntegerLookup + from keras.src.layers import StringLookup + from keras.src.layers import TextVectorization if hasattr(self, "_tracked"): for root in self._tracked: diff --git a/keras/export/export_lib_test.py b/keras/src/export/export_lib_test.py similarity index 98% rename from keras/export/export_lib_test.py rename to keras/src/export/export_lib_test.py index e53a84ce9a4b..dd23857df40f 100644 --- a/keras/export/export_lib_test.py +++ b/keras/src/export/export_lib_test.py @@ -7,17 +7,17 @@ import tensorflow as tf from absl.testing import parameterized -from keras import backend -from keras import layers -from keras import models -from keras import ops -from keras import random -from keras import testing -from keras import tree -from keras import utils -from keras.export import export_lib -from keras.saving import saving_lib -from keras.testing.test_utils import named_product +from keras.src import backend +from keras.src import layers +from keras.src import models +from keras.src import ops +from keras.src import random +from keras.src import testing +from keras.src import tree +from keras.src import utils +from keras.src.export import export_lib +from keras.src.saving import saving_lib +from keras.src.testing.test_utils import named_product class CustomModel(models.Model): diff --git a/keras/initializers/__init__.py b/keras/src/initializers/__init__.py similarity index 69% rename from keras/initializers/__init__.py rename to keras/src/initializers/__init__.py index b428e259fdf1..af46b7ff9b8a 100644 --- a/keras/initializers/__init__.py +++ b/keras/src/initializers/__init__.py @@ -1,24 +1,24 @@ import inspect -from keras.api_export import keras_export -from keras.initializers.constant_initializers import Constant -from keras.initializers.constant_initializers import Identity -from keras.initializers.constant_initializers import Ones -from keras.initializers.constant_initializers import Zeros -from keras.initializers.initializer import Initializer -from keras.initializers.random_initializers import GlorotNormal -from keras.initializers.random_initializers import GlorotUniform -from keras.initializers.random_initializers import HeNormal -from keras.initializers.random_initializers import HeUniform -from keras.initializers.random_initializers import LecunNormal -from keras.initializers.random_initializers import LecunUniform -from keras.initializers.random_initializers import OrthogonalInitializer -from keras.initializers.random_initializers import RandomNormal -from keras.initializers.random_initializers import RandomUniform -from keras.initializers.random_initializers import TruncatedNormal -from keras.initializers.random_initializers import VarianceScaling -from keras.saving import serialization_lib -from keras.utils.naming import to_snake_case +from keras.src.api_export import keras_export +from keras.src.initializers.constant_initializers import Constant +from keras.src.initializers.constant_initializers import Identity +from keras.src.initializers.constant_initializers import Ones +from keras.src.initializers.constant_initializers import Zeros +from keras.src.initializers.initializer import Initializer +from keras.src.initializers.random_initializers import GlorotNormal +from keras.src.initializers.random_initializers import GlorotUniform +from keras.src.initializers.random_initializers import HeNormal +from keras.src.initializers.random_initializers import HeUniform +from keras.src.initializers.random_initializers import LecunNormal +from keras.src.initializers.random_initializers import LecunUniform +from keras.src.initializers.random_initializers import OrthogonalInitializer +from keras.src.initializers.random_initializers import RandomNormal +from keras.src.initializers.random_initializers import RandomUniform +from keras.src.initializers.random_initializers import TruncatedNormal +from keras.src.initializers.random_initializers import VarianceScaling +from keras.src.saving import serialization_lib +from keras.src.utils.naming import to_snake_case ALL_OBJECTS = { Initializer, diff --git a/keras/initializers/constant_initializers.py b/keras/src/initializers/constant_initializers.py similarity index 95% rename from keras/initializers/constant_initializers.py rename to keras/src/initializers/constant_initializers.py index f8d34f29d10a..c5ab6a42d6b2 100644 --- a/keras/initializers/constant_initializers.py +++ b/keras/src/initializers/constant_initializers.py @@ -1,8 +1,8 @@ -from keras import ops -from keras.api_export import keras_export -from keras.backend import standardize_dtype -from keras.initializers.initializer import Initializer -from keras.saving import serialization_lib +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.backend import standardize_dtype +from keras.src.initializers.initializer import Initializer +from keras.src.saving import serialization_lib @keras_export(["keras.initializers.Constant", "keras.initializers.constant"]) diff --git a/keras/initializers/constant_initializers_test.py b/keras/src/initializers/constant_initializers_test.py similarity index 95% rename from keras/initializers/constant_initializers_test.py rename to keras/src/initializers/constant_initializers_test.py index fca8b620dc99..ace475b499e1 100644 --- a/keras/initializers/constant_initializers_test.py +++ b/keras/src/initializers/constant_initializers_test.py @@ -1,8 +1,8 @@ import numpy as np -from keras import backend -from keras import initializers -from keras import testing +from keras.src import backend +from keras.src import initializers +from keras.src import testing class ConstantInitializersTest(testing.TestCase): diff --git a/keras/initializers/initializer.py b/keras/src/initializers/initializer.py similarity index 98% rename from keras/initializers/initializer.py rename to keras/src/initializers/initializer.py index 6ea8ca123427..6d870488c3f4 100644 --- a/keras/initializers/initializer.py +++ b/keras/src/initializers/initializer.py @@ -1,4 +1,4 @@ -from keras.api_export import keras_export +from keras.src.api_export import keras_export @keras_export(["keras.Initializer", "keras.initializers.Initializer"]) diff --git a/keras/initializers/random_initializers.py b/keras/src/initializers/random_initializers.py similarity index 99% rename from keras/initializers/random_initializers.py rename to keras/src/initializers/random_initializers.py index 8c43df739aba..a25a654aa4bf 100644 --- a/keras/initializers/random_initializers.py +++ b/keras/src/initializers/random_initializers.py @@ -1,10 +1,10 @@ import math -from keras import ops -from keras.api_export import keras_export -from keras.backend import random -from keras.initializers.initializer import Initializer -from keras.saving import serialization_lib +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.backend import random +from keras.src.initializers.initializer import Initializer +from keras.src.saving import serialization_lib @keras_export( diff --git a/keras/initializers/random_initializers_test.py b/keras/src/initializers/random_initializers_test.py similarity index 98% rename from keras/initializers/random_initializers_test.py rename to keras/src/initializers/random_initializers_test.py index d47d412a7515..b58cf64ba610 100644 --- a/keras/initializers/random_initializers_test.py +++ b/keras/src/initializers/random_initializers_test.py @@ -1,9 +1,9 @@ import numpy as np -from keras import backend -from keras import initializers -from keras import testing -from keras import utils +from keras.src import backend +from keras.src import initializers +from keras.src import testing +from keras.src import utils class InitializersTest(testing.TestCase): diff --git a/keras/src/layers/__init__.py b/keras/src/layers/__init__.py new file mode 100644 index 000000000000..567e1c7526e1 --- /dev/null +++ b/keras/src/layers/__init__.py @@ -0,0 +1,175 @@ +from keras.src.api_export import keras_export +from keras.src.layers.activations.activation import Activation +from keras.src.layers.activations.elu import ELU +from keras.src.layers.activations.leaky_relu import LeakyReLU +from keras.src.layers.activations.prelu import PReLU +from keras.src.layers.activations.relu import ReLU +from keras.src.layers.activations.softmax import Softmax +from keras.src.layers.attention.additive_attention import AdditiveAttention +from keras.src.layers.attention.attention import Attention +from keras.src.layers.attention.grouped_query_attention import ( + GroupedQueryAttention, +) +from keras.src.layers.attention.multi_head_attention import MultiHeadAttention +from keras.src.layers.convolutional.conv1d import Conv1D +from keras.src.layers.convolutional.conv1d_transpose import Conv1DTranspose +from keras.src.layers.convolutional.conv2d import Conv2D +from keras.src.layers.convolutional.conv2d_transpose import Conv2DTranspose +from keras.src.layers.convolutional.conv3d import Conv3D +from keras.src.layers.convolutional.conv3d_transpose import Conv3DTranspose +from keras.src.layers.convolutional.depthwise_conv1d import DepthwiseConv1D +from keras.src.layers.convolutional.depthwise_conv2d import DepthwiseConv2D +from keras.src.layers.convolutional.separable_conv1d import SeparableConv1D +from keras.src.layers.convolutional.separable_conv2d import SeparableConv2D +from keras.src.layers.core.dense import Dense +from keras.src.layers.core.einsum_dense import EinsumDense +from keras.src.layers.core.embedding import Embedding +from keras.src.layers.core.identity import Identity +from keras.src.layers.core.input_layer import Input +from keras.src.layers.core.input_layer import InputLayer +from keras.src.layers.core.lambda_layer import Lambda +from keras.src.layers.core.masking import Masking +from keras.src.layers.core.wrapper import Wrapper +from keras.src.layers.layer import Layer +from keras.src.layers.merging.add import Add +from keras.src.layers.merging.add import add +from keras.src.layers.merging.average import Average +from keras.src.layers.merging.average import average +from keras.src.layers.merging.concatenate import Concatenate +from keras.src.layers.merging.concatenate import concatenate +from keras.src.layers.merging.dot import Dot +from keras.src.layers.merging.dot import dot +from keras.src.layers.merging.maximum import Maximum +from keras.src.layers.merging.maximum import maximum +from keras.src.layers.merging.minimum import Minimum +from keras.src.layers.merging.minimum import minimum +from keras.src.layers.merging.multiply import Multiply +from keras.src.layers.merging.multiply import multiply +from keras.src.layers.merging.subtract import Subtract +from keras.src.layers.merging.subtract import subtract +from keras.src.layers.normalization.batch_normalization import ( + BatchNormalization, +) +from keras.src.layers.normalization.group_normalization import ( + GroupNormalization, +) +from keras.src.layers.normalization.layer_normalization import ( + LayerNormalization, +) +from keras.src.layers.normalization.spectral_normalization import ( + SpectralNormalization, +) +from keras.src.layers.normalization.unit_normalization import UnitNormalization +from keras.src.layers.pooling.average_pooling1d import AveragePooling1D +from keras.src.layers.pooling.average_pooling2d import AveragePooling2D +from keras.src.layers.pooling.average_pooling3d import AveragePooling3D +from keras.src.layers.pooling.global_average_pooling1d import ( + GlobalAveragePooling1D, +) +from keras.src.layers.pooling.global_average_pooling2d import ( + GlobalAveragePooling2D, +) +from keras.src.layers.pooling.global_average_pooling3d import ( + GlobalAveragePooling3D, +) +from keras.src.layers.pooling.global_max_pooling1d import GlobalMaxPooling1D +from keras.src.layers.pooling.global_max_pooling2d import GlobalMaxPooling2D +from keras.src.layers.pooling.global_max_pooling3d import GlobalMaxPooling3D +from keras.src.layers.pooling.max_pooling1d import MaxPooling1D +from keras.src.layers.pooling.max_pooling2d import MaxPooling2D +from keras.src.layers.pooling.max_pooling3d import MaxPooling3D +from keras.src.layers.preprocessing.audio_preprocessing import MelSpectrogram +from keras.src.layers.preprocessing.category_encoding import CategoryEncoding +from keras.src.layers.preprocessing.center_crop import CenterCrop +from keras.src.layers.preprocessing.discretization import Discretization +from keras.src.layers.preprocessing.hashed_crossing import HashedCrossing +from keras.src.layers.preprocessing.hashing import Hashing +from keras.src.layers.preprocessing.index_lookup import IndexLookup +from keras.src.layers.preprocessing.integer_lookup import IntegerLookup +from keras.src.layers.preprocessing.normalization import Normalization +from keras.src.layers.preprocessing.random_brightness import RandomBrightness +from keras.src.layers.preprocessing.random_contrast import RandomContrast +from keras.src.layers.preprocessing.random_crop import RandomCrop +from keras.src.layers.preprocessing.random_flip import RandomFlip +from keras.src.layers.preprocessing.random_rotation import RandomRotation +from keras.src.layers.preprocessing.random_translation import RandomTranslation +from keras.src.layers.preprocessing.random_zoom import RandomZoom +from keras.src.layers.preprocessing.rescaling import Rescaling +from keras.src.layers.preprocessing.resizing import Resizing +from keras.src.layers.preprocessing.string_lookup import StringLookup +from keras.src.layers.preprocessing.text_vectorization import TextVectorization +from keras.src.layers.regularization.activity_regularization import ( + ActivityRegularization, +) +from keras.src.layers.regularization.alpha_dropout import AlphaDropout +from keras.src.layers.regularization.dropout import Dropout +from keras.src.layers.regularization.gaussian_dropout import GaussianDropout +from keras.src.layers.regularization.gaussian_noise import GaussianNoise +from keras.src.layers.regularization.spatial_dropout import SpatialDropout1D +from keras.src.layers.regularization.spatial_dropout import SpatialDropout2D +from keras.src.layers.regularization.spatial_dropout import SpatialDropout3D +from keras.src.layers.reshaping.cropping1d import Cropping1D +from keras.src.layers.reshaping.cropping2d import Cropping2D +from keras.src.layers.reshaping.cropping3d import Cropping3D +from keras.src.layers.reshaping.flatten import Flatten +from keras.src.layers.reshaping.permute import Permute +from keras.src.layers.reshaping.repeat_vector import RepeatVector +from keras.src.layers.reshaping.reshape import Reshape +from keras.src.layers.reshaping.up_sampling1d import UpSampling1D +from keras.src.layers.reshaping.up_sampling2d import UpSampling2D +from keras.src.layers.reshaping.up_sampling3d import UpSampling3D +from keras.src.layers.reshaping.zero_padding1d import ZeroPadding1D +from keras.src.layers.reshaping.zero_padding2d import ZeroPadding2D +from keras.src.layers.reshaping.zero_padding3d import ZeroPadding3D +from keras.src.layers.rnn.bidirectional import Bidirectional +from keras.src.layers.rnn.conv_lstm1d import ConvLSTM1D +from keras.src.layers.rnn.conv_lstm2d import ConvLSTM2D +from keras.src.layers.rnn.conv_lstm3d import ConvLSTM3D +from keras.src.layers.rnn.gru import GRU +from keras.src.layers.rnn.gru import GRUCell +from keras.src.layers.rnn.lstm import LSTM +from keras.src.layers.rnn.lstm import LSTMCell +from keras.src.layers.rnn.rnn import RNN +from keras.src.layers.rnn.simple_rnn import SimpleRNN +from keras.src.layers.rnn.simple_rnn import SimpleRNNCell +from keras.src.layers.rnn.stacked_rnn_cells import StackedRNNCells +from keras.src.layers.rnn.time_distributed import TimeDistributed +from keras.src.saving import serialization_lib + + +@keras_export("keras.layers.serialize") +def serialize(layer): + """Returns the layer configuration as a Python dict. + + Args: + layer: A `keras.layers.Layer` instance to serialize. + + Returns: + Python dict which contains the configuration of the layer. + """ + return serialization_lib.serialize_keras_object(layer) + + +@keras_export("keras.layers.deserialize") +def deserialize(config, custom_objects=None): + """Returns a Keras layer object via its configuration. + + Args: + config: A python dict containing a serialized layer configuration. + custom_objects: Optional dictionary mapping names (strings) to custom + objects (classes and functions) to be considered during + deserialization. + + Returns: + A Keras layer instance. + """ + obj = serialization_lib.deserialize_keras_object( + config, + custom_objects=custom_objects, + ) + if not isinstance(obj, Layer): + raise ValueError( + "`keras.layers.deserialize` was passed a `config` object that is " + f"not a `keras.layers.Layer`. Received: {config}" + ) + return obj diff --git a/keras/src/layers/activations/__init__.py b/keras/src/layers/activations/__init__.py new file mode 100644 index 000000000000..009ce976c51b --- /dev/null +++ b/keras/src/layers/activations/__init__.py @@ -0,0 +1,5 @@ +from keras.src.layers.activations.elu import ELU +from keras.src.layers.activations.leaky_relu import LeakyReLU +from keras.src.layers.activations.prelu import PReLU +from keras.src.layers.activations.relu import ReLU +from keras.src.layers.activations.softmax import Softmax diff --git a/keras/layers/activations/activation.py b/keras/src/layers/activations/activation.py similarity index 90% rename from keras/layers/activations/activation.py rename to keras/src/layers/activations/activation.py index 438bd3f28c7e..271cf1e4682e 100644 --- a/keras/layers/activations/activation.py +++ b/keras/src/layers/activations/activation.py @@ -1,6 +1,6 @@ -from keras import activations -from keras.api_export import keras_export -from keras.layers.layer import Layer +from keras.src import activations +from keras.src.api_export import keras_export +from keras.src.layers.layer import Layer @keras_export("keras.layers.Activation") diff --git a/keras/layers/activations/activation_test.py b/keras/src/layers/activations/activation_test.py similarity index 91% rename from keras/layers/activations/activation_test.py rename to keras/src/layers/activations/activation_test.py index 355f0602c14a..26d77dd44b28 100644 --- a/keras/layers/activations/activation_test.py +++ b/keras/src/layers/activations/activation_test.py @@ -1,8 +1,8 @@ import pytest -from keras import activations -from keras import layers -from keras import testing +from keras.src import activations +from keras.src import layers +from keras.src import testing class ActivationTest(testing.TestCase): diff --git a/keras/layers/activations/elu.py b/keras/src/layers/activations/elu.py similarity index 85% rename from keras/layers/activations/elu.py rename to keras/src/layers/activations/elu.py index ed8abdf3369e..f15f91546cf4 100644 --- a/keras/layers/activations/elu.py +++ b/keras/src/layers/activations/elu.py @@ -1,6 +1,6 @@ -from keras import activations -from keras.api_export import keras_export -from keras.layers.layer import Layer +from keras.src import activations +from keras.src.api_export import keras_export +from keras.src.layers.layer import Layer @keras_export("keras.layers.ELU") diff --git a/keras/layers/activations/elu_test.py b/keras/src/layers/activations/elu_test.py similarity index 91% rename from keras/layers/activations/elu_test.py rename to keras/src/layers/activations/elu_test.py index 1af54ffd4fb7..7dd8b3f7b799 100644 --- a/keras/layers/activations/elu_test.py +++ b/keras/src/layers/activations/elu_test.py @@ -1,8 +1,8 @@ import numpy as np import pytest -from keras import testing -from keras.layers.activations import elu +from keras.src import testing +from keras.src.layers.activations import elu class ELUTest(testing.TestCase): diff --git a/keras/layers/activations/leaky_relu.py b/keras/src/layers/activations/leaky_relu.py similarity index 93% rename from keras/layers/activations/leaky_relu.py rename to keras/src/layers/activations/leaky_relu.py index 4e2783fc08f8..988c383b7450 100644 --- a/keras/layers/activations/leaky_relu.py +++ b/keras/src/layers/activations/leaky_relu.py @@ -1,8 +1,8 @@ import warnings -from keras import activations -from keras.api_export import keras_export -from keras.layers.layer import Layer +from keras.src import activations +from keras.src.api_export import keras_export +from keras.src.layers.layer import Layer @keras_export("keras.layers.LeakyReLU") diff --git a/keras/layers/activations/leaky_relu_test.py b/keras/src/layers/activations/leaky_relu_test.py similarity index 93% rename from keras/layers/activations/leaky_relu_test.py rename to keras/src/layers/activations/leaky_relu_test.py index 8665ce11926a..e42c10c9f539 100644 --- a/keras/layers/activations/leaky_relu_test.py +++ b/keras/src/layers/activations/leaky_relu_test.py @@ -1,8 +1,8 @@ import numpy as np import pytest -from keras import testing -from keras.layers.activations import leaky_relu +from keras.src import testing +from keras.src.layers.activations import leaky_relu class LeakyReLUTest(testing.TestCase): diff --git a/keras/layers/activations/prelu.py b/keras/src/layers/activations/prelu.py similarity index 92% rename from keras/layers/activations/prelu.py rename to keras/src/layers/activations/prelu.py index 4f2a0a2e76e1..f46d974df824 100644 --- a/keras/layers/activations/prelu.py +++ b/keras/src/layers/activations/prelu.py @@ -1,10 +1,10 @@ -from keras import activations -from keras import constraints -from keras import initializers -from keras import regularizers -from keras.api_export import keras_export -from keras.layers.input_spec import InputSpec -from keras.layers.layer import Layer +from keras.src import activations +from keras.src import constraints +from keras.src import initializers +from keras.src import regularizers +from keras.src.api_export import keras_export +from keras.src.layers.input_spec import InputSpec +from keras.src.layers.layer import Layer @keras_export("keras.layers.PReLU") diff --git a/keras/layers/activations/prelu_test.py b/keras/src/layers/activations/prelu_test.py similarity index 93% rename from keras/layers/activations/prelu_test.py rename to keras/src/layers/activations/prelu_test.py index 82785de104a5..63b4aee20617 100644 --- a/keras/layers/activations/prelu_test.py +++ b/keras/src/layers/activations/prelu_test.py @@ -1,8 +1,8 @@ import numpy as np import pytest -from keras import testing -from keras.layers.activations import prelu +from keras.src import testing +from keras.src.layers.activations import prelu class PReLUTest(testing.TestCase): diff --git a/keras/layers/activations/relu.py b/keras/src/layers/activations/relu.py similarity index 95% rename from keras/layers/activations/relu.py rename to keras/src/layers/activations/relu.py index e7efa03d7950..8467d34fa0f5 100644 --- a/keras/layers/activations/relu.py +++ b/keras/src/layers/activations/relu.py @@ -1,6 +1,6 @@ -from keras import activations -from keras.api_export import keras_export -from keras.layers.layer import Layer +from keras.src import activations +from keras.src.api_export import keras_export +from keras.src.layers.layer import Layer @keras_export("keras.layers.ReLU") diff --git a/keras/layers/activations/relu_test.py b/keras/src/layers/activations/relu_test.py similarity index 97% rename from keras/layers/activations/relu_test.py rename to keras/src/layers/activations/relu_test.py index c423f76a3f64..0c1f64d73a18 100644 --- a/keras/layers/activations/relu_test.py +++ b/keras/src/layers/activations/relu_test.py @@ -1,8 +1,8 @@ import numpy as np import pytest -from keras import testing -from keras.layers.activations import relu +from keras.src import testing +from keras.src.layers.activations import relu class ReLUTest(testing.TestCase): diff --git a/keras/layers/activations/softmax.py b/keras/src/layers/activations/softmax.py similarity index 93% rename from keras/layers/activations/softmax.py rename to keras/src/layers/activations/softmax.py index e29f2ab7c755..c1fee581a89d 100644 --- a/keras/layers/activations/softmax.py +++ b/keras/src/layers/activations/softmax.py @@ -1,7 +1,7 @@ -from keras import activations -from keras import backend -from keras.api_export import keras_export -from keras.layers.layer import Layer +from keras.src import activations +from keras.src import backend +from keras.src.api_export import keras_export +from keras.src.layers.layer import Layer def _large_negative_number(dtype): diff --git a/keras/layers/activations/softmax_test.py b/keras/src/layers/activations/softmax_test.py similarity index 95% rename from keras/layers/activations/softmax_test.py rename to keras/src/layers/activations/softmax_test.py index fb3484799f50..e835a5f345d7 100644 --- a/keras/layers/activations/softmax_test.py +++ b/keras/src/layers/activations/softmax_test.py @@ -1,8 +1,8 @@ import numpy as np import pytest -from keras import testing -from keras.layers.activations import softmax +from keras.src import testing +from keras.src.layers.activations import softmax class SoftmaxTest(testing.TestCase): diff --git a/keras/layers/attention/__init__.py b/keras/src/layers/attention/__init__.py similarity index 100% rename from keras/layers/attention/__init__.py rename to keras/src/layers/attention/__init__.py diff --git a/keras/layers/attention/additive_attention.py b/keras/src/layers/attention/additive_attention.py similarity index 96% rename from keras/layers/attention/additive_attention.py rename to keras/src/layers/attention/additive_attention.py index f0103673d52a..31cc7c93f296 100644 --- a/keras/layers/attention/additive_attention.py +++ b/keras/src/layers/attention/additive_attention.py @@ -1,6 +1,6 @@ -from keras import ops -from keras.api_export import keras_export -from keras.layers.attention.attention import Attention +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.layers.attention.attention import Attention @keras_export("keras.layers.AdditiveAttention") diff --git a/keras/layers/attention/additive_attention_test.py b/keras/src/layers/attention/additive_attention_test.py similarity index 98% rename from keras/layers/attention/additive_attention_test.py rename to keras/src/layers/attention/additive_attention_test.py index 1b37b20fca4f..51092c6c4918 100644 --- a/keras/layers/attention/additive_attention_test.py +++ b/keras/src/layers/attention/additive_attention_test.py @@ -1,7 +1,7 @@ import numpy as np -from keras import layers -from keras import testing +from keras.src import layers +from keras.src import testing class AdditiveAttentionTest(testing.TestCase): diff --git a/keras/layers/attention/attention.py b/keras/src/layers/attention/attention.py similarity index 98% rename from keras/layers/attention/attention.py rename to keras/src/layers/attention/attention.py index b42b4c05634b..48c6332ff157 100644 --- a/keras/layers/attention/attention.py +++ b/keras/src/layers/attention/attention.py @@ -1,7 +1,7 @@ -from keras import backend -from keras import ops -from keras.api_export import keras_export -from keras.layers.layer import Layer +from keras.src import backend +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.layers.layer import Layer @keras_export("keras.layers.Attention") diff --git a/keras/layers/attention/attention_test.py b/keras/src/layers/attention/attention_test.py similarity index 99% rename from keras/layers/attention/attention_test.py rename to keras/src/layers/attention/attention_test.py index 102717994ea8..de8dba643405 100644 --- a/keras/layers/attention/attention_test.py +++ b/keras/src/layers/attention/attention_test.py @@ -1,8 +1,8 @@ import numpy as np -from keras import layers -from keras import ops -from keras import testing +from keras.src import layers +from keras.src import ops +from keras.src import testing class AttentionTest(testing.TestCase): diff --git a/keras/layers/attention/grouped_query_attention.py b/keras/src/layers/attention/grouped_query_attention.py similarity index 97% rename from keras/layers/attention/grouped_query_attention.py rename to keras/src/layers/attention/grouped_query_attention.py index 79a59c8d7c34..fe09f0633178 100644 --- a/keras/layers/attention/grouped_query_attention.py +++ b/keras/src/layers/attention/grouped_query_attention.py @@ -1,12 +1,12 @@ -from keras import constraints -from keras import initializers -from keras import ops -from keras import regularizers -from keras.api_export import keras_export -from keras.layers.activations.softmax import Softmax -from keras.layers.core.einsum_dense import EinsumDense -from keras.layers.layer import Layer -from keras.layers.regularization.dropout import Dropout +from keras.src import constraints +from keras.src import initializers +from keras.src import ops +from keras.src import regularizers +from keras.src.api_export import keras_export +from keras.src.layers.activations.softmax import Softmax +from keras.src.layers.core.einsum_dense import EinsumDense +from keras.src.layers.layer import Layer +from keras.src.layers.regularization.dropout import Dropout @keras_export("keras.layers.GroupQueryAttention") diff --git a/keras/layers/attention/grouped_query_attention_test.py b/keras/src/layers/attention/grouped_query_attention_test.py similarity index 98% rename from keras/layers/attention/grouped_query_attention_test.py rename to keras/src/layers/attention/grouped_query_attention_test.py index 8a926a93bb4f..58a00dc54df5 100644 --- a/keras/layers/attention/grouped_query_attention_test.py +++ b/keras/src/layers/attention/grouped_query_attention_test.py @@ -2,10 +2,10 @@ import pytest from absl.testing import parameterized -from keras import backend -from keras import initializers -from keras import layers -from keras import testing +from keras.src import backend +from keras.src import initializers +from keras.src import layers +from keras.src import testing class GroupedQueryAttentionTest(testing.TestCase, parameterized.TestCase): diff --git a/keras/layers/attention/multi_head_attention.py b/keras/src/layers/attention/multi_head_attention.py similarity index 98% rename from keras/layers/attention/multi_head_attention.py rename to keras/src/layers/attention/multi_head_attention.py index c8a6d32589ec..5571d05683ae 100644 --- a/keras/layers/attention/multi_head_attention.py +++ b/keras/src/layers/attention/multi_head_attention.py @@ -4,16 +4,16 @@ import numpy as np -from keras import backend -from keras import constraints -from keras import initializers -from keras import ops -from keras import regularizers -from keras.api_export import keras_export -from keras.layers.activations.softmax import Softmax -from keras.layers.core.einsum_dense import EinsumDense -from keras.layers.layer import Layer -from keras.layers.regularization.dropout import Dropout +from keras.src import backend +from keras.src import constraints +from keras.src import initializers +from keras.src import ops +from keras.src import regularizers +from keras.src.api_export import keras_export +from keras.src.layers.activations.softmax import Softmax +from keras.src.layers.core.einsum_dense import EinsumDense +from keras.src.layers.layer import Layer +from keras.src.layers.regularization.dropout import Dropout @keras_export("keras.layers.MultiHeadAttention") diff --git a/keras/layers/attention/multi_head_attention_test.py b/keras/src/layers/attention/multi_head_attention_test.py similarity index 98% rename from keras/layers/attention/multi_head_attention_test.py rename to keras/src/layers/attention/multi_head_attention_test.py index 361e015c17dc..6feac6086676 100644 --- a/keras/layers/attention/multi_head_attention_test.py +++ b/keras/src/layers/attention/multi_head_attention_test.py @@ -4,13 +4,13 @@ import pytest from absl.testing import parameterized -from keras import backend -from keras import constraints -from keras import initializers -from keras import layers -from keras import models -from keras import saving -from keras import testing +from keras.src import backend +from keras.src import constraints +from keras.src import initializers +from keras.src import layers +from keras.src import models +from keras.src import saving +from keras.src import testing class MultiHeadAttentionTest(testing.TestCase, parameterized.TestCase): diff --git a/keras/layers/convolutional/__init__.py b/keras/src/layers/convolutional/__init__.py similarity index 100% rename from keras/layers/convolutional/__init__.py rename to keras/src/layers/convolutional/__init__.py diff --git a/keras/layers/convolutional/base_conv.py b/keras/src/layers/convolutional/base_conv.py similarity index 97% rename from keras/layers/convolutional/base_conv.py rename to keras/src/layers/convolutional/base_conv.py index 689083d94003..96a66e58e40c 100644 --- a/keras/layers/convolutional/base_conv.py +++ b/keras/src/layers/convolutional/base_conv.py @@ -1,16 +1,16 @@ """Keras base class for convolution layers.""" -from keras import activations -from keras import constraints -from keras import initializers -from keras import ops -from keras import regularizers -from keras.backend import standardize_data_format -from keras.layers.input_spec import InputSpec -from keras.layers.layer import Layer -from keras.ops.operation_utils import compute_conv_output_shape -from keras.utils.argument_validation import standardize_padding -from keras.utils.argument_validation import standardize_tuple +from keras.src import activations +from keras.src import constraints +from keras.src import initializers +from keras.src import ops +from keras.src import regularizers +from keras.src.backend import standardize_data_format +from keras.src.layers.input_spec import InputSpec +from keras.src.layers.layer import Layer +from keras.src.ops.operation_utils import compute_conv_output_shape +from keras.src.utils.argument_validation import standardize_padding +from keras.src.utils.argument_validation import standardize_tuple class BaseConv(Layer): diff --git a/keras/layers/convolutional/base_conv_transpose.py b/keras/src/layers/convolutional/base_conv_transpose.py similarity index 95% rename from keras/layers/convolutional/base_conv_transpose.py rename to keras/src/layers/convolutional/base_conv_transpose.py index ec5ab1e2396b..af0a68e3aded 100644 --- a/keras/layers/convolutional/base_conv_transpose.py +++ b/keras/src/layers/convolutional/base_conv_transpose.py @@ -1,18 +1,18 @@ """Keras base class for transpose convolution layers.""" -from keras import activations -from keras import constraints -from keras import initializers -from keras import ops -from keras import regularizers -from keras.backend import standardize_data_format -from keras.backend.common.backend_utils import ( +from keras.src import activations +from keras.src import constraints +from keras.src import initializers +from keras.src import ops +from keras.src import regularizers +from keras.src.backend import standardize_data_format +from keras.src.backend.common.backend_utils import ( compute_conv_transpose_output_shape, ) -from keras.layers.input_spec import InputSpec -from keras.layers.layer import Layer -from keras.utils.argument_validation import standardize_padding -from keras.utils.argument_validation import standardize_tuple +from keras.src.layers.input_spec import InputSpec +from keras.src.layers.layer import Layer +from keras.src.utils.argument_validation import standardize_padding +from keras.src.utils.argument_validation import standardize_tuple class BaseConvTranspose(Layer): diff --git a/keras/layers/convolutional/base_depthwise_conv.py b/keras/src/layers/convolutional/base_depthwise_conv.py similarity index 95% rename from keras/layers/convolutional/base_depthwise_conv.py rename to keras/src/layers/convolutional/base_depthwise_conv.py index 123acb920166..b9f5d442d22a 100644 --- a/keras/layers/convolutional/base_depthwise_conv.py +++ b/keras/src/layers/convolutional/base_depthwise_conv.py @@ -1,16 +1,16 @@ """Keras base class for depthwise convolution layers.""" -from keras import activations -from keras import constraints -from keras import initializers -from keras import ops -from keras import regularizers -from keras.backend import standardize_data_format -from keras.layers.input_spec import InputSpec -from keras.layers.layer import Layer -from keras.ops.operation_utils import compute_conv_output_shape -from keras.utils.argument_validation import standardize_padding -from keras.utils.argument_validation import standardize_tuple +from keras.src import activations +from keras.src import constraints +from keras.src import initializers +from keras.src import ops +from keras.src import regularizers +from keras.src.backend import standardize_data_format +from keras.src.layers.input_spec import InputSpec +from keras.src.layers.layer import Layer +from keras.src.ops.operation_utils import compute_conv_output_shape +from keras.src.utils.argument_validation import standardize_padding +from keras.src.utils.argument_validation import standardize_tuple class BaseDepthwiseConv(Layer): diff --git a/keras/layers/convolutional/base_separable_conv.py b/keras/src/layers/convolutional/base_separable_conv.py similarity index 95% rename from keras/layers/convolutional/base_separable_conv.py rename to keras/src/layers/convolutional/base_separable_conv.py index 99c45afaa1d1..5073b1813dea 100644 --- a/keras/layers/convolutional/base_separable_conv.py +++ b/keras/src/layers/convolutional/base_separable_conv.py @@ -1,16 +1,16 @@ """Keras abstract base layer for separable convolution.""" -from keras import activations -from keras import constraints -from keras import initializers -from keras import ops -from keras import regularizers -from keras.backend import standardize_data_format -from keras.layers.input_spec import InputSpec -from keras.layers.layer import Layer -from keras.ops.operation_utils import compute_conv_output_shape -from keras.utils.argument_validation import standardize_padding -from keras.utils.argument_validation import standardize_tuple +from keras.src import activations +from keras.src import constraints +from keras.src import initializers +from keras.src import ops +from keras.src import regularizers +from keras.src.backend import standardize_data_format +from keras.src.layers.input_spec import InputSpec +from keras.src.layers.layer import Layer +from keras.src.ops.operation_utils import compute_conv_output_shape +from keras.src.utils.argument_validation import standardize_padding +from keras.src.utils.argument_validation import standardize_tuple class BaseSeparableConv(Layer): diff --git a/keras/layers/convolutional/conv1d.py b/keras/src/layers/convolutional/conv1d.py similarity index 98% rename from keras/layers/convolutional/conv1d.py rename to keras/src/layers/convolutional/conv1d.py index 37509452b6ef..f88ac59e5d68 100644 --- a/keras/layers/convolutional/conv1d.py +++ b/keras/src/layers/convolutional/conv1d.py @@ -1,6 +1,6 @@ -from keras import ops -from keras.api_export import keras_export -from keras.layers.convolutional.base_conv import BaseConv +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.layers.convolutional.base_conv import BaseConv @keras_export(["keras.layers.Conv1D", "keras.layers.Convolution1D"]) diff --git a/keras/layers/convolutional/conv1d_transpose.py b/keras/src/layers/convolutional/conv1d_transpose.py similarity index 97% rename from keras/layers/convolutional/conv1d_transpose.py rename to keras/src/layers/convolutional/conv1d_transpose.py index f97482af0e04..6f79ca3dafef 100644 --- a/keras/layers/convolutional/conv1d_transpose.py +++ b/keras/src/layers/convolutional/conv1d_transpose.py @@ -1,5 +1,5 @@ -from keras.api_export import keras_export -from keras.layers.convolutional.base_conv_transpose import BaseConvTranspose +from keras.src.api_export import keras_export +from keras.src.layers.convolutional.base_conv_transpose import BaseConvTranspose @keras_export( diff --git a/keras/layers/convolutional/conv2d.py b/keras/src/layers/convolutional/conv2d.py similarity index 98% rename from keras/layers/convolutional/conv2d.py rename to keras/src/layers/convolutional/conv2d.py index 77830c9225c0..791cb041fb4e 100644 --- a/keras/layers/convolutional/conv2d.py +++ b/keras/src/layers/convolutional/conv2d.py @@ -1,5 +1,5 @@ -from keras.api_export import keras_export -from keras.layers.convolutional.base_conv import BaseConv +from keras.src.api_export import keras_export +from keras.src.layers.convolutional.base_conv import BaseConv @keras_export(["keras.layers.Conv2D", "keras.layers.Convolution2D"]) diff --git a/keras/layers/convolutional/conv2d_transpose.py b/keras/src/layers/convolutional/conv2d_transpose.py similarity index 97% rename from keras/layers/convolutional/conv2d_transpose.py rename to keras/src/layers/convolutional/conv2d_transpose.py index a690e85f237b..cc4293c8db4e 100644 --- a/keras/layers/convolutional/conv2d_transpose.py +++ b/keras/src/layers/convolutional/conv2d_transpose.py @@ -1,5 +1,5 @@ -from keras.api_export import keras_export -from keras.layers.convolutional.base_conv_transpose import BaseConvTranspose +from keras.src.api_export import keras_export +from keras.src.layers.convolutional.base_conv_transpose import BaseConvTranspose @keras_export( diff --git a/keras/layers/convolutional/conv3d.py b/keras/src/layers/convolutional/conv3d.py similarity index 98% rename from keras/layers/convolutional/conv3d.py rename to keras/src/layers/convolutional/conv3d.py index 63171a1eb2b2..516342ddbc04 100644 --- a/keras/layers/convolutional/conv3d.py +++ b/keras/src/layers/convolutional/conv3d.py @@ -1,5 +1,5 @@ -from keras.api_export import keras_export -from keras.layers.convolutional.base_conv import BaseConv +from keras.src.api_export import keras_export +from keras.src.layers.convolutional.base_conv import BaseConv @keras_export(["keras.layers.Conv3D", "keras.layers.Convolution3D"]) diff --git a/keras/layers/convolutional/conv3d_transpose.py b/keras/src/layers/convolutional/conv3d_transpose.py similarity index 97% rename from keras/layers/convolutional/conv3d_transpose.py rename to keras/src/layers/convolutional/conv3d_transpose.py index f514f3322382..c0f651147fcf 100644 --- a/keras/layers/convolutional/conv3d_transpose.py +++ b/keras/src/layers/convolutional/conv3d_transpose.py @@ -1,5 +1,5 @@ -from keras.api_export import keras_export -from keras.layers.convolutional.base_conv_transpose import BaseConvTranspose +from keras.src.api_export import keras_export +from keras.src.layers.convolutional.base_conv_transpose import BaseConvTranspose @keras_export( diff --git a/keras/layers/convolutional/conv_test.py b/keras/src/layers/convolutional/conv_test.py similarity index 99% rename from keras/layers/convolutional/conv_test.py rename to keras/src/layers/convolutional/conv_test.py index 281e35a960e5..6bf9c6776dc2 100644 --- a/keras/layers/convolutional/conv_test.py +++ b/keras/src/layers/convolutional/conv_test.py @@ -5,12 +5,12 @@ from absl.testing import parameterized from numpy.lib.stride_tricks import as_strided -from keras import backend -from keras import constraints -from keras import layers -from keras import models -from keras import saving -from keras import testing +from keras.src import backend +from keras.src import constraints +from keras.src import layers +from keras.src import models +from keras.src import saving +from keras.src import testing def _same_padding(input_size, kernel_size, stride): diff --git a/keras/layers/convolutional/conv_transpose_test.py b/keras/src/layers/convolutional/conv_transpose_test.py similarity index 99% rename from keras/layers/convolutional/conv_transpose_test.py rename to keras/src/layers/convolutional/conv_transpose_test.py index 57252ae2fd73..1a3eb8f5f07e 100644 --- a/keras/layers/convolutional/conv_transpose_test.py +++ b/keras/src/layers/convolutional/conv_transpose_test.py @@ -2,16 +2,16 @@ import pytest from absl.testing import parameterized -from keras import backend -from keras import layers -from keras import testing -from keras.backend.common.backend_utils import ( +from keras.src import backend +from keras.src import layers +from keras.src import testing +from keras.src.backend.common.backend_utils import ( _convert_conv_tranpose_padding_args_from_keras_to_torch, ) -from keras.backend.common.backend_utils import ( +from keras.src.backend.common.backend_utils import ( compute_conv_transpose_output_shape, ) -from keras.backend.common.backend_utils import ( +from keras.src.backend.common.backend_utils import ( compute_conv_transpose_padding_args_for_jax, ) diff --git a/keras/layers/convolutional/depthwise_conv1d.py b/keras/src/layers/convolutional/depthwise_conv1d.py similarity index 97% rename from keras/layers/convolutional/depthwise_conv1d.py rename to keras/src/layers/convolutional/depthwise_conv1d.py index 2d9db92d4160..02e5cc26e366 100644 --- a/keras/layers/convolutional/depthwise_conv1d.py +++ b/keras/src/layers/convolutional/depthwise_conv1d.py @@ -1,5 +1,5 @@ -from keras.api_export import keras_export -from keras.layers.convolutional.base_depthwise_conv import BaseDepthwiseConv +from keras.src.api_export import keras_export +from keras.src.layers.convolutional.base_depthwise_conv import BaseDepthwiseConv @keras_export("keras.layers.DepthwiseConv1D") diff --git a/keras/layers/convolutional/depthwise_conv2d.py b/keras/src/layers/convolutional/depthwise_conv2d.py similarity index 97% rename from keras/layers/convolutional/depthwise_conv2d.py rename to keras/src/layers/convolutional/depthwise_conv2d.py index 0fb14337c2ad..9a169af0a8ec 100644 --- a/keras/layers/convolutional/depthwise_conv2d.py +++ b/keras/src/layers/convolutional/depthwise_conv2d.py @@ -1,5 +1,5 @@ -from keras.api_export import keras_export -from keras.layers.convolutional.base_depthwise_conv import BaseDepthwiseConv +from keras.src.api_export import keras_export +from keras.src.layers.convolutional.base_depthwise_conv import BaseDepthwiseConv @keras_export("keras.layers.DepthwiseConv2D") diff --git a/keras/layers/convolutional/depthwise_conv_test.py b/keras/src/layers/convolutional/depthwise_conv_test.py similarity index 99% rename from keras/layers/convolutional/depthwise_conv_test.py rename to keras/src/layers/convolutional/depthwise_conv_test.py index 6aa0b8098287..a22967141aaa 100644 --- a/keras/layers/convolutional/depthwise_conv_test.py +++ b/keras/src/layers/convolutional/depthwise_conv_test.py @@ -3,8 +3,8 @@ from absl.testing import parameterized from numpy.lib.stride_tricks import as_strided -from keras import layers -from keras import testing +from keras.src import layers +from keras.src import testing def _same_padding(input_size, kernel_size, stride): diff --git a/keras/layers/convolutional/separable_conv1d.py b/keras/src/layers/convolutional/separable_conv1d.py similarity index 98% rename from keras/layers/convolutional/separable_conv1d.py rename to keras/src/layers/convolutional/separable_conv1d.py index 0c8cb101a306..2f71556750be 100644 --- a/keras/layers/convolutional/separable_conv1d.py +++ b/keras/src/layers/convolutional/separable_conv1d.py @@ -1,5 +1,5 @@ -from keras.api_export import keras_export -from keras.layers.convolutional.base_separable_conv import BaseSeparableConv +from keras.src.api_export import keras_export +from keras.src.layers.convolutional.base_separable_conv import BaseSeparableConv @keras_export( diff --git a/keras/layers/convolutional/separable_conv2d.py b/keras/src/layers/convolutional/separable_conv2d.py similarity index 98% rename from keras/layers/convolutional/separable_conv2d.py rename to keras/src/layers/convolutional/separable_conv2d.py index 010fe6c29e58..503d2a22b7d9 100644 --- a/keras/layers/convolutional/separable_conv2d.py +++ b/keras/src/layers/convolutional/separable_conv2d.py @@ -1,5 +1,5 @@ -from keras.api_export import keras_export -from keras.layers.convolutional.base_separable_conv import BaseSeparableConv +from keras.src.api_export import keras_export +from keras.src.layers.convolutional.base_separable_conv import BaseSeparableConv @keras_export( diff --git a/keras/layers/convolutional/separable_conv_test.py b/keras/src/layers/convolutional/separable_conv_test.py similarity index 96% rename from keras/layers/convolutional/separable_conv_test.py rename to keras/src/layers/convolutional/separable_conv_test.py index 9d5f3e02925b..4d6fda73516d 100644 --- a/keras/layers/convolutional/separable_conv_test.py +++ b/keras/src/layers/convolutional/separable_conv_test.py @@ -2,12 +2,16 @@ import pytest from absl.testing import parameterized -from keras import layers -from keras import testing -from keras.layers.convolutional.conv_test import np_conv1d -from keras.layers.convolutional.conv_test import np_conv2d -from keras.layers.convolutional.depthwise_conv_test import np_depthwise_conv1d -from keras.layers.convolutional.depthwise_conv_test import np_depthwise_conv2d +from keras.src import layers +from keras.src import testing +from keras.src.layers.convolutional.conv_test import np_conv1d +from keras.src.layers.convolutional.conv_test import np_conv2d +from keras.src.layers.convolutional.depthwise_conv_test import ( + np_depthwise_conv1d, +) +from keras.src.layers.convolutional.depthwise_conv_test import ( + np_depthwise_conv2d, +) class SeparableConvBasicTest(testing.TestCase, parameterized.TestCase): diff --git a/keras/layers/core/__init__.py b/keras/src/layers/core/__init__.py similarity index 100% rename from keras/layers/core/__init__.py rename to keras/src/layers/core/__init__.py diff --git a/keras/layers/core/dense.py b/keras/src/layers/core/dense.py similarity index 98% rename from keras/layers/core/dense.py rename to keras/src/layers/core/dense.py index d7dffadc0548..fad22e6b755e 100644 --- a/keras/layers/core/dense.py +++ b/keras/src/layers/core/dense.py @@ -1,16 +1,16 @@ import ml_dtypes -from keras import activations -from keras import backend -from keras import constraints -from keras import dtype_policies -from keras import initializers -from keras import ops -from keras import quantizers -from keras import regularizers -from keras.api_export import keras_export -from keras.layers.input_spec import InputSpec -from keras.layers.layer import Layer +from keras.src import activations +from keras.src import backend +from keras.src import constraints +from keras.src import dtype_policies +from keras.src import initializers +from keras.src import ops +from keras.src import quantizers +from keras.src import regularizers +from keras.src.api_export import keras_export +from keras.src.layers.input_spec import InputSpec +from keras.src.layers.layer import Layer @keras_export("keras.layers.Dense") diff --git a/keras/layers/core/dense_test.py b/keras/src/layers/core/dense_test.py similarity index 98% rename from keras/layers/core/dense_test.py rename to keras/src/layers/core/dense_test.py index e7161f7a3921..8a959543dc0f 100644 --- a/keras/layers/core/dense_test.py +++ b/keras/src/layers/core/dense_test.py @@ -4,17 +4,17 @@ import pytest from absl.testing import parameterized -from keras import backend -from keras import constraints -from keras import layers -from keras import models -from keras import ops -from keras import optimizers -from keras import random -from keras import saving -from keras import testing -from keras.backend.common import keras_tensor -from keras.export import export_lib +from keras.src import backend +from keras.src import constraints +from keras.src import layers +from keras.src import models +from keras.src import ops +from keras.src import optimizers +from keras.src import random +from keras.src import saving +from keras.src import testing +from keras.src.backend.common import keras_tensor +from keras.src.export import export_lib class DenseTest(testing.TestCase, parameterized.TestCase): @@ -556,7 +556,7 @@ def test_quantize_float8_dtype_argument(self): def test_quantize_float8(self): import ml_dtypes - from keras import quantizers + from keras.src import quantizers layer = layers.Dense(units=32) layer.build((None, 16)) diff --git a/keras/layers/core/einsum_dense.py b/keras/src/layers/core/einsum_dense.py similarity index 99% rename from keras/layers/core/einsum_dense.py rename to keras/src/layers/core/einsum_dense.py index 95f7b7274215..8fcecc17c9c4 100644 --- a/keras/layers/core/einsum_dense.py +++ b/keras/src/layers/core/einsum_dense.py @@ -4,17 +4,17 @@ import ml_dtypes import numpy as np -from keras import activations -from keras import backend -from keras import constraints -from keras import dtype_policies -from keras import initializers -from keras import ops -from keras import quantizers -from keras import regularizers -from keras.api_export import keras_export -from keras.layers.input_spec import InputSpec -from keras.layers.layer import Layer +from keras.src import activations +from keras.src import backend +from keras.src import constraints +from keras.src import dtype_policies +from keras.src import initializers +from keras.src import ops +from keras.src import quantizers +from keras.src import regularizers +from keras.src.api_export import keras_export +from keras.src.layers.input_spec import InputSpec +from keras.src.layers.layer import Layer @keras_export("keras.layers.EinsumDense") diff --git a/keras/layers/core/einsum_dense_test.py b/keras/src/layers/core/einsum_dense_test.py similarity index 98% rename from keras/layers/core/einsum_dense_test.py rename to keras/src/layers/core/einsum_dense_test.py index dbf782e1e607..7ce83dd75f84 100644 --- a/keras/layers/core/einsum_dense_test.py +++ b/keras/src/layers/core/einsum_dense_test.py @@ -4,16 +4,16 @@ import pytest from absl.testing import parameterized -from keras import backend -from keras import constraints -from keras import layers -from keras import models -from keras import ops -from keras import optimizers -from keras import random -from keras import saving -from keras import testing -from keras.export import export_lib +from keras.src import backend +from keras.src import constraints +from keras.src import layers +from keras.src import models +from keras.src import ops +from keras.src import optimizers +from keras.src import random +from keras.src import saving +from keras.src import testing +from keras.src.export import export_lib class EinsumDenseTest(testing.TestCase, parameterized.TestCase): @@ -659,7 +659,7 @@ def test_quantize_float8_dtype_argument(self): def test_quantize_float8(self): import ml_dtypes - from keras import quantizers + from keras.src import quantizers layer = layers.EinsumDense( "ab,bc->ac", diff --git a/keras/layers/core/embedding.py b/keras/src/layers/core/embedding.py similarity index 98% rename from keras/layers/core/embedding.py rename to keras/src/layers/core/embedding.py index d7afb529bb9e..03a9a61ee15b 100644 --- a/keras/layers/core/embedding.py +++ b/keras/src/layers/core/embedding.py @@ -1,14 +1,14 @@ import warnings -from keras import backend -from keras import constraints -from keras import dtype_policies -from keras import initializers -from keras import ops -from keras import quantizers -from keras import regularizers -from keras.api_export import keras_export -from keras.layers.layer import Layer +from keras.src import backend +from keras.src import constraints +from keras.src import dtype_policies +from keras.src import initializers +from keras.src import ops +from keras.src import quantizers +from keras.src import regularizers +from keras.src.api_export import keras_export +from keras.src.layers.layer import Layer @keras_export("keras.layers.Embedding") diff --git a/keras/layers/core/embedding_test.py b/keras/src/layers/core/embedding_test.py similarity index 98% rename from keras/layers/core/embedding_test.py rename to keras/src/layers/core/embedding_test.py index 2663ee1fce13..6c0af85a3095 100644 --- a/keras/layers/core/embedding_test.py +++ b/keras/src/layers/core/embedding_test.py @@ -4,14 +4,14 @@ import pytest from absl.testing import parameterized -from keras import backend -from keras import constraints -from keras import layers -from keras import models -from keras import ops -from keras import saving -from keras.export import export_lib -from keras.testing import test_case +from keras.src import backend +from keras.src import constraints +from keras.src import layers +from keras.src import models +from keras.src import ops +from keras.src import saving +from keras.src.export import export_lib +from keras.src.testing import test_case class EmbeddingTest(test_case.TestCase, parameterized.TestCase): diff --git a/keras/layers/core/identity.py b/keras/src/layers/core/identity.py similarity index 80% rename from keras/layers/core/identity.py rename to keras/src/layers/core/identity.py index b1e1cd50912f..1fd329c3703f 100644 --- a/keras/layers/core/identity.py +++ b/keras/src/layers/core/identity.py @@ -1,7 +1,7 @@ -from keras import tree -from keras.api_export import keras_export -from keras.backend import KerasTensor -from keras.layers.layer import Layer +from keras.src import tree +from keras.src.api_export import keras_export +from keras.src.backend import KerasTensor +from keras.src.layers.layer import Layer @keras_export("keras.layers.Identity") diff --git a/keras/layers/core/identity_test.py b/keras/src/layers/core/identity_test.py similarity index 91% rename from keras/layers/core/identity_test.py rename to keras/src/layers/core/identity_test.py index 456a292e1b01..1be760f531d6 100644 --- a/keras/layers/core/identity_test.py +++ b/keras/src/layers/core/identity_test.py @@ -1,9 +1,9 @@ import pytest from absl.testing import parameterized -from keras import backend -from keras import layers -from keras import testing +from keras.src import backend +from keras.src import layers +from keras.src import testing class IdentityTest(testing.TestCase, parameterized.TestCase): diff --git a/keras/layers/core/input_layer.py b/keras/src/layers/core/input_layer.py similarity index 97% rename from keras/layers/core/input_layer.py rename to keras/src/layers/core/input_layer.py index 974681d57a44..6b4968c0d9b2 100644 --- a/keras/layers/core/input_layer.py +++ b/keras/src/layers/core/input_layer.py @@ -1,9 +1,9 @@ import warnings -from keras import backend -from keras.api_export import keras_export -from keras.layers.layer import Layer -from keras.ops.node import Node +from keras.src import backend +from keras.src.api_export import keras_export +from keras.src.layers.layer import Layer +from keras.src.ops.node import Node @keras_export("keras.layers.InputLayer") diff --git a/keras/layers/core/input_layer_test.py b/keras/src/layers/core/input_layer_test.py similarity index 96% rename from keras/layers/core/input_layer_test.py rename to keras/src/layers/core/input_layer_test.py index 2823486b155f..c75ec4ac9463 100644 --- a/keras/layers/core/input_layer_test.py +++ b/keras/src/layers/core/input_layer_test.py @@ -1,10 +1,10 @@ import numpy as np from absl.testing import parameterized -from keras import backend -from keras import testing -from keras.backend import KerasTensor -from keras.layers import InputLayer +from keras.src import backend +from keras.src import testing +from keras.src.backend import KerasTensor +from keras.src.layers import InputLayer class InputLayerTest(testing.TestCase, parameterized.TestCase): diff --git a/keras/layers/core/lambda_layer.py b/keras/src/layers/core/lambda_layer.py similarity index 97% rename from keras/layers/core/lambda_layer.py rename to keras/src/layers/core/lambda_layer.py index 6ffb16ca7782..9980c6c35799 100644 --- a/keras/layers/core/lambda_layer.py +++ b/keras/src/layers/core/lambda_layer.py @@ -1,12 +1,12 @@ import inspect import types -from keras import backend -from keras import tree -from keras.api_export import keras_export -from keras.layers.layer import Layer -from keras.saving import serialization_lib -from keras.utils import python_utils +from keras.src import backend +from keras.src import tree +from keras.src.api_export import keras_export +from keras.src.layers.layer import Layer +from keras.src.saving import serialization_lib +from keras.src.utils import python_utils @keras_export("keras.layers.Lambda") diff --git a/keras/layers/core/lambda_layer_test.py b/keras/src/layers/core/lambda_layer_test.py similarity index 97% rename from keras/layers/core/lambda_layer_test.py rename to keras/src/layers/core/lambda_layer_test.py index d65cf8bbaf65..1f80bcb0206b 100644 --- a/keras/layers/core/lambda_layer_test.py +++ b/keras/src/layers/core/lambda_layer_test.py @@ -1,9 +1,9 @@ import numpy as np import pytest -from keras import layers -from keras import ops -from keras import testing +from keras.src import layers +from keras.src import ops +from keras.src import testing class LambdaTest(testing.TestCase): diff --git a/keras/layers/core/masking.py b/keras/src/layers/core/masking.py similarity index 94% rename from keras/layers/core/masking.py rename to keras/src/layers/core/masking.py index f7a05eb48b54..8658cdb2896b 100644 --- a/keras/layers/core/masking.py +++ b/keras/src/layers/core/masking.py @@ -1,7 +1,7 @@ -from keras import backend -from keras import ops -from keras.api_export import keras_export -from keras.layers.layer import Layer +from keras.src import backend +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.layers.layer import Layer @keras_export("keras.layers.Masking") diff --git a/keras/layers/core/masking_test.py b/keras/src/layers/core/masking_test.py similarity index 94% rename from keras/layers/core/masking_test.py rename to keras/src/layers/core/masking_test.py index 115783dbce24..2e17f047c78b 100644 --- a/keras/layers/core/masking_test.py +++ b/keras/src/layers/core/masking_test.py @@ -1,9 +1,9 @@ import numpy as np import pytest -from keras import layers -from keras import models -from keras import testing +from keras.src import layers +from keras.src import models +from keras.src import testing class MaskingTest(testing.TestCase): diff --git a/keras/layers/core/wrapper.py b/keras/src/layers/core/wrapper.py similarity index 91% rename from keras/layers/core/wrapper.py rename to keras/src/layers/core/wrapper.py index ee7f1347791c..ee98a70a0291 100644 --- a/keras/layers/core/wrapper.py +++ b/keras/src/layers/core/wrapper.py @@ -1,6 +1,6 @@ -from keras.api_export import keras_export -from keras.layers.layer import Layer -from keras.saving import serialization_lib +from keras.src.api_export import keras_export +from keras.src.layers.layer import Layer +from keras.src.saving import serialization_lib @keras_export("keras.layers.Wrapper") diff --git a/keras/layers/core/wrapper_test.py b/keras/src/layers/core/wrapper_test.py similarity index 96% rename from keras/layers/core/wrapper_test.py rename to keras/src/layers/core/wrapper_test.py index a01194591eec..9302ca784240 100644 --- a/keras/layers/core/wrapper_test.py +++ b/keras/src/layers/core/wrapper_test.py @@ -1,8 +1,8 @@ import pytest -from keras import layers -from keras import ops -from keras import testing +from keras.src import layers +from keras.src import ops +from keras.src import testing class ExampleWrapper(layers.Wrapper): diff --git a/keras/layers/input_spec.py b/keras/src/layers/input_spec.py similarity index 98% rename from keras/layers/input_spec.py rename to keras/src/layers/input_spec.py index 6f47bd36aa80..72084d5cbdec 100644 --- a/keras/layers/input_spec.py +++ b/keras/src/layers/input_spec.py @@ -1,6 +1,6 @@ -from keras import backend -from keras import tree -from keras.api_export import keras_export +from keras.src import backend +from keras.src import tree +from keras.src.api_export import keras_export @keras_export(["keras.InputSpec", "keras.layers.InputSpec"]) diff --git a/keras/layers/layer.py b/keras/src/layers/layer.py similarity index 98% rename from keras/layers/layer.py rename to keras/src/layers/layer.py index db91e349b987..eb251122b930 100644 --- a/keras/layers/layer.py +++ b/keras/src/layers/layer.py @@ -21,34 +21,34 @@ import warnings from functools import wraps -from keras import backend -from keras import constraints -from keras import dtype_policies -from keras import initializers -from keras import regularizers -from keras import tree -from keras import utils -from keras.api_export import keras_export -from keras.backend import KerasTensor -from keras.backend.common import global_state -from keras.backend.common.name_scope import current_path -from keras.distribution import distribution_lib -from keras.layers import input_spec -from keras.metrics.metric import Metric -from keras.ops.operation import Operation -from keras.utils import python_utils -from keras.utils import summary_utils -from keras.utils import traceback_utils -from keras.utils import tracking +from keras.src import backend +from keras.src import constraints +from keras.src import dtype_policies +from keras.src import initializers +from keras.src import regularizers +from keras.src import tree +from keras.src import utils +from keras.src.api_export import keras_export +from keras.src.backend import KerasTensor +from keras.src.backend.common import global_state +from keras.src.backend.common.name_scope import current_path +from keras.src.distribution import distribution_lib +from keras.src.layers import input_spec +from keras.src.metrics.metric import Metric +from keras.src.ops.operation import Operation +from keras.src.utils import python_utils +from keras.src.utils import summary_utils +from keras.src.utils import traceback_utils +from keras.src.utils import tracking if backend.backend() == "tensorflow": - from keras.backend.tensorflow.layer import TFLayer as BackendLayer + from keras.src.backend.tensorflow.layer import TFLayer as BackendLayer elif backend.backend() == "jax": - from keras.backend.jax.layer import JaxLayer as BackendLayer + from keras.src.backend.jax.layer import JaxLayer as BackendLayer elif backend.backend() == "torch": - from keras.backend.torch.layer import TorchLayer as BackendLayer + from keras.src.backend.torch.layer import TorchLayer as BackendLayer elif backend.backend() == "numpy": - from keras.backend.numpy.layer import NumpyLayer as BackendLayer + from keras.src.backend.numpy.layer import NumpyLayer as BackendLayer else: raise RuntimeError( f"Backend '{backend.backend()}' must implement a layer mixin class." diff --git a/keras/layers/layer_test.py b/keras/src/layers/layer_test.py similarity index 99% rename from keras/layers/layer_test.py rename to keras/src/layers/layer_test.py index 0e8ca4548df5..ad274da84af2 100644 --- a/keras/layers/layer_test.py +++ b/keras/src/layers/layer_test.py @@ -1,13 +1,13 @@ import numpy as np import pytest -from keras import backend -from keras import dtype_policies -from keras import layers -from keras import metrics -from keras import models -from keras import ops -from keras import testing +from keras.src import backend +from keras.src import dtype_policies +from keras.src import layers +from keras.src import metrics +from keras.src import models +from keras.src import ops +from keras.src import testing class LayerTest(testing.TestCase): diff --git a/keras/layers/merging/__init__.py b/keras/src/layers/merging/__init__.py similarity index 100% rename from keras/layers/merging/__init__.py rename to keras/src/layers/merging/__init__.py diff --git a/keras/layers/merging/add.py b/keras/src/layers/merging/add.py similarity index 94% rename from keras/layers/merging/add.py rename to keras/src/layers/merging/add.py index 968f7f374017..bf5f1b2a6aac 100644 --- a/keras/layers/merging/add.py +++ b/keras/src/layers/merging/add.py @@ -1,6 +1,6 @@ -from keras import ops -from keras.api_export import keras_export -from keras.layers.merging.base_merge import Merge +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.layers.merging.base_merge import Merge @keras_export("keras.layers.Add") diff --git a/keras/layers/merging/average.py b/keras/src/layers/merging/average.py similarity index 94% rename from keras/layers/merging/average.py rename to keras/src/layers/merging/average.py index 5763c99a6dd1..f90f75beead0 100644 --- a/keras/layers/merging/average.py +++ b/keras/src/layers/merging/average.py @@ -1,6 +1,6 @@ -from keras import ops -from keras.api_export import keras_export -from keras.layers.merging.base_merge import Merge +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.layers.merging.base_merge import Merge @keras_export("keras.layers.Average") diff --git a/keras/layers/merging/base_merge.py b/keras/src/layers/merging/base_merge.py similarity index 98% rename from keras/layers/merging/base_merge.py rename to keras/src/layers/merging/base_merge.py index ae00f8121f62..69591e8cd074 100644 --- a/keras/layers/merging/base_merge.py +++ b/keras/src/layers/merging/base_merge.py @@ -1,7 +1,7 @@ -from keras import backend -from keras import ops -from keras.backend.common.keras_tensor import KerasTensor -from keras.layers.layer import Layer +from keras.src import backend +from keras.src import ops +from keras.src.backend.common.keras_tensor import KerasTensor +from keras.src.layers.layer import Layer class Merge(Layer): diff --git a/keras/layers/merging/concatenate.py b/keras/src/layers/merging/concatenate.py similarity index 98% rename from keras/layers/merging/concatenate.py rename to keras/src/layers/merging/concatenate.py index 37f9536d8d57..9c1d26ae8d5f 100644 --- a/keras/layers/merging/concatenate.py +++ b/keras/src/layers/merging/concatenate.py @@ -1,6 +1,6 @@ -from keras import ops -from keras.api_export import keras_export -from keras.layers.merging.base_merge import Merge +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.layers.merging.base_merge import Merge @keras_export("keras.layers.Concatenate") diff --git a/keras/layers/merging/dot.py b/keras/src/layers/merging/dot.py similarity index 98% rename from keras/layers/merging/dot.py rename to keras/src/layers/merging/dot.py index 944ebac9ad65..e580269bef67 100644 --- a/keras/layers/merging/dot.py +++ b/keras/src/layers/merging/dot.py @@ -1,7 +1,7 @@ -from keras import ops -from keras.api_export import keras_export -from keras.layers.merging.base_merge import Merge -from keras.utils.numerical_utils import normalize +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.layers.merging.base_merge import Merge +from keras.src.utils.numerical_utils import normalize def batch_dot(x, y, axes=None): diff --git a/keras/layers/merging/maximum.py b/keras/src/layers/merging/maximum.py similarity index 94% rename from keras/layers/merging/maximum.py rename to keras/src/layers/merging/maximum.py index fa71c1314ce1..47734a8470d5 100644 --- a/keras/layers/merging/maximum.py +++ b/keras/src/layers/merging/maximum.py @@ -1,6 +1,6 @@ -from keras import ops -from keras.api_export import keras_export -from keras.layers.merging.base_merge import Merge +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.layers.merging.base_merge import Merge @keras_export("keras.layers.Maximum") diff --git a/keras/layers/merging/merging_test.py b/keras/src/layers/merging/merging_test.py similarity index 98% rename from keras/layers/merging/merging_test.py rename to keras/src/layers/merging/merging_test.py index 1518ae23d3d7..1419dc855b83 100644 --- a/keras/layers/merging/merging_test.py +++ b/keras/src/layers/merging/merging_test.py @@ -2,10 +2,10 @@ import pytest from absl.testing import parameterized -from keras import backend -from keras import layers -from keras import models -from keras import testing +from keras.src import backend +from keras.src import layers +from keras.src import models +from keras.src import testing def np_dot(a, b, axes): diff --git a/keras/layers/merging/minimum.py b/keras/src/layers/merging/minimum.py similarity index 94% rename from keras/layers/merging/minimum.py rename to keras/src/layers/merging/minimum.py index bca89abd609f..19137f08a5b3 100644 --- a/keras/layers/merging/minimum.py +++ b/keras/src/layers/merging/minimum.py @@ -1,6 +1,6 @@ -from keras import ops -from keras.api_export import keras_export -from keras.layers.merging.base_merge import Merge +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.layers.merging.base_merge import Merge @keras_export("keras.layers.Minimum") diff --git a/keras/layers/merging/multiply.py b/keras/src/layers/merging/multiply.py similarity index 94% rename from keras/layers/merging/multiply.py rename to keras/src/layers/merging/multiply.py index 929b51191603..d908429d1c5b 100644 --- a/keras/layers/merging/multiply.py +++ b/keras/src/layers/merging/multiply.py @@ -1,6 +1,6 @@ -from keras import ops -from keras.api_export import keras_export -from keras.layers.merging.base_merge import Merge +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.layers.merging.base_merge import Merge @keras_export("keras.layers.Multiply") diff --git a/keras/layers/merging/subtract.py b/keras/src/layers/merging/subtract.py similarity index 95% rename from keras/layers/merging/subtract.py rename to keras/src/layers/merging/subtract.py index 4dc7839172b0..78036adaf233 100644 --- a/keras/layers/merging/subtract.py +++ b/keras/src/layers/merging/subtract.py @@ -1,6 +1,6 @@ -from keras import ops -from keras.api_export import keras_export -from keras.layers.merging.base_merge import Merge +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.layers.merging.base_merge import Merge @keras_export("keras.layers.Subtract") diff --git a/keras/layers/normalization/__init__.py b/keras/src/layers/normalization/__init__.py similarity index 100% rename from keras/layers/normalization/__init__.py rename to keras/src/layers/normalization/__init__.py diff --git a/keras/layers/normalization/batch_normalization.py b/keras/src/layers/normalization/batch_normalization.py similarity index 97% rename from keras/layers/normalization/batch_normalization.py rename to keras/src/layers/normalization/batch_normalization.py index d752e8d1a64f..ecbd1a453926 100644 --- a/keras/layers/normalization/batch_normalization.py +++ b/keras/src/layers/normalization/batch_normalization.py @@ -1,12 +1,12 @@ -from keras import backend -from keras import constraints -from keras import initializers -from keras import ops -from keras import regularizers -from keras.api_export import keras_export -from keras.backend import standardize_dtype -from keras.layers.input_spec import InputSpec -from keras.layers.layer import Layer +from keras.src import backend +from keras.src import constraints +from keras.src import initializers +from keras.src import ops +from keras.src import regularizers +from keras.src.api_export import keras_export +from keras.src.backend import standardize_dtype +from keras.src.layers.input_spec import InputSpec +from keras.src.layers.layer import Layer @keras_export("keras.layers.BatchNormalization") diff --git a/keras/layers/normalization/batch_normalization_test.py b/keras/src/layers/normalization/batch_normalization_test.py similarity index 97% rename from keras/layers/normalization/batch_normalization_test.py rename to keras/src/layers/normalization/batch_normalization_test.py index 1a1d1b10c96d..b0ccdfd0288f 100644 --- a/keras/layers/normalization/batch_normalization_test.py +++ b/keras/src/layers/normalization/batch_normalization_test.py @@ -2,12 +2,12 @@ import pytest from absl.testing import parameterized -from keras import backend -from keras import layers -from keras import ops -from keras import testing -from keras.losses import MeanSquaredError -from keras.models import Model +from keras.src import backend +from keras.src import layers +from keras.src import ops +from keras.src import testing +from keras.src.losses import MeanSquaredError +from keras.src.models import Model class BatchNormalizationTest(testing.TestCase, parameterized.TestCase): diff --git a/keras/layers/normalization/group_normalization.py b/keras/src/layers/normalization/group_normalization.py similarity index 96% rename from keras/layers/normalization/group_normalization.py rename to keras/src/layers/normalization/group_normalization.py index a04b672c358a..f70fb69f3ed7 100644 --- a/keras/layers/normalization/group_normalization.py +++ b/keras/src/layers/normalization/group_normalization.py @@ -1,10 +1,10 @@ -from keras import constraints -from keras import initializers -from keras import ops -from keras import regularizers -from keras.api_export import keras_export -from keras.layers.input_spec import InputSpec -from keras.layers.layer import Layer +from keras.src import constraints +from keras.src import initializers +from keras.src import ops +from keras.src import regularizers +from keras.src.api_export import keras_export +from keras.src.layers.input_spec import InputSpec +from keras.src.layers.layer import Layer @keras_export("keras.layers.GroupNormalization") diff --git a/keras/layers/normalization/group_normalization_test.py b/keras/src/layers/normalization/group_normalization_test.py similarity index 97% rename from keras/layers/normalization/group_normalization_test.py rename to keras/src/layers/normalization/group_normalization_test.py index c836b8930643..76e4eae280a8 100644 --- a/keras/layers/normalization/group_normalization_test.py +++ b/keras/src/layers/normalization/group_normalization_test.py @@ -1,10 +1,10 @@ import numpy as np import pytest -from keras import constraints -from keras import layers -from keras import regularizers -from keras import testing +from keras.src import constraints +from keras.src import layers +from keras.src import regularizers +from keras.src import testing class GroupNormalizationTest(testing.TestCase): diff --git a/keras/layers/normalization/layer_normalization.py b/keras/src/layers/normalization/layer_normalization.py similarity index 97% rename from keras/layers/normalization/layer_normalization.py rename to keras/src/layers/normalization/layer_normalization.py index c26d008b0f69..854a071932b1 100644 --- a/keras/layers/normalization/layer_normalization.py +++ b/keras/src/layers/normalization/layer_normalization.py @@ -1,9 +1,9 @@ -from keras import constraints -from keras import initializers -from keras import ops -from keras import regularizers -from keras.api_export import keras_export -from keras.layers.layer import Layer +from keras.src import constraints +from keras.src import initializers +from keras.src import ops +from keras.src import regularizers +from keras.src.api_export import keras_export +from keras.src.layers.layer import Layer @keras_export("keras.layers.LayerNormalization") diff --git a/keras/layers/normalization/layer_normalization_test.py b/keras/src/layers/normalization/layer_normalization_test.py similarity index 96% rename from keras/layers/normalization/layer_normalization_test.py rename to keras/src/layers/normalization/layer_normalization_test.py index 87550ff7aa3a..6afbd5435618 100644 --- a/keras/layers/normalization/layer_normalization_test.py +++ b/keras/src/layers/normalization/layer_normalization_test.py @@ -1,11 +1,11 @@ import numpy as np import pytest -from keras import backend -from keras import layers -from keras import ops -from keras import regularizers -from keras import testing +from keras.src import backend +from keras.src import layers +from keras.src import ops +from keras.src import regularizers +from keras.src import testing class LayerNormalizationTest(testing.TestCase): diff --git a/keras/layers/normalization/spectral_normalization.py b/keras/src/layers/normalization/spectral_normalization.py similarity index 94% rename from keras/layers/normalization/spectral_normalization.py rename to keras/src/layers/normalization/spectral_normalization.py index 84471125b49d..727d6bb58dbd 100644 --- a/keras/layers/normalization/spectral_normalization.py +++ b/keras/src/layers/normalization/spectral_normalization.py @@ -1,9 +1,9 @@ -from keras import initializers -from keras import ops -from keras.api_export import keras_export -from keras.layers import Wrapper -from keras.layers.input_spec import InputSpec -from keras.utils.numerical_utils import normalize +from keras.src import initializers +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.layers import Wrapper +from keras.src.layers.input_spec import InputSpec +from keras.src.utils.numerical_utils import normalize @keras_export("keras.layers.SpectralNormalization") diff --git a/keras/layers/normalization/spectral_normalization_test.py b/keras/src/layers/normalization/spectral_normalization_test.py similarity index 94% rename from keras/layers/normalization/spectral_normalization_test.py rename to keras/src/layers/normalization/spectral_normalization_test.py index 632edd20ecbe..b3cc47d8d9f0 100644 --- a/keras/layers/normalization/spectral_normalization_test.py +++ b/keras/src/layers/normalization/spectral_normalization_test.py @@ -1,11 +1,11 @@ import numpy as np import pytest -from keras import backend -from keras import initializers -from keras import layers -from keras import models -from keras import testing +from keras.src import backend +from keras.src import initializers +from keras.src import layers +from keras.src import models +from keras.src import testing class SpectralNormalizationTest(testing.TestCase): diff --git a/keras/layers/normalization/unit_normalization.py b/keras/src/layers/normalization/unit_normalization.py similarity index 93% rename from keras/layers/normalization/unit_normalization.py rename to keras/src/layers/normalization/unit_normalization.py index 09b5a34e2721..1dbf97c74fe1 100644 --- a/keras/layers/normalization/unit_normalization.py +++ b/keras/src/layers/normalization/unit_normalization.py @@ -1,6 +1,6 @@ -from keras import ops -from keras.api_export import keras_export -from keras.layers.layer import Layer +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.layers.layer import Layer @keras_export("keras.layers.UnitNormalization") diff --git a/keras/layers/normalization/unit_normalization_test.py b/keras/src/layers/normalization/unit_normalization_test.py similarity index 95% rename from keras/layers/normalization/unit_normalization_test.py rename to keras/src/layers/normalization/unit_normalization_test.py index 591e03311ad2..ea9201fb7e68 100644 --- a/keras/layers/normalization/unit_normalization_test.py +++ b/keras/src/layers/normalization/unit_normalization_test.py @@ -1,9 +1,9 @@ import numpy as np import pytest -from keras import backend -from keras import layers -from keras import testing +from keras.src import backend +from keras.src import layers +from keras.src import testing def squared_l2_norm(x): diff --git a/keras/layers/pooling/__init__.py b/keras/src/layers/pooling/__init__.py similarity index 100% rename from keras/layers/pooling/__init__.py rename to keras/src/layers/pooling/__init__.py diff --git a/keras/layers/pooling/average_pooling1d.py b/keras/src/layers/pooling/average_pooling1d.py similarity index 96% rename from keras/layers/pooling/average_pooling1d.py rename to keras/src/layers/pooling/average_pooling1d.py index fb5ee068bfb1..43b91f0f2ace 100644 --- a/keras/layers/pooling/average_pooling1d.py +++ b/keras/src/layers/pooling/average_pooling1d.py @@ -1,5 +1,5 @@ -from keras.api_export import keras_export -from keras.layers.pooling.base_pooling import BasePooling +from keras.src.api_export import keras_export +from keras.src.layers.pooling.base_pooling import BasePooling @keras_export(["keras.layers.AveragePooling1D", "keras.layers.AvgPool1D"]) diff --git a/keras/layers/pooling/average_pooling2d.py b/keras/src/layers/pooling/average_pooling2d.py similarity index 97% rename from keras/layers/pooling/average_pooling2d.py rename to keras/src/layers/pooling/average_pooling2d.py index 16bb8ee250f6..778c40191f5d 100644 --- a/keras/layers/pooling/average_pooling2d.py +++ b/keras/src/layers/pooling/average_pooling2d.py @@ -1,5 +1,5 @@ -from keras.api_export import keras_export -from keras.layers.pooling.base_pooling import BasePooling +from keras.src.api_export import keras_export +from keras.src.layers.pooling.base_pooling import BasePooling @keras_export(["keras.layers.AveragePooling2D", "keras.layers.AvgPool2D"]) diff --git a/keras/layers/pooling/average_pooling3d.py b/keras/src/layers/pooling/average_pooling3d.py similarity index 96% rename from keras/layers/pooling/average_pooling3d.py rename to keras/src/layers/pooling/average_pooling3d.py index 9d6da60a86e1..ed4d2269459c 100644 --- a/keras/layers/pooling/average_pooling3d.py +++ b/keras/src/layers/pooling/average_pooling3d.py @@ -1,5 +1,5 @@ -from keras.api_export import keras_export -from keras.layers.pooling.base_pooling import BasePooling +from keras.src.api_export import keras_export +from keras.src.layers.pooling.base_pooling import BasePooling @keras_export(["keras.layers.AveragePooling3D", "keras.layers.AvgPool3D"]) diff --git a/keras/layers/pooling/average_pooling_test.py b/keras/src/layers/pooling/average_pooling_test.py similarity index 99% rename from keras/layers/pooling/average_pooling_test.py rename to keras/src/layers/pooling/average_pooling_test.py index 6256876b6d6a..ae76d2c77f79 100644 --- a/keras/layers/pooling/average_pooling_test.py +++ b/keras/src/layers/pooling/average_pooling_test.py @@ -3,9 +3,9 @@ from absl.testing import parameterized from numpy.lib.stride_tricks import as_strided -from keras import backend -from keras import layers -from keras import testing +from keras.src import backend +from keras.src import layers +from keras.src import testing def _same_padding(input_size, pool_size, stride): diff --git a/keras/layers/pooling/base_global_pooling.py b/keras/src/layers/pooling/base_global_pooling.py similarity index 91% rename from keras/layers/pooling/base_global_pooling.py rename to keras/src/layers/pooling/base_global_pooling.py index da7a0fcd9d42..260e1d8eba37 100644 --- a/keras/layers/pooling/base_global_pooling.py +++ b/keras/src/layers/pooling/base_global_pooling.py @@ -1,6 +1,6 @@ -from keras import backend -from keras.layers.input_spec import InputSpec -from keras.layers.layer import Layer +from keras.src import backend +from keras.src.layers.input_spec import InputSpec +from keras.src.layers.layer import Layer class BaseGlobalPooling(Layer): diff --git a/keras/layers/pooling/base_pooling.py b/keras/src/layers/pooling/base_pooling.py similarity index 89% rename from keras/layers/pooling/base_pooling.py rename to keras/src/layers/pooling/base_pooling.py index 85751086cc96..e2c85394f731 100644 --- a/keras/layers/pooling/base_pooling.py +++ b/keras/src/layers/pooling/base_pooling.py @@ -1,9 +1,9 @@ -from keras import backend -from keras import ops -from keras.layers.input_spec import InputSpec -from keras.layers.layer import Layer -from keras.ops.operation_utils import compute_pooling_output_shape -from keras.utils import argument_validation +from keras.src import backend +from keras.src import ops +from keras.src.layers.input_spec import InputSpec +from keras.src.layers.layer import Layer +from keras.src.ops.operation_utils import compute_pooling_output_shape +from keras.src.utils import argument_validation class BasePooling(Layer): diff --git a/keras/layers/pooling/global_average_pooling1d.py b/keras/src/layers/pooling/global_average_pooling1d.py similarity index 94% rename from keras/layers/pooling/global_average_pooling1d.py rename to keras/src/layers/pooling/global_average_pooling1d.py index f5b4d0a0886c..6db5fb923c8c 100644 --- a/keras/layers/pooling/global_average_pooling1d.py +++ b/keras/src/layers/pooling/global_average_pooling1d.py @@ -1,7 +1,7 @@ -from keras import backend -from keras import ops -from keras.api_export import keras_export -from keras.layers.pooling.base_global_pooling import BaseGlobalPooling +from keras.src import backend +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.layers.pooling.base_global_pooling import BaseGlobalPooling @keras_export( diff --git a/keras/layers/pooling/global_average_pooling2d.py b/keras/src/layers/pooling/global_average_pooling2d.py similarity index 94% rename from keras/layers/pooling/global_average_pooling2d.py rename to keras/src/layers/pooling/global_average_pooling2d.py index d6147ea21f04..1536c3c302e8 100644 --- a/keras/layers/pooling/global_average_pooling2d.py +++ b/keras/src/layers/pooling/global_average_pooling2d.py @@ -1,6 +1,6 @@ -from keras import ops -from keras.api_export import keras_export -from keras.layers.pooling.base_global_pooling import BaseGlobalPooling +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.layers.pooling.base_global_pooling import BaseGlobalPooling @keras_export( diff --git a/keras/layers/pooling/global_average_pooling3d.py b/keras/src/layers/pooling/global_average_pooling3d.py similarity index 94% rename from keras/layers/pooling/global_average_pooling3d.py rename to keras/src/layers/pooling/global_average_pooling3d.py index 8fa05eea5a87..14ffc5bfc4d0 100644 --- a/keras/layers/pooling/global_average_pooling3d.py +++ b/keras/src/layers/pooling/global_average_pooling3d.py @@ -1,6 +1,6 @@ -from keras import ops -from keras.api_export import keras_export -from keras.layers.pooling.base_global_pooling import BaseGlobalPooling +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.layers.pooling.base_global_pooling import BaseGlobalPooling @keras_export( diff --git a/keras/layers/pooling/global_average_pooling_test.py b/keras/src/layers/pooling/global_average_pooling_test.py similarity index 99% rename from keras/layers/pooling/global_average_pooling_test.py rename to keras/src/layers/pooling/global_average_pooling_test.py index 4069abc75940..868601c31e65 100644 --- a/keras/layers/pooling/global_average_pooling_test.py +++ b/keras/src/layers/pooling/global_average_pooling_test.py @@ -2,8 +2,8 @@ import pytest from absl.testing import parameterized -from keras import layers -from keras import testing +from keras.src import layers +from keras.src import testing @pytest.mark.requires_trainable_backend diff --git a/keras/layers/pooling/global_max_pooling1d.py b/keras/src/layers/pooling/global_max_pooling1d.py similarity index 93% rename from keras/layers/pooling/global_max_pooling1d.py rename to keras/src/layers/pooling/global_max_pooling1d.py index 2956474cb004..7c6d9ff79692 100644 --- a/keras/layers/pooling/global_max_pooling1d.py +++ b/keras/src/layers/pooling/global_max_pooling1d.py @@ -1,6 +1,6 @@ -from keras import ops -from keras.api_export import keras_export -from keras.layers.pooling.base_global_pooling import BaseGlobalPooling +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.layers.pooling.base_global_pooling import BaseGlobalPooling @keras_export( diff --git a/keras/layers/pooling/global_max_pooling2d.py b/keras/src/layers/pooling/global_max_pooling2d.py similarity index 94% rename from keras/layers/pooling/global_max_pooling2d.py rename to keras/src/layers/pooling/global_max_pooling2d.py index 66a117cd58f0..289ebe0a87d6 100644 --- a/keras/layers/pooling/global_max_pooling2d.py +++ b/keras/src/layers/pooling/global_max_pooling2d.py @@ -1,6 +1,6 @@ -from keras import ops -from keras.api_export import keras_export -from keras.layers.pooling.base_global_pooling import BaseGlobalPooling +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.layers.pooling.base_global_pooling import BaseGlobalPooling @keras_export( diff --git a/keras/layers/pooling/global_max_pooling3d.py b/keras/src/layers/pooling/global_max_pooling3d.py similarity index 94% rename from keras/layers/pooling/global_max_pooling3d.py rename to keras/src/layers/pooling/global_max_pooling3d.py index fb4598356d8f..07e1eb065bc7 100644 --- a/keras/layers/pooling/global_max_pooling3d.py +++ b/keras/src/layers/pooling/global_max_pooling3d.py @@ -1,6 +1,6 @@ -from keras import ops -from keras.api_export import keras_export -from keras.layers.pooling.base_global_pooling import BaseGlobalPooling +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.layers.pooling.base_global_pooling import BaseGlobalPooling @keras_export( diff --git a/keras/layers/pooling/global_max_pooling_test.py b/keras/src/layers/pooling/global_max_pooling_test.py similarity index 98% rename from keras/layers/pooling/global_max_pooling_test.py rename to keras/src/layers/pooling/global_max_pooling_test.py index 6b413fd17461..b2d5cb6ada39 100644 --- a/keras/layers/pooling/global_max_pooling_test.py +++ b/keras/src/layers/pooling/global_max_pooling_test.py @@ -2,8 +2,8 @@ import pytest from absl.testing import parameterized -from keras import layers -from keras import testing +from keras.src import layers +from keras.src import testing @pytest.mark.requires_trainable_backend diff --git a/keras/layers/pooling/max_pooling1d.py b/keras/src/layers/pooling/max_pooling1d.py similarity index 96% rename from keras/layers/pooling/max_pooling1d.py rename to keras/src/layers/pooling/max_pooling1d.py index 74505b450e27..3636a984c764 100644 --- a/keras/layers/pooling/max_pooling1d.py +++ b/keras/src/layers/pooling/max_pooling1d.py @@ -1,5 +1,5 @@ -from keras.api_export import keras_export -from keras.layers.pooling.base_pooling import BasePooling +from keras.src.api_export import keras_export +from keras.src.layers.pooling.base_pooling import BasePooling @keras_export(["keras.layers.MaxPooling1D", "keras.layers.MaxPool1D"]) diff --git a/keras/layers/pooling/max_pooling2d.py b/keras/src/layers/pooling/max_pooling2d.py similarity index 97% rename from keras/layers/pooling/max_pooling2d.py rename to keras/src/layers/pooling/max_pooling2d.py index 8c0e4ee65204..d2189f9e841a 100644 --- a/keras/layers/pooling/max_pooling2d.py +++ b/keras/src/layers/pooling/max_pooling2d.py @@ -1,5 +1,5 @@ -from keras.api_export import keras_export -from keras.layers.pooling.base_pooling import BasePooling +from keras.src.api_export import keras_export +from keras.src.layers.pooling.base_pooling import BasePooling @keras_export(["keras.layers.MaxPooling2D", "keras.layers.MaxPool2D"]) diff --git a/keras/layers/pooling/max_pooling3d.py b/keras/src/layers/pooling/max_pooling3d.py similarity index 96% rename from keras/layers/pooling/max_pooling3d.py rename to keras/src/layers/pooling/max_pooling3d.py index 9ddbb38c0f07..225df65fb1e2 100644 --- a/keras/layers/pooling/max_pooling3d.py +++ b/keras/src/layers/pooling/max_pooling3d.py @@ -1,5 +1,5 @@ -from keras.api_export import keras_export -from keras.layers.pooling.base_pooling import BasePooling +from keras.src.api_export import keras_export +from keras.src.layers.pooling.base_pooling import BasePooling @keras_export(["keras.layers.MaxPooling3D", "keras.layers.MaxPool3D"]) diff --git a/keras/layers/pooling/max_pooling_test.py b/keras/src/layers/pooling/max_pooling_test.py similarity index 99% rename from keras/layers/pooling/max_pooling_test.py rename to keras/src/layers/pooling/max_pooling_test.py index 418a77f8327c..be1adb7ecfdb 100644 --- a/keras/layers/pooling/max_pooling_test.py +++ b/keras/src/layers/pooling/max_pooling_test.py @@ -3,8 +3,8 @@ from absl.testing import parameterized from numpy.lib.stride_tricks import as_strided -from keras import layers -from keras import testing +from keras.src import layers +from keras.src import testing def _same_padding(input_size, pool_size, stride): diff --git a/keras/layers/preprocessing/__init__.py b/keras/src/layers/preprocessing/__init__.py similarity index 100% rename from keras/layers/preprocessing/__init__.py rename to keras/src/layers/preprocessing/__init__.py diff --git a/keras/layers/preprocessing/audio_preprocessing.py b/keras/src/layers/preprocessing/audio_preprocessing.py similarity index 99% rename from keras/layers/preprocessing/audio_preprocessing.py rename to keras/src/layers/preprocessing/audio_preprocessing.py index 4c22977a8720..f91a4ccd8ceb 100644 --- a/keras/layers/preprocessing/audio_preprocessing.py +++ b/keras/src/layers/preprocessing/audio_preprocessing.py @@ -1,5 +1,5 @@ -from keras.api_export import keras_export -from keras.layers.preprocessing.tf_data_layer import TFDataLayer +from keras.src.api_export import keras_export +from keras.src.layers.preprocessing.tf_data_layer import TFDataLayer # mel spectrum constants. _MEL_BREAK_FREQUENCY_HERTZ = 700.0 diff --git a/keras/layers/preprocessing/audio_preprocessing_test.py b/keras/src/layers/preprocessing/audio_preprocessing_test.py similarity index 98% rename from keras/layers/preprocessing/audio_preprocessing_test.py rename to keras/src/layers/preprocessing/audio_preprocessing_test.py index 3f45fcc3f1de..745794e11cd9 100644 --- a/keras/layers/preprocessing/audio_preprocessing_test.py +++ b/keras/src/layers/preprocessing/audio_preprocessing_test.py @@ -3,8 +3,8 @@ from absl.testing import parameterized from tensorflow import data as tf_data -from keras import layers -from keras import testing +from keras.src import layers +from keras.src import testing class MelSpectrogramTest(testing.TestCase, parameterized.TestCase): diff --git a/keras/layers/preprocessing/category_encoding.py b/keras/src/layers/preprocessing/category_encoding.py similarity index 97% rename from keras/layers/preprocessing/category_encoding.py rename to keras/src/layers/preprocessing/category_encoding.py index 2feb929dee2c..bf30752eaedd 100644 --- a/keras/layers/preprocessing/category_encoding.py +++ b/keras/src/layers/preprocessing/category_encoding.py @@ -1,7 +1,7 @@ -from keras.api_export import keras_export -from keras.backend import KerasTensor -from keras.layers.preprocessing.tf_data_layer import TFDataLayer -from keras.utils import backend_utils +from keras.src.api_export import keras_export +from keras.src.backend import KerasTensor +from keras.src.layers.preprocessing.tf_data_layer import TFDataLayer +from keras.src.utils import backend_utils @keras_export("keras.layers.CategoryEncoding") diff --git a/keras/layers/preprocessing/category_encoding_test.py b/keras/src/layers/preprocessing/category_encoding_test.py similarity index 99% rename from keras/layers/preprocessing/category_encoding_test.py rename to keras/src/layers/preprocessing/category_encoding_test.py index da55f9d35297..5ac8ebff7f07 100644 --- a/keras/layers/preprocessing/category_encoding_test.py +++ b/keras/src/layers/preprocessing/category_encoding_test.py @@ -2,9 +2,9 @@ from absl.testing import parameterized from tensorflow import data as tf_data -from keras import backend -from keras import layers -from keras import testing +from keras.src import backend +from keras.src import layers +from keras.src import testing TEST_CASES = [{"testcase_name": "dense", "sparse": False}] if backend.SUPPORTS_SPARSE_TENSORS: diff --git a/keras/layers/preprocessing/center_crop.py b/keras/src/layers/preprocessing/center_crop.py similarity index 96% rename from keras/layers/preprocessing/center_crop.py rename to keras/src/layers/preprocessing/center_crop.py index 3a2dadfbeaec..e5fbbaa8a333 100644 --- a/keras/layers/preprocessing/center_crop.py +++ b/keras/src/layers/preprocessing/center_crop.py @@ -1,7 +1,7 @@ -from keras import backend -from keras.api_export import keras_export -from keras.layers.preprocessing.tf_data_layer import TFDataLayer -from keras.utils import image_utils +from keras.src import backend +from keras.src.api_export import keras_export +from keras.src.layers.preprocessing.tf_data_layer import TFDataLayer +from keras.src.utils import image_utils @keras_export("keras.layers.CenterCrop") diff --git a/keras/layers/preprocessing/center_crop_test.py b/keras/src/layers/preprocessing/center_crop_test.py similarity index 98% rename from keras/layers/preprocessing/center_crop_test.py rename to keras/src/layers/preprocessing/center_crop_test.py index 8fbb429b6f4c..4652f9abee16 100644 --- a/keras/layers/preprocessing/center_crop_test.py +++ b/keras/src/layers/preprocessing/center_crop_test.py @@ -3,9 +3,9 @@ from absl.testing import parameterized from tensorflow import data as tf_data -from keras import backend -from keras import layers -from keras import testing +from keras.src import backend +from keras.src import layers +from keras.src import testing class CenterCropTest(testing.TestCase, parameterized.TestCase): diff --git a/keras/layers/preprocessing/discretization.py b/keras/src/layers/preprocessing/discretization.py similarity index 97% rename from keras/layers/preprocessing/discretization.py rename to keras/src/layers/preprocessing/discretization.py index e8a3cbbe1405..7b40857d8371 100644 --- a/keras/layers/preprocessing/discretization.py +++ b/keras/src/layers/preprocessing/discretization.py @@ -1,11 +1,11 @@ import numpy as np -from keras import backend -from keras.api_export import keras_export -from keras.layers.preprocessing.tf_data_layer import TFDataLayer -from keras.utils import argument_validation -from keras.utils import numerical_utils -from keras.utils.module_utils import tensorflow as tf +from keras.src import backend +from keras.src.api_export import keras_export +from keras.src.layers.preprocessing.tf_data_layer import TFDataLayer +from keras.src.utils import argument_validation +from keras.src.utils import numerical_utils +from keras.src.utils.module_utils import tensorflow as tf @keras_export("keras.layers.Discretization") diff --git a/keras/layers/preprocessing/discretization_test.py b/keras/src/layers/preprocessing/discretization_test.py similarity index 96% rename from keras/layers/preprocessing/discretization_test.py rename to keras/src/layers/preprocessing/discretization_test.py index 8677282de7fc..e33dd6a706d1 100644 --- a/keras/layers/preprocessing/discretization_test.py +++ b/keras/src/layers/preprocessing/discretization_test.py @@ -5,11 +5,11 @@ from absl.testing import parameterized from tensorflow import data as tf_data -from keras import backend -from keras import layers -from keras import models -from keras import testing -from keras.saving import saving_api +from keras.src import backend +from keras.src import layers +from keras.src import models +from keras.src import testing +from keras.src.saving import saving_api class DiscretizationTest(testing.TestCase, parameterized.TestCase): @@ -169,7 +169,7 @@ def test_saving(self): reason="Sparse tensor only works in TensorFlow", ) def test_sparse_output(self, output_mode, input_array, expected_output): - from keras.utils.module_utils import tensorflow as tf + from keras.src.utils.module_utils import tensorflow as tf x = np.array(input_array) layer = layers.Discretization( diff --git a/keras/layers/preprocessing/feature_space.py b/keras/src/layers/preprocessing/feature_space.py similarity index 98% rename from keras/layers/preprocessing/feature_space.py rename to keras/src/layers/preprocessing/feature_space.py index c2b0a9b15581..f66b0328f4c1 100644 --- a/keras/layers/preprocessing/feature_space.py +++ b/keras/src/layers/preprocessing/feature_space.py @@ -1,13 +1,13 @@ -from keras import backend -from keras import layers -from keras import tree -from keras.api_export import keras_export -from keras.layers.layer import Layer -from keras.saving import saving_lib -from keras.saving import serialization_lib -from keras.utils import backend_utils -from keras.utils.module_utils import tensorflow as tf -from keras.utils.naming import auto_name +from keras.src import backend +from keras.src import layers +from keras.src import tree +from keras.src.api_export import keras_export +from keras.src.layers.layer import Layer +from keras.src.saving import saving_lib +from keras.src.saving import serialization_lib +from keras.src.utils import backend_utils +from keras.src.utils.module_utils import tensorflow as tf +from keras.src.utils.naming import auto_name class Cross: @@ -277,7 +277,7 @@ def feature(cls, dtype, preprocessor, output_mode): @classmethod def float(cls, name=None): - from keras.layers.core import identity + from keras.src.layers.core import identity name = name or auto_name("float") preprocessor = identity.Identity( diff --git a/keras/layers/preprocessing/feature_space_test.py b/keras/src/layers/preprocessing/feature_space_test.py similarity index 98% rename from keras/layers/preprocessing/feature_space_test.py rename to keras/src/layers/preprocessing/feature_space_test.py index 84738520e0ab..475ad09b319d 100644 --- a/keras/layers/preprocessing/feature_space_test.py +++ b/keras/src/layers/preprocessing/feature_space_test.py @@ -3,13 +3,13 @@ import pytest from tensorflow import data as tf_data -from keras import backend -from keras import layers -from keras import models -from keras import ops -from keras import testing -from keras.layers.preprocessing import feature_space -from keras.saving import saving_api +from keras.src import backend +from keras.src import layers +from keras.src import models +from keras.src import ops +from keras.src import testing +from keras.src.layers.preprocessing import feature_space +from keras.src.saving import saving_api class FeatureSpaceTest(testing.TestCase): diff --git a/keras/layers/preprocessing/hashed_crossing.py b/keras/src/layers/preprocessing/hashed_crossing.py similarity index 96% rename from keras/layers/preprocessing/hashed_crossing.py rename to keras/src/layers/preprocessing/hashed_crossing.py index 1daebf8059fb..f2182bcd898b 100644 --- a/keras/layers/preprocessing/hashed_crossing.py +++ b/keras/src/layers/preprocessing/hashed_crossing.py @@ -1,10 +1,10 @@ -from keras import backend -from keras.api_export import keras_export -from keras.layers.layer import Layer -from keras.utils import argument_validation -from keras.utils import backend_utils -from keras.utils import tf_utils -from keras.utils.module_utils import tensorflow as tf +from keras.src import backend +from keras.src.api_export import keras_export +from keras.src.layers.layer import Layer +from keras.src.utils import argument_validation +from keras.src.utils import backend_utils +from keras.src.utils import tf_utils +from keras.src.utils.module_utils import tensorflow as tf @keras_export("keras.layers.HashedCrossing") diff --git a/keras/layers/preprocessing/hashed_crossing_test.py b/keras/src/layers/preprocessing/hashed_crossing_test.py similarity index 98% rename from keras/layers/preprocessing/hashed_crossing_test.py rename to keras/src/layers/preprocessing/hashed_crossing_test.py index 53a4c0390c29..d599e4a1c60d 100644 --- a/keras/layers/preprocessing/hashed_crossing_test.py +++ b/keras/src/layers/preprocessing/hashed_crossing_test.py @@ -2,9 +2,9 @@ import pytest import tensorflow as tf -from keras import backend -from keras import layers -from keras import testing +from keras.src import backend +from keras.src import layers +from keras.src import testing class HashedCrossingTest(testing.TestCase): diff --git a/keras/layers/preprocessing/hashing.py b/keras/src/layers/preprocessing/hashing.py similarity index 97% rename from keras/layers/preprocessing/hashing.py rename to keras/src/layers/preprocessing/hashing.py index 832dd234fbab..3a05b11ed418 100644 --- a/keras/layers/preprocessing/hashing.py +++ b/keras/src/layers/preprocessing/hashing.py @@ -1,9 +1,9 @@ -from keras import backend -from keras.api_export import keras_export -from keras.layers.layer import Layer -from keras.utils import backend_utils -from keras.utils import tf_utils -from keras.utils.module_utils import tensorflow as tf +from keras.src import backend +from keras.src.api_export import keras_export +from keras.src.layers.layer import Layer +from keras.src.utils import backend_utils +from keras.src.utils import tf_utils +from keras.src.utils.module_utils import tensorflow as tf @keras_export("keras.layers.Hashing") diff --git a/keras/layers/preprocessing/hashing_test.py b/keras/src/layers/preprocessing/hashing_test.py similarity index 99% rename from keras/layers/preprocessing/hashing_test.py rename to keras/src/layers/preprocessing/hashing_test.py index cabd567aa6bb..d5836d9741ac 100644 --- a/keras/layers/preprocessing/hashing_test.py +++ b/keras/src/layers/preprocessing/hashing_test.py @@ -5,11 +5,11 @@ import tensorflow as tf from absl.testing import parameterized -from keras import backend -from keras import layers -from keras import models -from keras import testing -from keras.saving import load_model +from keras.src import backend +from keras.src import layers +from keras.src import models +from keras.src import testing +from keras.src.saving import load_model class ArrayLike: diff --git a/keras/layers/preprocessing/index_lookup.py b/keras/src/layers/preprocessing/index_lookup.py similarity index 99% rename from keras/layers/preprocessing/index_lookup.py rename to keras/src/layers/preprocessing/index_lookup.py index a99651f62ea7..91436fce49d3 100644 --- a/keras/layers/preprocessing/index_lookup.py +++ b/keras/src/layers/preprocessing/index_lookup.py @@ -2,11 +2,11 @@ import numpy as np -from keras import backend -from keras.layers.layer import Layer -from keras.utils import argument_validation -from keras.utils import tf_utils -from keras.utils.module_utils import tensorflow as tf +from keras.src import backend +from keras.src.layers.layer import Layer +from keras.src.utils import argument_validation +from keras.src.utils import tf_utils +from keras.src.utils.module_utils import tensorflow as tf class IndexLookup(Layer): diff --git a/keras/layers/preprocessing/index_lookup_test.py b/keras/src/layers/preprocessing/index_lookup_test.py similarity index 99% rename from keras/layers/preprocessing/index_lookup_test.py rename to keras/src/layers/preprocessing/index_lookup_test.py index 1a0ef9428beb..1cdda22c8c00 100644 --- a/keras/layers/preprocessing/index_lookup_test.py +++ b/keras/src/layers/preprocessing/index_lookup_test.py @@ -5,11 +5,11 @@ from absl.testing import parameterized from tensorflow import data as tf_data -from keras import backend -from keras import layers -from keras import models -from keras import testing -from keras.saving import saving_api +from keras.src import backend +from keras.src import layers +from keras.src import models +from keras.src import testing +from keras.src.saving import saving_api @pytest.mark.skipif( diff --git a/keras/layers/preprocessing/integer_lookup.py b/keras/src/layers/preprocessing/integer_lookup.py similarity index 98% rename from keras/layers/preprocessing/integer_lookup.py rename to keras/src/layers/preprocessing/integer_lookup.py index 121eedf45061..bf357552e57e 100644 --- a/keras/layers/preprocessing/integer_lookup.py +++ b/keras/src/layers/preprocessing/integer_lookup.py @@ -1,10 +1,10 @@ import numpy as np -from keras import backend -from keras.api_export import keras_export -from keras.layers.preprocessing.index_lookup import IndexLookup -from keras.utils import backend_utils -from keras.utils.module_utils import tensorflow as tf +from keras.src import backend +from keras.src.api_export import keras_export +from keras.src.layers.preprocessing.index_lookup import IndexLookup +from keras.src.utils import backend_utils +from keras.src.utils.module_utils import tensorflow as tf @keras_export("keras.layers.IntegerLookup") diff --git a/keras/layers/preprocessing/integer_lookup_test.py b/keras/src/layers/preprocessing/integer_lookup_test.py similarity index 97% rename from keras/layers/preprocessing/integer_lookup_test.py rename to keras/src/layers/preprocessing/integer_lookup_test.py index ede05bedf29a..d1c6a732cbe9 100644 --- a/keras/layers/preprocessing/integer_lookup_test.py +++ b/keras/src/layers/preprocessing/integer_lookup_test.py @@ -1,9 +1,9 @@ import numpy as np from tensorflow import data as tf_data -from keras import backend -from keras import layers -from keras import testing +from keras.src import backend +from keras.src import layers +from keras.src import testing class IntegerLookupTest(testing.TestCase): diff --git a/keras/layers/preprocessing/normalization.py b/keras/src/layers/preprocessing/normalization.py similarity index 98% rename from keras/layers/preprocessing/normalization.py rename to keras/src/layers/preprocessing/normalization.py index 76a4c37972d2..5ace2f5e76cd 100644 --- a/keras/layers/preprocessing/normalization.py +++ b/keras/src/layers/preprocessing/normalization.py @@ -2,11 +2,11 @@ import numpy as np -from keras import backend -from keras import ops -from keras.api_export import keras_export -from keras.layers.layer import Layer -from keras.utils.module_utils import tensorflow as tf +from keras.src import backend +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.layers.layer import Layer +from keras.src.utils.module_utils import tensorflow as tf @keras_export("keras.layers.Normalization") diff --git a/keras/layers/preprocessing/normalization_test.py b/keras/src/layers/preprocessing/normalization_test.py similarity index 97% rename from keras/layers/preprocessing/normalization_test.py rename to keras/src/layers/preprocessing/normalization_test.py index c2db784f95c9..2c480c701e61 100644 --- a/keras/layers/preprocessing/normalization_test.py +++ b/keras/src/layers/preprocessing/normalization_test.py @@ -3,9 +3,9 @@ from absl.testing import parameterized from tensorflow import data as tf_data -from keras import backend -from keras import layers -from keras import testing +from keras.src import backend +from keras.src import layers +from keras.src import testing class NormalizationTest(testing.TestCase, parameterized.TestCase): @@ -96,7 +96,7 @@ def test_normalization_adapt(self, input_type): reason="Test symbolic call for torch meta device.", ) def test_call_on_meta_device_after_built(self): - from keras.backend.torch import core + from keras.src.backend.torch import core layer = layers.Normalization() data = np.random.random((32, 4)) diff --git a/keras/layers/preprocessing/random_brightness.py b/keras/src/layers/preprocessing/random_brightness.py similarity index 97% rename from keras/layers/preprocessing/random_brightness.py rename to keras/src/layers/preprocessing/random_brightness.py index 16816c66d544..8ba25e39cd16 100644 --- a/keras/layers/preprocessing/random_brightness.py +++ b/keras/src/layers/preprocessing/random_brightness.py @@ -1,6 +1,6 @@ -from keras.api_export import keras_export -from keras.layers.preprocessing.tf_data_layer import TFDataLayer -from keras.random.seed_generator import SeedGenerator +from keras.src.api_export import keras_export +from keras.src.layers.preprocessing.tf_data_layer import TFDataLayer +from keras.src.random.seed_generator import SeedGenerator @keras_export("keras.layers.RandomBrightness") diff --git a/keras/layers/preprocessing/random_brightness_test.py b/keras/src/layers/preprocessing/random_brightness_test.py similarity index 97% rename from keras/layers/preprocessing/random_brightness_test.py rename to keras/src/layers/preprocessing/random_brightness_test.py index 129ddd946642..547d3dc265e0 100644 --- a/keras/layers/preprocessing/random_brightness_test.py +++ b/keras/src/layers/preprocessing/random_brightness_test.py @@ -2,9 +2,9 @@ import pytest from tensorflow import data as tf_data -from keras import backend -from keras import layers -from keras import testing +from keras.src import backend +from keras.src import layers +from keras.src import testing class RandomBrightnessTest(testing.TestCase): diff --git a/keras/layers/preprocessing/random_contrast.py b/keras/src/layers/preprocessing/random_contrast.py similarity index 95% rename from keras/layers/preprocessing/random_contrast.py rename to keras/src/layers/preprocessing/random_contrast.py index c9d52727b6d2..d29f9fba3a80 100644 --- a/keras/layers/preprocessing/random_contrast.py +++ b/keras/src/layers/preprocessing/random_contrast.py @@ -1,6 +1,6 @@ -from keras.api_export import keras_export -from keras.layers.preprocessing.tf_data_layer import TFDataLayer -from keras.random.seed_generator import SeedGenerator +from keras.src.api_export import keras_export +from keras.src.layers.preprocessing.tf_data_layer import TFDataLayer +from keras.src.random.seed_generator import SeedGenerator @keras_export("keras.layers.RandomContrast") diff --git a/keras/layers/preprocessing/random_contrast_test.py b/keras/src/layers/preprocessing/random_contrast_test.py similarity index 94% rename from keras/layers/preprocessing/random_contrast_test.py rename to keras/src/layers/preprocessing/random_contrast_test.py index 95a9d1d85ce2..48eac8ec89aa 100644 --- a/keras/layers/preprocessing/random_contrast_test.py +++ b/keras/src/layers/preprocessing/random_contrast_test.py @@ -2,9 +2,9 @@ import pytest from tensorflow import data as tf_data -from keras import backend -from keras import layers -from keras import testing +from keras.src import backend +from keras.src import layers +from keras.src import testing class RandomContrastTest(testing.TestCase): diff --git a/keras/layers/preprocessing/random_crop.py b/keras/src/layers/preprocessing/random_crop.py similarity index 96% rename from keras/layers/preprocessing/random_crop.py rename to keras/src/layers/preprocessing/random_crop.py index b9b6bd8a883a..4eec8ae077e3 100644 --- a/keras/layers/preprocessing/random_crop.py +++ b/keras/src/layers/preprocessing/random_crop.py @@ -1,8 +1,8 @@ -from keras import backend -from keras.api_export import keras_export -from keras.layers.preprocessing.tf_data_layer import TFDataLayer -from keras.random.seed_generator import SeedGenerator -from keras.utils import image_utils +from keras.src import backend +from keras.src.api_export import keras_export +from keras.src.layers.preprocessing.tf_data_layer import TFDataLayer +from keras.src.random.seed_generator import SeedGenerator +from keras.src.utils import image_utils @keras_export("keras.layers.RandomCrop") diff --git a/keras/layers/preprocessing/random_crop_test.py b/keras/src/layers/preprocessing/random_crop_test.py similarity index 97% rename from keras/layers/preprocessing/random_crop_test.py rename to keras/src/layers/preprocessing/random_crop_test.py index 9ba94ae2ad87..53b88265a974 100644 --- a/keras/layers/preprocessing/random_crop_test.py +++ b/keras/src/layers/preprocessing/random_crop_test.py @@ -1,9 +1,9 @@ import numpy as np from tensorflow import data as tf_data -from keras import backend -from keras import layers -from keras import testing +from keras.src import backend +from keras.src import layers +from keras.src import testing class RandomCropTest(testing.TestCase): diff --git a/keras/layers/preprocessing/random_flip.py b/keras/src/layers/preprocessing/random_flip.py similarity index 95% rename from keras/layers/preprocessing/random_flip.py rename to keras/src/layers/preprocessing/random_flip.py index df0127432295..040a3dcb6c63 100644 --- a/keras/layers/preprocessing/random_flip.py +++ b/keras/src/layers/preprocessing/random_flip.py @@ -1,6 +1,6 @@ -from keras.api_export import keras_export -from keras.layers.preprocessing.tf_data_layer import TFDataLayer -from keras.random.seed_generator import SeedGenerator +from keras.src.api_export import keras_export +from keras.src.layers.preprocessing.tf_data_layer import TFDataLayer +from keras.src.random.seed_generator import SeedGenerator HORIZONTAL = "horizontal" VERTICAL = "vertical" diff --git a/keras/layers/preprocessing/random_flip_test.py b/keras/src/layers/preprocessing/random_flip_test.py similarity index 97% rename from keras/layers/preprocessing/random_flip_test.py rename to keras/src/layers/preprocessing/random_flip_test.py index b143979aa309..8a938c507093 100644 --- a/keras/layers/preprocessing/random_flip_test.py +++ b/keras/src/layers/preprocessing/random_flip_test.py @@ -4,10 +4,10 @@ from absl.testing import parameterized from tensorflow import data as tf_data -from keras import backend -from keras import layers -from keras import testing -from keras import utils +from keras.src import backend +from keras.src import layers +from keras.src import testing +from keras.src import utils class MockedRandomFlip(layers.RandomFlip): diff --git a/keras/layers/preprocessing/random_rotation.py b/keras/src/layers/preprocessing/random_rotation.py similarity index 97% rename from keras/layers/preprocessing/random_rotation.py rename to keras/src/layers/preprocessing/random_rotation.py index 308fa40b8ec6..c52acbcbc76d 100644 --- a/keras/layers/preprocessing/random_rotation.py +++ b/keras/src/layers/preprocessing/random_rotation.py @@ -1,9 +1,9 @@ import numpy as np -from keras import backend -from keras.api_export import keras_export -from keras.layers.preprocessing.tf_data_layer import TFDataLayer -from keras.random.seed_generator import SeedGenerator +from keras.src import backend +from keras.src.api_export import keras_export +from keras.src.layers.preprocessing.tf_data_layer import TFDataLayer +from keras.src.random.seed_generator import SeedGenerator @keras_export("keras.layers.RandomRotation") diff --git a/keras/layers/preprocessing/random_rotation_test.py b/keras/src/layers/preprocessing/random_rotation_test.py similarity index 96% rename from keras/layers/preprocessing/random_rotation_test.py rename to keras/src/layers/preprocessing/random_rotation_test.py index 4def62a640e8..b5c6da7fbc45 100644 --- a/keras/layers/preprocessing/random_rotation_test.py +++ b/keras/src/layers/preprocessing/random_rotation_test.py @@ -2,9 +2,9 @@ from absl.testing import parameterized from tensorflow import data as tf_data -from keras import backend -from keras import layers -from keras import testing +from keras.src import backend +from keras.src import layers +from keras.src import testing class RandomRotationTest(testing.TestCase, parameterized.TestCase): diff --git a/keras/layers/preprocessing/random_translation.py b/keras/src/layers/preprocessing/random_translation.py similarity index 98% rename from keras/layers/preprocessing/random_translation.py rename to keras/src/layers/preprocessing/random_translation.py index ae2db36a551a..695bc31519ef 100644 --- a/keras/layers/preprocessing/random_translation.py +++ b/keras/src/layers/preprocessing/random_translation.py @@ -1,7 +1,7 @@ -from keras import backend -from keras.api_export import keras_export -from keras.layers.preprocessing.tf_data_layer import TFDataLayer -from keras.random.seed_generator import SeedGenerator +from keras.src import backend +from keras.src.api_export import keras_export +from keras.src.layers.preprocessing.tf_data_layer import TFDataLayer +from keras.src.random.seed_generator import SeedGenerator @keras_export("keras.layers.RandomTranslation") diff --git a/keras/layers/preprocessing/random_translation_test.py b/keras/src/layers/preprocessing/random_translation_test.py similarity index 99% rename from keras/layers/preprocessing/random_translation_test.py rename to keras/src/layers/preprocessing/random_translation_test.py index 7545dd96ff3f..0f926ec3ede7 100644 --- a/keras/layers/preprocessing/random_translation_test.py +++ b/keras/src/layers/preprocessing/random_translation_test.py @@ -2,9 +2,9 @@ from absl.testing import parameterized from tensorflow import data as tf_data -from keras import backend -from keras import layers -from keras import testing +from keras.src import backend +from keras.src import layers +from keras.src import testing class RandomTranslationTest(testing.TestCase, parameterized.TestCase): diff --git a/keras/layers/preprocessing/random_zoom.py b/keras/src/layers/preprocessing/random_zoom.py similarity index 98% rename from keras/layers/preprocessing/random_zoom.py rename to keras/src/layers/preprocessing/random_zoom.py index db8ab5fcbb3e..332da8e0abaa 100644 --- a/keras/layers/preprocessing/random_zoom.py +++ b/keras/src/layers/preprocessing/random_zoom.py @@ -1,7 +1,7 @@ -from keras import backend -from keras.api_export import keras_export -from keras.layers.preprocessing.tf_data_layer import TFDataLayer -from keras.random.seed_generator import SeedGenerator +from keras.src import backend +from keras.src.api_export import keras_export +from keras.src.layers.preprocessing.tf_data_layer import TFDataLayer +from keras.src.random.seed_generator import SeedGenerator @keras_export("keras.layers.RandomZoom") diff --git a/keras/layers/preprocessing/random_zoom_test.py b/keras/src/layers/preprocessing/random_zoom_test.py similarity index 97% rename from keras/layers/preprocessing/random_zoom_test.py rename to keras/src/layers/preprocessing/random_zoom_test.py index 926f1951242e..fe5ca61710ae 100644 --- a/keras/layers/preprocessing/random_zoom_test.py +++ b/keras/src/layers/preprocessing/random_zoom_test.py @@ -3,10 +3,10 @@ from absl.testing import parameterized from tensorflow import data as tf_data -from keras import backend -from keras import layers -from keras import models -from keras import testing +from keras.src import backend +from keras.src import layers +from keras.src import models +from keras.src import testing class RandomZoomTest(testing.TestCase, parameterized.TestCase): diff --git a/keras/layers/preprocessing/rescaling.py b/keras/src/layers/preprocessing/rescaling.py similarity index 93% rename from keras/layers/preprocessing/rescaling.py rename to keras/src/layers/preprocessing/rescaling.py index 78046fde9f28..a7131eaabd56 100644 --- a/keras/layers/preprocessing/rescaling.py +++ b/keras/src/layers/preprocessing/rescaling.py @@ -1,6 +1,6 @@ -from keras import backend -from keras.api_export import keras_export -from keras.layers.preprocessing.tf_data_layer import TFDataLayer +from keras.src import backend +from keras.src.api_export import keras_export +from keras.src.layers.preprocessing.tf_data_layer import TFDataLayer @keras_export("keras.layers.Rescaling") diff --git a/keras/layers/preprocessing/rescaling_test.py b/keras/src/layers/preprocessing/rescaling_test.py similarity index 97% rename from keras/layers/preprocessing/rescaling_test.py rename to keras/src/layers/preprocessing/rescaling_test.py index 34ae51714031..83a55e1f8a15 100644 --- a/keras/layers/preprocessing/rescaling_test.py +++ b/keras/src/layers/preprocessing/rescaling_test.py @@ -2,9 +2,9 @@ import pytest from tensorflow import data as tf_data -from keras import backend -from keras import layers -from keras import testing +from keras.src import backend +from keras.src import layers +from keras.src import testing class RescalingTest(testing.TestCase): diff --git a/keras/layers/preprocessing/resizing.py b/keras/src/layers/preprocessing/resizing.py similarity index 96% rename from keras/layers/preprocessing/resizing.py rename to keras/src/layers/preprocessing/resizing.py index 44425c435798..6a6c5bab6a8c 100644 --- a/keras/layers/preprocessing/resizing.py +++ b/keras/src/layers/preprocessing/resizing.py @@ -1,6 +1,6 @@ -from keras import backend -from keras.api_export import keras_export -from keras.layers.preprocessing.tf_data_layer import TFDataLayer +from keras.src import backend +from keras.src.api_export import keras_export +from keras.src.layers.preprocessing.tf_data_layer import TFDataLayer @keras_export("keras.layers.Resizing") diff --git a/keras/layers/preprocessing/resizing_test.py b/keras/src/layers/preprocessing/resizing_test.py similarity index 98% rename from keras/layers/preprocessing/resizing_test.py rename to keras/src/layers/preprocessing/resizing_test.py index afb71af3f0a2..d5b9a718d376 100644 --- a/keras/layers/preprocessing/resizing_test.py +++ b/keras/src/layers/preprocessing/resizing_test.py @@ -3,10 +3,10 @@ from absl.testing import parameterized from tensorflow import data as tf_data -from keras import Sequential -from keras import backend -from keras import layers -from keras import testing +from keras.src import Sequential +from keras.src import backend +from keras.src import layers +from keras.src import testing class ResizingTest(testing.TestCase, parameterized.TestCase): diff --git a/keras/layers/preprocessing/string_lookup.py b/keras/src/layers/preprocessing/string_lookup.py similarity index 98% rename from keras/layers/preprocessing/string_lookup.py rename to keras/src/layers/preprocessing/string_lookup.py index 63cf54db7084..ff4fa9074806 100644 --- a/keras/layers/preprocessing/string_lookup.py +++ b/keras/src/layers/preprocessing/string_lookup.py @@ -1,10 +1,10 @@ import numpy as np -from keras import backend -from keras.api_export import keras_export -from keras.layers.preprocessing.index_lookup import IndexLookup -from keras.utils import backend_utils -from keras.utils.module_utils import tensorflow as tf +from keras.src import backend +from keras.src.api_export import keras_export +from keras.src.layers.preprocessing.index_lookup import IndexLookup +from keras.src.utils import backend_utils +from keras.src.utils.module_utils import tensorflow as tf @keras_export("keras.layers.StringLookup") diff --git a/keras/layers/preprocessing/string_lookup_test.py b/keras/src/layers/preprocessing/string_lookup_test.py similarity index 95% rename from keras/layers/preprocessing/string_lookup_test.py rename to keras/src/layers/preprocessing/string_lookup_test.py index 0f33f3d3b1cc..be6c3e56be8a 100644 --- a/keras/layers/preprocessing/string_lookup_test.py +++ b/keras/src/layers/preprocessing/string_lookup_test.py @@ -1,9 +1,9 @@ import numpy as np from tensorflow import data as tf_data -from keras import backend -from keras import layers -from keras import testing +from keras.src import backend +from keras.src import layers +from keras.src import testing class StringLookupTest(testing.TestCase): diff --git a/keras/layers/preprocessing/text_vectorization.py b/keras/src/layers/preprocessing/text_vectorization.py similarity index 98% rename from keras/layers/preprocessing/text_vectorization.py rename to keras/src/layers/preprocessing/text_vectorization.py index 7ddc0e24fed8..ebe828a34ab5 100644 --- a/keras/layers/preprocessing/text_vectorization.py +++ b/keras/src/layers/preprocessing/text_vectorization.py @@ -1,15 +1,15 @@ import numpy as np -from keras import backend -from keras.api_export import keras_export -from keras.layers.layer import Layer -from keras.layers.preprocessing.index_lookup import listify_tensors -from keras.layers.preprocessing.string_lookup import StringLookup -from keras.saving import serialization_lib -from keras.utils import argument_validation -from keras.utils import backend_utils -from keras.utils import tf_utils -from keras.utils.module_utils import tensorflow as tf +from keras.src import backend +from keras.src.api_export import keras_export +from keras.src.layers.layer import Layer +from keras.src.layers.preprocessing.index_lookup import listify_tensors +from keras.src.layers.preprocessing.string_lookup import StringLookup +from keras.src.saving import serialization_lib +from keras.src.utils import argument_validation +from keras.src.utils import backend_utils +from keras.src.utils import tf_utils +from keras.src.utils.module_utils import tensorflow as tf @keras_export("keras.layers.TextVectorization") diff --git a/keras/layers/preprocessing/text_vectorization_test.py b/keras/src/layers/preprocessing/text_vectorization_test.py similarity index 96% rename from keras/layers/preprocessing/text_vectorization_test.py rename to keras/src/layers/preprocessing/text_vectorization_test.py index 633013adc6e5..1f641e5a92de 100644 --- a/keras/layers/preprocessing/text_vectorization_test.py +++ b/keras/src/layers/preprocessing/text_vectorization_test.py @@ -5,12 +5,12 @@ import tensorflow as tf from tensorflow import data as tf_data -from keras import Sequential -from keras import backend -from keras import layers -from keras import models -from keras import saving -from keras import testing +from keras.src import Sequential +from keras.src import backend +from keras.src import layers +from keras.src import models +from keras.src import saving +from keras.src import testing class TextVectorizationTest(testing.TestCase): diff --git a/keras/layers/preprocessing/tf_data_layer.py b/keras/src/layers/preprocessing/tf_data_layer.py similarity index 89% rename from keras/layers/preprocessing/tf_data_layer.py rename to keras/src/layers/preprocessing/tf_data_layer.py index 74cf6515ce3c..f91b84ad9049 100644 --- a/keras/layers/preprocessing/tf_data_layer.py +++ b/keras/src/layers/preprocessing/tf_data_layer.py @@ -1,9 +1,9 @@ -import keras.backend -from keras import tree -from keras.layers.layer import Layer -from keras.random.seed_generator import SeedGenerator -from keras.utils import backend_utils -from keras.utils import tracking +import keras.src.backend +from keras.src import tree +from keras.src.layers.layer import Layer +from keras.src.random.seed_generator import SeedGenerator +from keras.src.utils import backend_utils +from keras.src.utils import tracking class TFDataLayer(Layer): diff --git a/keras/layers/regularization/__init__.py b/keras/src/layers/regularization/__init__.py similarity index 100% rename from keras/layers/regularization/__init__.py rename to keras/src/layers/regularization/__init__.py diff --git a/keras/layers/regularization/activity_regularization.py b/keras/src/layers/regularization/activity_regularization.py similarity index 89% rename from keras/layers/regularization/activity_regularization.py rename to keras/src/layers/regularization/activity_regularization.py index c3908ec74f55..66e724963ca3 100644 --- a/keras/layers/regularization/activity_regularization.py +++ b/keras/src/layers/regularization/activity_regularization.py @@ -1,6 +1,6 @@ -from keras import regularizers -from keras.api_export import keras_export -from keras.layers.layer import Layer +from keras.src import regularizers +from keras.src.api_export import keras_export +from keras.src.layers.layer import Layer @keras_export("keras.layers.ActivityRegularization") diff --git a/keras/layers/regularization/activity_regularization_test.py b/keras/src/layers/regularization/activity_regularization_test.py similarity index 92% rename from keras/layers/regularization/activity_regularization_test.py rename to keras/src/layers/regularization/activity_regularization_test.py index bc92635596de..b3334dadd42a 100644 --- a/keras/layers/regularization/activity_regularization_test.py +++ b/keras/src/layers/regularization/activity_regularization_test.py @@ -1,8 +1,8 @@ import numpy as np import pytest -from keras import layers -from keras.testing import test_case +from keras.src import layers +from keras.src.testing import test_case class ActivityRegularizationTest(test_case.TestCase): diff --git a/keras/layers/regularization/alpha_dropout.py b/keras/src/layers/regularization/alpha_dropout.py similarity index 96% rename from keras/layers/regularization/alpha_dropout.py rename to keras/src/layers/regularization/alpha_dropout.py index 55b55f7d89b4..9bb7ac7afc80 100644 --- a/keras/layers/regularization/alpha_dropout.py +++ b/keras/src/layers/regularization/alpha_dropout.py @@ -1,7 +1,7 @@ -from keras import backend -from keras import ops -from keras.api_export import keras_export -from keras.layers.layer import Layer +from keras.src import backend +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.layers.layer import Layer @keras_export("keras.layers.AlphaDropout") diff --git a/keras/layers/regularization/alpha_dropout_test.py b/keras/src/layers/regularization/alpha_dropout_test.py similarity index 95% rename from keras/layers/regularization/alpha_dropout_test.py rename to keras/src/layers/regularization/alpha_dropout_test.py index bcde257818c4..56d2362d8eef 100644 --- a/keras/layers/regularization/alpha_dropout_test.py +++ b/keras/src/layers/regularization/alpha_dropout_test.py @@ -1,9 +1,9 @@ import numpy as np import pytest -from keras import backend -from keras import layers -from keras import testing +from keras.src import backend +from keras.src import layers +from keras.src import testing class AlphaDropoutTest(testing.TestCase): diff --git a/keras/layers/regularization/dropout.py b/keras/src/layers/regularization/dropout.py similarity index 96% rename from keras/layers/regularization/dropout.py rename to keras/src/layers/regularization/dropout.py index 677a545a2c69..8db64b3a539c 100644 --- a/keras/layers/regularization/dropout.py +++ b/keras/src/layers/regularization/dropout.py @@ -1,6 +1,6 @@ -from keras import backend -from keras.api_export import keras_export -from keras.layers.layer import Layer +from keras.src import backend +from keras.src.api_export import keras_export +from keras.src.layers.layer import Layer @keras_export("keras.layers.Dropout") diff --git a/keras/layers/regularization/dropout_test.py b/keras/src/layers/regularization/dropout_test.py similarity index 95% rename from keras/layers/regularization/dropout_test.py rename to keras/src/layers/regularization/dropout_test.py index 5cff84f7f0f4..90f5cbeaa058 100644 --- a/keras/layers/regularization/dropout_test.py +++ b/keras/src/layers/regularization/dropout_test.py @@ -1,9 +1,9 @@ import numpy as np import pytest -from keras import backend -from keras import layers -from keras import testing +from keras.src import backend +from keras.src import layers +from keras.src import testing class DropoutTest(testing.TestCase): diff --git a/keras/layers/regularization/gaussian_dropout.py b/keras/src/layers/regularization/gaussian_dropout.py similarity index 93% rename from keras/layers/regularization/gaussian_dropout.py rename to keras/src/layers/regularization/gaussian_dropout.py index 2450960e5fcf..e7e8ea3467ed 100644 --- a/keras/layers/regularization/gaussian_dropout.py +++ b/keras/src/layers/regularization/gaussian_dropout.py @@ -1,9 +1,9 @@ import math -from keras import backend -from keras import layers -from keras import ops -from keras.api_export import keras_export +from keras.src import backend +from keras.src import layers +from keras.src import ops +from keras.src.api_export import keras_export @keras_export("keras.layers.GaussianDropout") diff --git a/keras/layers/regularization/gaussian_dropout_test.py b/keras/src/layers/regularization/gaussian_dropout_test.py similarity index 91% rename from keras/layers/regularization/gaussian_dropout_test.py rename to keras/src/layers/regularization/gaussian_dropout_test.py index 1d01281ee369..33f6b3759b95 100644 --- a/keras/layers/regularization/gaussian_dropout_test.py +++ b/keras/src/layers/regularization/gaussian_dropout_test.py @@ -1,9 +1,9 @@ import numpy as np import pytest -from keras import backend -from keras import layers -from keras import testing +from keras.src import backend +from keras.src import layers +from keras.src import testing class GaussianDropoutTest(testing.TestCase): diff --git a/keras/layers/regularization/gaussian_noise.py b/keras/src/layers/regularization/gaussian_noise.py similarity index 93% rename from keras/layers/regularization/gaussian_noise.py rename to keras/src/layers/regularization/gaussian_noise.py index e5eaaba71a09..89ab962f6df6 100644 --- a/keras/layers/regularization/gaussian_noise.py +++ b/keras/src/layers/regularization/gaussian_noise.py @@ -1,7 +1,7 @@ -from keras import backend -from keras import layers -from keras import ops -from keras.api_export import keras_export +from keras.src import backend +from keras.src import layers +from keras.src import ops +from keras.src.api_export import keras_export @keras_export("keras.layers.GaussianNoise") diff --git a/keras/layers/regularization/gaussian_noise_test.py b/keras/src/layers/regularization/gaussian_noise_test.py similarity index 91% rename from keras/layers/regularization/gaussian_noise_test.py rename to keras/src/layers/regularization/gaussian_noise_test.py index d23a78f2483e..4aa2784dc05c 100644 --- a/keras/layers/regularization/gaussian_noise_test.py +++ b/keras/src/layers/regularization/gaussian_noise_test.py @@ -1,9 +1,9 @@ import numpy as np import pytest -from keras import backend -from keras import layers -from keras import testing +from keras.src import backend +from keras.src import layers +from keras.src import testing class GaussianNoiseTest(testing.TestCase): diff --git a/keras/layers/regularization/spatial_dropout.py b/keras/src/layers/regularization/spatial_dropout.py similarity index 97% rename from keras/layers/regularization/spatial_dropout.py rename to keras/src/layers/regularization/spatial_dropout.py index c7ac9a3d0c14..5f440164f40d 100644 --- a/keras/layers/regularization/spatial_dropout.py +++ b/keras/src/layers/regularization/spatial_dropout.py @@ -1,8 +1,8 @@ -from keras import backend -from keras import ops -from keras.api_export import keras_export -from keras.layers.input_spec import InputSpec -from keras.layers.regularization.dropout import Dropout +from keras.src import backend +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.layers.input_spec import InputSpec +from keras.src.layers.regularization.dropout import Dropout class BaseSpatialDropout(Dropout): diff --git a/keras/layers/regularization/spatial_dropout_test.py b/keras/src/layers/regularization/spatial_dropout_test.py similarity index 97% rename from keras/layers/regularization/spatial_dropout_test.py rename to keras/src/layers/regularization/spatial_dropout_test.py index 09ef67fca5b4..cc0581072cfd 100644 --- a/keras/layers/regularization/spatial_dropout_test.py +++ b/keras/src/layers/regularization/spatial_dropout_test.py @@ -1,9 +1,9 @@ import numpy as np import pytest -from keras import backend -from keras import layers -from keras.testing import test_case +from keras.src import backend +from keras.src import layers +from keras.src.testing import test_case class SpatialDropoutTest(test_case.TestCase): diff --git a/keras/layers/reshaping/__init__.py b/keras/src/layers/reshaping/__init__.py similarity index 100% rename from keras/layers/reshaping/__init__.py rename to keras/src/layers/reshaping/__init__.py diff --git a/keras/layers/reshaping/cropping1d.py b/keras/src/layers/reshaping/cropping1d.py similarity index 93% rename from keras/layers/reshaping/cropping1d.py rename to keras/src/layers/reshaping/cropping1d.py index f5a99da9cf11..abce618dff65 100644 --- a/keras/layers/reshaping/cropping1d.py +++ b/keras/src/layers/reshaping/cropping1d.py @@ -1,7 +1,7 @@ -from keras.api_export import keras_export -from keras.layers.input_spec import InputSpec -from keras.layers.layer import Layer -from keras.utils import argument_validation +from keras.src.api_export import keras_export +from keras.src.layers.input_spec import InputSpec +from keras.src.layers.layer import Layer +from keras.src.utils import argument_validation @keras_export("keras.layers.Cropping1D") diff --git a/keras/layers/reshaping/cropping1d_test.py b/keras/src/layers/reshaping/cropping1d_test.py similarity index 97% rename from keras/layers/reshaping/cropping1d_test.py rename to keras/src/layers/reshaping/cropping1d_test.py index 085466b0412e..cceb5922d92e 100644 --- a/keras/layers/reshaping/cropping1d_test.py +++ b/keras/src/layers/reshaping/cropping1d_test.py @@ -1,9 +1,9 @@ import numpy as np import pytest -from keras import layers -from keras import ops -from keras import testing +from keras.src import layers +from keras.src import ops +from keras.src import testing class Cropping1DTest(testing.TestCase): diff --git a/keras/layers/reshaping/cropping2d.py b/keras/src/layers/reshaping/cropping2d.py similarity index 97% rename from keras/layers/reshaping/cropping2d.py rename to keras/src/layers/reshaping/cropping2d.py index 9194f565a233..aec6813a861f 100644 --- a/keras/layers/reshaping/cropping2d.py +++ b/keras/src/layers/reshaping/cropping2d.py @@ -1,8 +1,8 @@ -from keras import backend -from keras.api_export import keras_export -from keras.layers.input_spec import InputSpec -from keras.layers.layer import Layer -from keras.utils import argument_validation +from keras.src import backend +from keras.src.api_export import keras_export +from keras.src.layers.input_spec import InputSpec +from keras.src.layers.layer import Layer +from keras.src.utils import argument_validation @keras_export("keras.layers.Cropping2D") diff --git a/keras/layers/reshaping/cropping2d_test.py b/keras/src/layers/reshaping/cropping2d_test.py similarity index 97% rename from keras/layers/reshaping/cropping2d_test.py rename to keras/src/layers/reshaping/cropping2d_test.py index fbf88695fd8f..001f1a466f11 100644 --- a/keras/layers/reshaping/cropping2d_test.py +++ b/keras/src/layers/reshaping/cropping2d_test.py @@ -2,10 +2,10 @@ import pytest from absl.testing import parameterized -from keras import backend -from keras import layers -from keras import ops -from keras import testing +from keras.src import backend +from keras.src import layers +from keras.src import ops +from keras.src import testing class Cropping2DTest(testing.TestCase, parameterized.TestCase): diff --git a/keras/layers/reshaping/cropping3d.py b/keras/src/layers/reshaping/cropping3d.py similarity index 98% rename from keras/layers/reshaping/cropping3d.py rename to keras/src/layers/reshaping/cropping3d.py index 569432004087..724d0cf72635 100644 --- a/keras/layers/reshaping/cropping3d.py +++ b/keras/src/layers/reshaping/cropping3d.py @@ -1,8 +1,8 @@ -from keras import backend -from keras.api_export import keras_export -from keras.layers.input_spec import InputSpec -from keras.layers.layer import Layer -from keras.utils import argument_validation +from keras.src import backend +from keras.src.api_export import keras_export +from keras.src.layers.input_spec import InputSpec +from keras.src.layers.layer import Layer +from keras.src.utils import argument_validation @keras_export("keras.layers.Cropping3D") diff --git a/keras/layers/reshaping/cropping3d_test.py b/keras/src/layers/reshaping/cropping3d_test.py similarity index 98% rename from keras/layers/reshaping/cropping3d_test.py rename to keras/src/layers/reshaping/cropping3d_test.py index 93aeaabe8447..90569711b412 100644 --- a/keras/layers/reshaping/cropping3d_test.py +++ b/keras/src/layers/reshaping/cropping3d_test.py @@ -2,10 +2,10 @@ import pytest from absl.testing import parameterized -from keras import backend -from keras import layers -from keras import ops -from keras import testing +from keras.src import backend +from keras.src import layers +from keras.src import ops +from keras.src import testing class Cropping3DTest(testing.TestCase, parameterized.TestCase): diff --git a/keras/layers/reshaping/flatten.py b/keras/src/layers/reshaping/flatten.py similarity index 91% rename from keras/layers/reshaping/flatten.py rename to keras/src/layers/reshaping/flatten.py index 0923f33da4b8..84aad840246c 100644 --- a/keras/layers/reshaping/flatten.py +++ b/keras/src/layers/reshaping/flatten.py @@ -1,11 +1,11 @@ import math -from keras import backend -from keras import ops -from keras.api_export import keras_export -from keras.backend.common.keras_tensor import KerasTensor -from keras.layers.input_spec import InputSpec -from keras.layers.layer import Layer +from keras.src import backend +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.backend.common.keras_tensor import KerasTensor +from keras.src.layers.input_spec import InputSpec +from keras.src.layers.layer import Layer @keras_export("keras.layers.Flatten") diff --git a/keras/layers/reshaping/flatten_test.py b/keras/src/layers/reshaping/flatten_test.py similarity index 97% rename from keras/layers/reshaping/flatten_test.py rename to keras/src/layers/reshaping/flatten_test.py index 921db5906ac7..00208bedaebf 100644 --- a/keras/layers/reshaping/flatten_test.py +++ b/keras/src/layers/reshaping/flatten_test.py @@ -2,10 +2,10 @@ import pytest from absl.testing import parameterized -from keras import backend -from keras import layers -from keras import ops -from keras import testing +from keras.src import backend +from keras.src import layers +from keras.src import ops +from keras.src import testing class FlattenTest(testing.TestCase, parameterized.TestCase): diff --git a/keras/layers/reshaping/permute.py b/keras/src/layers/reshaping/permute.py similarity index 89% rename from keras/layers/reshaping/permute.py rename to keras/src/layers/reshaping/permute.py index 30d52e4a7403..fce4eb2d328e 100644 --- a/keras/layers/reshaping/permute.py +++ b/keras/src/layers/reshaping/permute.py @@ -1,8 +1,8 @@ -from keras import ops -from keras.api_export import keras_export -from keras.backend.common.keras_tensor import KerasTensor -from keras.layers.input_spec import InputSpec -from keras.layers.layer import Layer +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.backend.common.keras_tensor import KerasTensor +from keras.src.layers.input_spec import InputSpec +from keras.src.layers.layer import Layer @keras_export("keras.layers.Permute") diff --git a/keras/layers/reshaping/permute_test.py b/keras/src/layers/reshaping/permute_test.py similarity index 95% rename from keras/layers/reshaping/permute_test.py rename to keras/src/layers/reshaping/permute_test.py index d01c63a99a2a..f165fbbf8a86 100644 --- a/keras/layers/reshaping/permute_test.py +++ b/keras/src/layers/reshaping/permute_test.py @@ -2,10 +2,10 @@ import pytest from absl.testing import parameterized -from keras import backend -from keras import layers -from keras import ops -from keras import testing +from keras.src import backend +from keras.src import layers +from keras.src import ops +from keras.src import testing class PermuteTest(testing.TestCase, parameterized.TestCase): diff --git a/keras/layers/reshaping/repeat_vector.py b/keras/src/layers/reshaping/repeat_vector.py similarity index 87% rename from keras/layers/reshaping/repeat_vector.py rename to keras/src/layers/reshaping/repeat_vector.py index 0e9507e10d38..d8914d10fce7 100644 --- a/keras/layers/reshaping/repeat_vector.py +++ b/keras/src/layers/reshaping/repeat_vector.py @@ -1,7 +1,7 @@ -from keras import ops -from keras.api_export import keras_export -from keras.layers.input_spec import InputSpec -from keras.layers.layer import Layer +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.layers.input_spec import InputSpec +from keras.src.layers.layer import Layer @keras_export("keras.layers.RepeatVector") diff --git a/keras/layers/reshaping/repeat_vector_test.py b/keras/src/layers/reshaping/repeat_vector_test.py similarity index 94% rename from keras/layers/reshaping/repeat_vector_test.py rename to keras/src/layers/reshaping/repeat_vector_test.py index 3baf10517211..3d1d1a59624a 100644 --- a/keras/layers/reshaping/repeat_vector_test.py +++ b/keras/src/layers/reshaping/repeat_vector_test.py @@ -1,9 +1,9 @@ import numpy as np import pytest -from keras import layers -from keras import ops -from keras import testing +from keras.src import layers +from keras.src import ops +from keras.src import testing class FlattenTest(testing.TestCase): diff --git a/keras/layers/reshaping/reshape.py b/keras/src/layers/reshaping/reshape.py similarity index 90% rename from keras/layers/reshaping/reshape.py rename to keras/src/layers/reshaping/reshape.py index e052957534b8..c87e4bd7381b 100644 --- a/keras/layers/reshaping/reshape.py +++ b/keras/src/layers/reshaping/reshape.py @@ -1,8 +1,8 @@ -from keras import ops -from keras.api_export import keras_export -from keras.backend.common.keras_tensor import KerasTensor -from keras.layers.layer import Layer -from keras.ops import operation_utils +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.backend.common.keras_tensor import KerasTensor +from keras.src.layers.layer import Layer +from keras.src.ops import operation_utils @keras_export("keras.layers.Reshape") diff --git a/keras/layers/reshaping/reshape_test.py b/keras/src/layers/reshaping/reshape_test.py similarity index 96% rename from keras/layers/reshaping/reshape_test.py rename to keras/src/layers/reshaping/reshape_test.py index 9e508f84dc96..453b13d84fb2 100644 --- a/keras/layers/reshaping/reshape_test.py +++ b/keras/src/layers/reshaping/reshape_test.py @@ -1,10 +1,10 @@ import pytest from absl.testing import parameterized -from keras import backend -from keras import layers -from keras import testing -from keras.backend.common.keras_tensor import KerasTensor +from keras.src import backend +from keras.src import layers +from keras.src import testing +from keras.src.backend.common.keras_tensor import KerasTensor class ReshapeTest(testing.TestCase, parameterized.TestCase): diff --git a/keras/layers/reshaping/up_sampling1d.py b/keras/src/layers/reshaping/up_sampling1d.py similarity index 89% rename from keras/layers/reshaping/up_sampling1d.py rename to keras/src/layers/reshaping/up_sampling1d.py index 480ab7b5a336..bbb7657efe91 100644 --- a/keras/layers/reshaping/up_sampling1d.py +++ b/keras/src/layers/reshaping/up_sampling1d.py @@ -1,7 +1,7 @@ -from keras import ops -from keras.api_export import keras_export -from keras.layers.input_spec import InputSpec -from keras.layers.layer import Layer +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.layers.input_spec import InputSpec +from keras.src.layers.layer import Layer @keras_export("keras.layers.UpSampling1D") diff --git a/keras/layers/reshaping/up_sampling1d_test.py b/keras/src/layers/reshaping/up_sampling1d_test.py similarity index 94% rename from keras/layers/reshaping/up_sampling1d_test.py rename to keras/src/layers/reshaping/up_sampling1d_test.py index aa5f8c0dee43..978401fd7157 100644 --- a/keras/layers/reshaping/up_sampling1d_test.py +++ b/keras/src/layers/reshaping/up_sampling1d_test.py @@ -1,9 +1,9 @@ import numpy as np import pytest -from keras import layers -from keras import testing -from keras.backend.common.keras_tensor import KerasTensor +from keras.src import layers +from keras.src import testing +from keras.src.backend.common.keras_tensor import KerasTensor class UpSamplingTest(testing.TestCase): diff --git a/keras/layers/reshaping/up_sampling2d.py b/keras/src/layers/reshaping/up_sampling2d.py similarity index 95% rename from keras/layers/reshaping/up_sampling2d.py rename to keras/src/layers/reshaping/up_sampling2d.py index 7ecc5c6a49e4..d9f5fa21c49c 100644 --- a/keras/layers/reshaping/up_sampling2d.py +++ b/keras/src/layers/reshaping/up_sampling2d.py @@ -1,9 +1,9 @@ -from keras import backend -from keras import ops -from keras.api_export import keras_export -from keras.layers.input_spec import InputSpec -from keras.layers.layer import Layer -from keras.utils import argument_validation +from keras.src import backend +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.layers.input_spec import InputSpec +from keras.src.layers.layer import Layer +from keras.src.utils import argument_validation @keras_export("keras.layers.UpSampling2D") diff --git a/keras/layers/reshaping/up_sampling2d_test.py b/keras/src/layers/reshaping/up_sampling2d_test.py similarity index 98% rename from keras/layers/reshaping/up_sampling2d_test.py rename to keras/src/layers/reshaping/up_sampling2d_test.py index feaefe3af931..680f9eac68f5 100644 --- a/keras/layers/reshaping/up_sampling2d_test.py +++ b/keras/src/layers/reshaping/up_sampling2d_test.py @@ -3,9 +3,9 @@ import pytest from absl.testing import parameterized -from keras import backend -from keras import layers -from keras import testing +from keras.src import backend +from keras.src import layers +from keras.src import testing class UpSampling2dTest(testing.TestCase, parameterized.TestCase): diff --git a/keras/layers/reshaping/up_sampling3d.py b/keras/src/layers/reshaping/up_sampling3d.py similarity index 95% rename from keras/layers/reshaping/up_sampling3d.py rename to keras/src/layers/reshaping/up_sampling3d.py index f0f7aa6e5889..3b642e48ef6a 100644 --- a/keras/layers/reshaping/up_sampling3d.py +++ b/keras/src/layers/reshaping/up_sampling3d.py @@ -1,9 +1,9 @@ -from keras import backend -from keras import ops -from keras.api_export import keras_export -from keras.layers.input_spec import InputSpec -from keras.layers.layer import Layer -from keras.utils import argument_validation +from keras.src import backend +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.layers.input_spec import InputSpec +from keras.src.layers.layer import Layer +from keras.src.utils import argument_validation @keras_export("keras.layers.UpSampling3D") diff --git a/keras/layers/reshaping/up_sampling3d_test.py b/keras/src/layers/reshaping/up_sampling3d_test.py similarity index 98% rename from keras/layers/reshaping/up_sampling3d_test.py rename to keras/src/layers/reshaping/up_sampling3d_test.py index c14d2179452f..f2d6bc2d0eaf 100644 --- a/keras/layers/reshaping/up_sampling3d_test.py +++ b/keras/src/layers/reshaping/up_sampling3d_test.py @@ -2,9 +2,9 @@ import pytest from absl.testing import parameterized -from keras import backend -from keras import layers -from keras import testing +from keras.src import backend +from keras.src import layers +from keras.src import testing class UpSampling3dTest(testing.TestCase, parameterized.TestCase): diff --git a/keras/layers/reshaping/zero_padding1d.py b/keras/src/layers/reshaping/zero_padding1d.py similarity index 89% rename from keras/layers/reshaping/zero_padding1d.py rename to keras/src/layers/reshaping/zero_padding1d.py index 9bc444763d69..2777423b7921 100644 --- a/keras/layers/reshaping/zero_padding1d.py +++ b/keras/src/layers/reshaping/zero_padding1d.py @@ -1,8 +1,8 @@ -from keras import ops -from keras.api_export import keras_export -from keras.layers.input_spec import InputSpec -from keras.layers.layer import Layer -from keras.utils import argument_validation +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.layers.input_spec import InputSpec +from keras.src.layers.layer import Layer +from keras.src.utils import argument_validation @keras_export("keras.layers.ZeroPadding1D") diff --git a/keras/layers/reshaping/zero_padding1d_test.py b/keras/src/layers/reshaping/zero_padding1d_test.py similarity index 96% rename from keras/layers/reshaping/zero_padding1d_test.py rename to keras/src/layers/reshaping/zero_padding1d_test.py index bf2e3d4e5cbe..918cd133a777 100644 --- a/keras/layers/reshaping/zero_padding1d_test.py +++ b/keras/src/layers/reshaping/zero_padding1d_test.py @@ -1,8 +1,8 @@ import numpy as np from absl.testing import parameterized -from keras import layers -from keras import testing +from keras.src import layers +from keras.src import testing class ZeroPadding1DTest(testing.TestCase, parameterized.TestCase): diff --git a/keras/layers/reshaping/zero_padding2d.py b/keras/src/layers/reshaping/zero_padding2d.py similarity index 94% rename from keras/layers/reshaping/zero_padding2d.py rename to keras/src/layers/reshaping/zero_padding2d.py index 557b02f270e7..e5d88d16d76d 100644 --- a/keras/layers/reshaping/zero_padding2d.py +++ b/keras/src/layers/reshaping/zero_padding2d.py @@ -1,9 +1,9 @@ -from keras import backend -from keras import ops -from keras.api_export import keras_export -from keras.layers.input_spec import InputSpec -from keras.layers.layer import Layer -from keras.utils import argument_validation +from keras.src import backend +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.layers.input_spec import InputSpec +from keras.src.layers.layer import Layer +from keras.src.utils import argument_validation @keras_export("keras.layers.ZeroPadding2D") diff --git a/keras/layers/reshaping/zero_padding2d_test.py b/keras/src/layers/reshaping/zero_padding2d_test.py similarity index 97% rename from keras/layers/reshaping/zero_padding2d_test.py rename to keras/src/layers/reshaping/zero_padding2d_test.py index 391dd30d2325..404ee9b4b4e4 100644 --- a/keras/layers/reshaping/zero_padding2d_test.py +++ b/keras/src/layers/reshaping/zero_padding2d_test.py @@ -1,9 +1,9 @@ import numpy as np from absl.testing import parameterized -from keras import backend -from keras import layers -from keras import testing +from keras.src import backend +from keras.src import layers +from keras.src import testing class ZeroPadding2DTest(testing.TestCase, parameterized.TestCase): diff --git a/keras/layers/reshaping/zero_padding3d.py b/keras/src/layers/reshaping/zero_padding3d.py similarity index 95% rename from keras/layers/reshaping/zero_padding3d.py rename to keras/src/layers/reshaping/zero_padding3d.py index 5b0191d0a102..87e39bf00060 100644 --- a/keras/layers/reshaping/zero_padding3d.py +++ b/keras/src/layers/reshaping/zero_padding3d.py @@ -1,9 +1,9 @@ -from keras import backend -from keras import ops -from keras.api_export import keras_export -from keras.layers.input_spec import InputSpec -from keras.layers.layer import Layer -from keras.utils import argument_validation +from keras.src import backend +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.layers.input_spec import InputSpec +from keras.src.layers.layer import Layer +from keras.src.utils import argument_validation @keras_export("keras.layers.ZeroPadding3D") diff --git a/keras/layers/reshaping/zero_padding3d_test.py b/keras/src/layers/reshaping/zero_padding3d_test.py similarity index 97% rename from keras/layers/reshaping/zero_padding3d_test.py rename to keras/src/layers/reshaping/zero_padding3d_test.py index 7a1f919586b8..bf6cd80c1153 100644 --- a/keras/layers/reshaping/zero_padding3d_test.py +++ b/keras/src/layers/reshaping/zero_padding3d_test.py @@ -1,9 +1,9 @@ import numpy as np from absl.testing import parameterized -from keras import backend -from keras import layers -from keras import testing +from keras.src import backend +from keras.src import layers +from keras.src import testing class ZeroPadding3DTest(testing.TestCase, parameterized.TestCase): diff --git a/keras/layers/rnn/__init__.py b/keras/src/layers/rnn/__init__.py similarity index 100% rename from keras/layers/rnn/__init__.py rename to keras/src/layers/rnn/__init__.py diff --git a/keras/layers/rnn/bidirectional.py b/keras/src/layers/rnn/bidirectional.py similarity index 98% rename from keras/layers/rnn/bidirectional.py rename to keras/src/layers/rnn/bidirectional.py index 9a2569fa1591..9d9d29d24602 100644 --- a/keras/layers/rnn/bidirectional.py +++ b/keras/src/layers/rnn/bidirectional.py @@ -1,11 +1,11 @@ import copy -from keras import ops -from keras import utils -from keras.api_export import keras_export -from keras.layers.core.wrapper import Wrapper -from keras.layers.layer import Layer -from keras.saving import serialization_lib +from keras.src import ops +from keras.src import utils +from keras.src.api_export import keras_export +from keras.src.layers.core.wrapper import Wrapper +from keras.src.layers.layer import Layer +from keras.src.saving import serialization_lib @keras_export("keras.layers.Bidirectional") diff --git a/keras/layers/rnn/bidirectional_test.py b/keras/src/layers/rnn/bidirectional_test.py similarity index 98% rename from keras/layers/rnn/bidirectional_test.py rename to keras/src/layers/rnn/bidirectional_test.py index 6391abdace2d..476965f935f6 100644 --- a/keras/layers/rnn/bidirectional_test.py +++ b/keras/src/layers/rnn/bidirectional_test.py @@ -1,9 +1,9 @@ import numpy as np import pytest -from keras import initializers -from keras import layers -from keras import testing +from keras.src import initializers +from keras.src import layers +from keras.src import testing class SimpleRNNTest(testing.TestCase): diff --git a/keras/layers/rnn/conv_lstm.py b/keras/src/layers/rnn/conv_lstm.py similarity index 98% rename from keras/layers/rnn/conv_lstm.py rename to keras/src/layers/rnn/conv_lstm.py index e8e3ee3ffebe..d6a30b5b353e 100644 --- a/keras/layers/rnn/conv_lstm.py +++ b/keras/src/layers/rnn/conv_lstm.py @@ -1,16 +1,16 @@ -from keras import activations -from keras import backend -from keras import constraints -from keras import initializers -from keras import ops -from keras import regularizers -from keras import tree -from keras.layers.input_spec import InputSpec -from keras.layers.layer import Layer -from keras.layers.rnn.dropout_rnn_cell import DropoutRNNCell -from keras.layers.rnn.rnn import RNN -from keras.ops import operation_utils -from keras.utils import argument_validation +from keras.src import activations +from keras.src import backend +from keras.src import constraints +from keras.src import initializers +from keras.src import ops +from keras.src import regularizers +from keras.src import tree +from keras.src.layers.input_spec import InputSpec +from keras.src.layers.layer import Layer +from keras.src.layers.rnn.dropout_rnn_cell import DropoutRNNCell +from keras.src.layers.rnn.rnn import RNN +from keras.src.ops import operation_utils +from keras.src.utils import argument_validation class ConvLSTMCell(Layer, DropoutRNNCell): diff --git a/keras/layers/rnn/conv_lstm1d.py b/keras/src/layers/rnn/conv_lstm1d.py similarity index 98% rename from keras/layers/rnn/conv_lstm1d.py rename to keras/src/layers/rnn/conv_lstm1d.py index a96cdbe778e6..d0ad56b5ce26 100644 --- a/keras/layers/rnn/conv_lstm1d.py +++ b/keras/src/layers/rnn/conv_lstm1d.py @@ -1,5 +1,5 @@ -from keras.api_export import keras_export -from keras.layers.rnn.conv_lstm import ConvLSTM +from keras.src.api_export import keras_export +from keras.src.layers.rnn.conv_lstm import ConvLSTM @keras_export("keras.layers.ConvLSTM1D") diff --git a/keras/layers/rnn/conv_lstm1d_test.py b/keras/src/layers/rnn/conv_lstm1d_test.py similarity index 95% rename from keras/layers/rnn/conv_lstm1d_test.py rename to keras/src/layers/rnn/conv_lstm1d_test.py index 89bec5a6b2db..b69cbf8b55aa 100644 --- a/keras/layers/rnn/conv_lstm1d_test.py +++ b/keras/src/layers/rnn/conv_lstm1d_test.py @@ -1,10 +1,10 @@ import numpy as np import pytest -from keras import backend -from keras import initializers -from keras import layers -from keras import testing +from keras.src import backend +from keras.src import initializers +from keras.src import layers +from keras.src import testing class ConvLSTM1DTest(testing.TestCase): diff --git a/keras/layers/rnn/conv_lstm2d.py b/keras/src/layers/rnn/conv_lstm2d.py similarity index 98% rename from keras/layers/rnn/conv_lstm2d.py rename to keras/src/layers/rnn/conv_lstm2d.py index 1819e5a9ba32..6837eea99298 100644 --- a/keras/layers/rnn/conv_lstm2d.py +++ b/keras/src/layers/rnn/conv_lstm2d.py @@ -1,5 +1,5 @@ -from keras.api_export import keras_export -from keras.layers.rnn.conv_lstm import ConvLSTM +from keras.src.api_export import keras_export +from keras.src.layers.rnn.conv_lstm import ConvLSTM @keras_export("keras.layers.ConvLSTM2D") diff --git a/keras/layers/rnn/conv_lstm2d_test.py b/keras/src/layers/rnn/conv_lstm2d_test.py similarity index 96% rename from keras/layers/rnn/conv_lstm2d_test.py rename to keras/src/layers/rnn/conv_lstm2d_test.py index 5c2bb6c0855c..b3846b64058c 100644 --- a/keras/layers/rnn/conv_lstm2d_test.py +++ b/keras/src/layers/rnn/conv_lstm2d_test.py @@ -1,10 +1,10 @@ import numpy as np import pytest -from keras import backend -from keras import initializers -from keras import layers -from keras import testing +from keras.src import backend +from keras.src import initializers +from keras.src import layers +from keras.src import testing class ConvLSTM2DTest(testing.TestCase): diff --git a/keras/layers/rnn/conv_lstm3d.py b/keras/src/layers/rnn/conv_lstm3d.py similarity index 98% rename from keras/layers/rnn/conv_lstm3d.py rename to keras/src/layers/rnn/conv_lstm3d.py index e22bb2cc6cab..534750abebef 100644 --- a/keras/layers/rnn/conv_lstm3d.py +++ b/keras/src/layers/rnn/conv_lstm3d.py @@ -1,5 +1,5 @@ -from keras.api_export import keras_export -from keras.layers.rnn.conv_lstm import ConvLSTM +from keras.src.api_export import keras_export +from keras.src.layers.rnn.conv_lstm import ConvLSTM @keras_export("keras.layers.ConvLSTM3D") diff --git a/keras/layers/rnn/conv_lstm3d_test.py b/keras/src/layers/rnn/conv_lstm3d_test.py similarity index 96% rename from keras/layers/rnn/conv_lstm3d_test.py rename to keras/src/layers/rnn/conv_lstm3d_test.py index e0008bbc3b45..b6c23326539f 100644 --- a/keras/layers/rnn/conv_lstm3d_test.py +++ b/keras/src/layers/rnn/conv_lstm3d_test.py @@ -1,10 +1,10 @@ import numpy as np import pytest -from keras import backend -from keras import initializers -from keras import layers -from keras import testing +from keras.src import backend +from keras.src import initializers +from keras.src import layers +from keras.src import testing class ConvLSTM1DTest(testing.TestCase): diff --git a/keras/layers/rnn/conv_lstm_test.py b/keras/src/layers/rnn/conv_lstm_test.py similarity index 91% rename from keras/layers/rnn/conv_lstm_test.py rename to keras/src/layers/rnn/conv_lstm_test.py index 76123a8cd0f1..e66fed91b62c 100644 --- a/keras/layers/rnn/conv_lstm_test.py +++ b/keras/src/layers/rnn/conv_lstm_test.py @@ -1,10 +1,10 @@ import numpy as np -from keras import backend -from keras import initializers -from keras import testing -from keras.layers.rnn.conv_lstm import ConvLSTM -from keras.layers.rnn.conv_lstm import ConvLSTMCell +from keras.src import backend +from keras.src import initializers +from keras.src import testing +from keras.src.layers.rnn.conv_lstm import ConvLSTM +from keras.src.layers.rnn.conv_lstm import ConvLSTMCell class ConvLSTMCellTest(testing.TestCase): diff --git a/keras/layers/rnn/dropout_rnn_cell.py b/keras/src/layers/rnn/dropout_rnn_cell.py similarity index 97% rename from keras/layers/rnn/dropout_rnn_cell.py rename to keras/src/layers/rnn/dropout_rnn_cell.py index a4d4d69fa552..33a522224c7e 100644 --- a/keras/layers/rnn/dropout_rnn_cell.py +++ b/keras/src/layers/rnn/dropout_rnn_cell.py @@ -1,5 +1,5 @@ -from keras import backend -from keras import ops +from keras.src import backend +from keras.src import ops class DropoutRNNCell: diff --git a/keras/layers/rnn/dropout_rnn_cell_test.py b/keras/src/layers/rnn/dropout_rnn_cell_test.py similarity index 94% rename from keras/layers/rnn/dropout_rnn_cell_test.py rename to keras/src/layers/rnn/dropout_rnn_cell_test.py index 2f4e5a658c02..01f3d2e00acf 100644 --- a/keras/layers/rnn/dropout_rnn_cell_test.py +++ b/keras/src/layers/rnn/dropout_rnn_cell_test.py @@ -1,10 +1,10 @@ import pytest -from keras import backend -from keras import layers -from keras import ops -from keras import testing -from keras.layers.rnn.dropout_rnn_cell import DropoutRNNCell +from keras.src import backend +from keras.src import layers +from keras.src import ops +from keras.src import testing +from keras.src.layers.rnn.dropout_rnn_cell import DropoutRNNCell class RNNCellWithDropout(layers.Layer, DropoutRNNCell): diff --git a/keras/layers/rnn/gru.py b/keras/src/layers/rnn/gru.py similarity index 98% rename from keras/layers/rnn/gru.py rename to keras/src/layers/rnn/gru.py index d1b03e256cb0..f489bd6638fc 100644 --- a/keras/layers/rnn/gru.py +++ b/keras/src/layers/rnn/gru.py @@ -1,15 +1,15 @@ -from keras import activations -from keras import backend -from keras import constraints -from keras import initializers -from keras import ops -from keras import regularizers -from keras import tree -from keras.api_export import keras_export -from keras.layers.input_spec import InputSpec -from keras.layers.layer import Layer -from keras.layers.rnn.dropout_rnn_cell import DropoutRNNCell -from keras.layers.rnn.rnn import RNN +from keras.src import activations +from keras.src import backend +from keras.src import constraints +from keras.src import initializers +from keras.src import ops +from keras.src import regularizers +from keras.src import tree +from keras.src.api_export import keras_export +from keras.src.layers.input_spec import InputSpec +from keras.src.layers.layer import Layer +from keras.src.layers.rnn.dropout_rnn_cell import DropoutRNNCell +from keras.src.layers.rnn.rnn import RNN @keras_export("keras.layers.GRUCell") diff --git a/keras/layers/rnn/gru_test.py b/keras/src/layers/rnn/gru_test.py similarity index 99% rename from keras/layers/rnn/gru_test.py rename to keras/src/layers/rnn/gru_test.py index 14f5248d78b0..529220803ddf 100644 --- a/keras/layers/rnn/gru_test.py +++ b/keras/src/layers/rnn/gru_test.py @@ -2,9 +2,9 @@ import pytest from absl.testing import parameterized -from keras import initializers -from keras import layers -from keras import testing +from keras.src import initializers +from keras.src import layers +from keras.src import testing class GRUTest(testing.TestCase, parameterized.TestCase): diff --git a/keras/layers/rnn/lstm.py b/keras/src/layers/rnn/lstm.py similarity index 98% rename from keras/layers/rnn/lstm.py rename to keras/src/layers/rnn/lstm.py index 13c32278418f..33055fd197ec 100644 --- a/keras/layers/rnn/lstm.py +++ b/keras/src/layers/rnn/lstm.py @@ -1,15 +1,15 @@ -from keras import activations -from keras import backend -from keras import constraints -from keras import initializers -from keras import ops -from keras import regularizers -from keras import tree -from keras.api_export import keras_export -from keras.layers.input_spec import InputSpec -from keras.layers.layer import Layer -from keras.layers.rnn.dropout_rnn_cell import DropoutRNNCell -from keras.layers.rnn.rnn import RNN +from keras.src import activations +from keras.src import backend +from keras.src import constraints +from keras.src import initializers +from keras.src import ops +from keras.src import regularizers +from keras.src import tree +from keras.src.api_export import keras_export +from keras.src.layers.input_spec import InputSpec +from keras.src.layers.layer import Layer +from keras.src.layers.rnn.dropout_rnn_cell import DropoutRNNCell +from keras.src.layers.rnn.rnn import RNN @keras_export("keras.layers.LSTMCell") diff --git a/keras/layers/rnn/lstm_test.py b/keras/src/layers/rnn/lstm_test.py similarity index 99% rename from keras/layers/rnn/lstm_test.py rename to keras/src/layers/rnn/lstm_test.py index 8811cc760160..bdf262d66ac4 100644 --- a/keras/layers/rnn/lstm_test.py +++ b/keras/src/layers/rnn/lstm_test.py @@ -2,9 +2,9 @@ import pytest from absl.testing import parameterized -from keras import initializers -from keras import layers -from keras import testing +from keras.src import initializers +from keras.src import layers +from keras.src import testing class LSTMTest(testing.TestCase, parameterized.TestCase): diff --git a/keras/layers/rnn/rnn.py b/keras/src/layers/rnn/rnn.py similarity index 97% rename from keras/layers/rnn/rnn.py rename to keras/src/layers/rnn/rnn.py index 6880ab26488a..a8a55718f0d7 100644 --- a/keras/layers/rnn/rnn.py +++ b/keras/src/layers/rnn/rnn.py @@ -1,12 +1,12 @@ -from keras import backend -from keras import ops -from keras import tree -from keras.api_export import keras_export -from keras.layers.layer import Layer -from keras.layers.rnn.dropout_rnn_cell import DropoutRNNCell -from keras.layers.rnn.stacked_rnn_cells import StackedRNNCells -from keras.saving import serialization_lib -from keras.utils import tracking +from keras.src import backend +from keras.src import ops +from keras.src import tree +from keras.src.api_export import keras_export +from keras.src.layers.layer import Layer +from keras.src.layers.rnn.dropout_rnn_cell import DropoutRNNCell +from keras.src.layers.rnn.stacked_rnn_cells import StackedRNNCells +from keras.src.saving import serialization_lib +from keras.src.utils import tracking @keras_export("keras.layers.RNN") @@ -133,8 +133,8 @@ class RNN(Layer): Examples: ```python - from keras.layers import RNN - from keras import ops + from keras.src.layers import RNN + from keras.src import ops # First, let's define a RNN Cell, as a layer subclass. class MinimalRNNCell(keras.layers.Layer): diff --git a/keras/layers/rnn/rnn_test.py b/keras/src/layers/rnn/rnn_test.py similarity index 99% rename from keras/layers/rnn/rnn_test.py rename to keras/src/layers/rnn/rnn_test.py index dcfa075d75ff..f5e5a34efabe 100644 --- a/keras/layers/rnn/rnn_test.py +++ b/keras/src/layers/rnn/rnn_test.py @@ -1,9 +1,9 @@ import numpy as np import pytest -from keras import layers -from keras import ops -from keras import testing +from keras.src import layers +from keras.src import ops +from keras.src import testing class OneStateRNNCell(layers.Layer): diff --git a/keras/layers/rnn/simple_rnn.py b/keras/src/layers/rnn/simple_rnn.py similarity index 97% rename from keras/layers/rnn/simple_rnn.py rename to keras/src/layers/rnn/simple_rnn.py index a3e263069fda..79105f1539ea 100644 --- a/keras/layers/rnn/simple_rnn.py +++ b/keras/src/layers/rnn/simple_rnn.py @@ -1,14 +1,14 @@ -from keras import activations -from keras import backend -from keras import constraints -from keras import initializers -from keras import ops -from keras import regularizers -from keras.api_export import keras_export -from keras.layers.input_spec import InputSpec -from keras.layers.layer import Layer -from keras.layers.rnn.dropout_rnn_cell import DropoutRNNCell -from keras.layers.rnn.rnn import RNN +from keras.src import activations +from keras.src import backend +from keras.src import constraints +from keras.src import initializers +from keras.src import ops +from keras.src import regularizers +from keras.src.api_export import keras_export +from keras.src.layers.input_spec import InputSpec +from keras.src.layers.layer import Layer +from keras.src.layers.rnn.dropout_rnn_cell import DropoutRNNCell +from keras.src.layers.rnn.rnn import RNN @keras_export("keras.layers.SimpleRNNCell") diff --git a/keras/layers/rnn/simple_rnn_test.py b/keras/src/layers/rnn/simple_rnn_test.py similarity index 98% rename from keras/layers/rnn/simple_rnn_test.py rename to keras/src/layers/rnn/simple_rnn_test.py index 19bf67d3275e..8493bdbee8a8 100644 --- a/keras/layers/rnn/simple_rnn_test.py +++ b/keras/src/layers/rnn/simple_rnn_test.py @@ -1,9 +1,9 @@ import numpy as np import pytest -from keras import initializers -from keras import layers -from keras import testing +from keras.src import initializers +from keras.src import layers +from keras.src import testing class SimpleRNNTest(testing.TestCase): diff --git a/keras/layers/rnn/stacked_rnn_cells.py b/keras/src/layers/rnn/stacked_rnn_cells.py similarity index 96% rename from keras/layers/rnn/stacked_rnn_cells.py rename to keras/src/layers/rnn/stacked_rnn_cells.py index 20502d4655c7..a3e1b601d4c7 100644 --- a/keras/layers/rnn/stacked_rnn_cells.py +++ b/keras/src/layers/rnn/stacked_rnn_cells.py @@ -1,8 +1,8 @@ -from keras import ops -from keras import tree -from keras.api_export import keras_export -from keras.layers.layer import Layer -from keras.saving import serialization_lib +from keras.src import ops +from keras.src import tree +from keras.src.api_export import keras_export +from keras.src.layers.layer import Layer +from keras.src.saving import serialization_lib @keras_export("keras.layers.StackedRNNCells") diff --git a/keras/layers/rnn/stacked_rnn_cells_test.py b/keras/src/layers/rnn/stacked_rnn_cells_test.py similarity index 98% rename from keras/layers/rnn/stacked_rnn_cells_test.py rename to keras/src/layers/rnn/stacked_rnn_cells_test.py index c3eff69b82ac..15d2d1d6054c 100644 --- a/keras/layers/rnn/stacked_rnn_cells_test.py +++ b/keras/src/layers/rnn/stacked_rnn_cells_test.py @@ -1,10 +1,10 @@ import numpy as np import pytest -from keras import layers -from keras import testing -from keras.layers.rnn.rnn_test import OneStateRNNCell -from keras.layers.rnn.rnn_test import TwoStatesRNNCell +from keras.src import layers +from keras.src import testing +from keras.src.layers.rnn.rnn_test import OneStateRNNCell +from keras.src.layers.rnn.rnn_test import TwoStatesRNNCell class StackedRNNTest(testing.TestCase): diff --git a/keras/layers/rnn/time_distributed.py b/keras/src/layers/rnn/time_distributed.py similarity index 95% rename from keras/layers/rnn/time_distributed.py rename to keras/src/layers/rnn/time_distributed.py index d1cc613ebd73..cac954a4f11b 100644 --- a/keras/layers/rnn/time_distributed.py +++ b/keras/src/layers/rnn/time_distributed.py @@ -1,10 +1,10 @@ """Wrapper layer to apply every temporal slice of an input.""" -from keras import backend -from keras import ops -from keras.api_export import keras_export -from keras.layers.core.wrapper import Wrapper -from keras.layers.layer import Layer +from keras.src import backend +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.layers.core.wrapper import Wrapper +from keras.src.layers.layer import Layer @keras_export("keras.layers.TimeDistributed") diff --git a/keras/layers/rnn/time_distributed_test.py b/keras/src/layers/rnn/time_distributed_test.py similarity index 94% rename from keras/layers/rnn/time_distributed_test.py rename to keras/src/layers/rnn/time_distributed_test.py index cf0793bb7f84..f2ad37e9d110 100644 --- a/keras/layers/rnn/time_distributed_test.py +++ b/keras/src/layers/rnn/time_distributed_test.py @@ -1,11 +1,11 @@ import numpy as np import pytest -from keras import backend -from keras import initializers -from keras import layers -from keras import ops -from keras import testing +from keras.src import backend +from keras.src import initializers +from keras.src import layers +from keras.src import ops +from keras.src import testing class TimeDistributedTest(testing.TestCase): diff --git a/keras/legacy/__init__.py b/keras/src/legacy/__init__.py similarity index 100% rename from keras/legacy/__init__.py rename to keras/src/legacy/__init__.py diff --git a/keras/legacy/backend.py b/keras/src/legacy/backend.py similarity index 99% rename from keras/legacy/backend.py rename to keras/src/legacy/backend.py index a6256be0b852..dbb933112ad4 100644 --- a/keras/legacy/backend.py +++ b/keras/src/legacy/backend.py @@ -4,9 +4,9 @@ import numpy as np -from keras import backend -from keras.api_export import keras_export -from keras.utils.module_utils import tensorflow as tf +from keras.src import backend +from keras.src.api_export import keras_export +from keras.src.utils.module_utils import tensorflow as tf py_any = any py_all = all diff --git a/keras/legacy/layers.py b/keras/src/legacy/layers.py similarity index 97% rename from keras/legacy/layers.py rename to keras/src/legacy/layers.py index 2ceaa151f6fc..97a369cb6480 100644 --- a/keras/legacy/layers.py +++ b/keras/src/legacy/layers.py @@ -6,10 +6,10 @@ ThresholdedReLU """ -from keras import backend -from keras.api_export import keras_export -from keras.layers.layer import Layer -from keras.utils.module_utils import tensorflow as tf +from keras.src import backend +from keras.src.api_export import keras_export +from keras.src.layers.layer import Layer +from keras.src.utils.module_utils import tensorflow as tf @keras_export("keras._legacy.layers.AlphaDropout") diff --git a/keras/legacy/losses.py b/keras/src/legacy/losses.py similarity index 91% rename from keras/legacy/losses.py rename to keras/src/legacy/losses.py index f0cd872bca55..a84284bfc38d 100644 --- a/keras/legacy/losses.py +++ b/keras/src/legacy/losses.py @@ -1,4 +1,4 @@ -from keras.api_export import keras_export +from keras.src.api_export import keras_export @keras_export("keras._legacy.losses.Reduction") diff --git a/keras/legacy/preprocessing/__init__.py b/keras/src/legacy/preprocessing/__init__.py similarity index 100% rename from keras/legacy/preprocessing/__init__.py rename to keras/src/legacy/preprocessing/__init__.py diff --git a/keras/legacy/preprocessing/image.py b/keras/src/legacy/preprocessing/image.py similarity index 99% rename from keras/legacy/preprocessing/image.py rename to keras/src/legacy/preprocessing/image.py index 4e9f74eef3d5..4a0e8b44d395 100644 --- a/keras/legacy/preprocessing/image.py +++ b/keras/src/legacy/preprocessing/image.py @@ -8,12 +8,12 @@ import numpy as np -from keras import backend -from keras.api_export import keras_export -from keras.trainers.data_adapters.py_dataset_adapter import PyDataset -from keras.utils import image_utils -from keras.utils import io_utils -from keras.utils.module_utils import scipy +from keras.src import backend +from keras.src.api_export import keras_export +from keras.src.trainers.data_adapters.py_dataset_adapter import PyDataset +from keras.src.utils import image_utils +from keras.src.utils import io_utils +from keras.src.utils.module_utils import scipy @keras_export("keras._legacy.preprocessing.image.Iterator") diff --git a/keras/legacy/preprocessing/sequence.py b/keras/src/legacy/preprocessing/sequence.py similarity index 98% rename from keras/legacy/preprocessing/sequence.py rename to keras/src/legacy/preprocessing/sequence.py index f9f52fa802f2..1d0f360c50c7 100644 --- a/keras/legacy/preprocessing/sequence.py +++ b/keras/src/legacy/preprocessing/sequence.py @@ -5,8 +5,8 @@ import numpy as np -from keras.api_export import keras_export -from keras.trainers.data_adapters.py_dataset_adapter import PyDataset +from keras.src.api_export import keras_export +from keras.src.trainers.data_adapters.py_dataset_adapter import PyDataset @keras_export("keras._legacy.preprocessing.sequence.TimeseriesGenerator") diff --git a/keras/legacy/preprocessing/text.py b/keras/src/legacy/preprocessing/text.py similarity index 99% rename from keras/legacy/preprocessing/text.py rename to keras/src/legacy/preprocessing/text.py index 8f8a31bfa4fc..83946bfc03e1 100644 --- a/keras/legacy/preprocessing/text.py +++ b/keras/src/legacy/preprocessing/text.py @@ -7,7 +7,7 @@ import numpy as np -from keras.api_export import keras_export +from keras.src.api_export import keras_export @keras_export("keras._legacy.preprocessing.text.text_to_word_sequence") diff --git a/keras/legacy/saving/__init__.py b/keras/src/legacy/saving/__init__.py similarity index 100% rename from keras/legacy/saving/__init__.py rename to keras/src/legacy/saving/__init__.py diff --git a/keras/legacy/saving/json_utils.py b/keras/src/legacy/saving/json_utils.py similarity index 97% rename from keras/legacy/saving/json_utils.py rename to keras/src/legacy/saving/json_utils.py index 0a7f6254fdc5..0dbc578d25ab 100644 --- a/keras/legacy/saving/json_utils.py +++ b/keras/src/legacy/saving/json_utils.py @@ -7,9 +7,9 @@ import numpy as np -from keras.legacy.saving import serialization -from keras.saving import serialization_lib -from keras.utils.module_utils import tensorflow as tf +from keras.src.legacy.saving import serialization +from keras.src.saving import serialization_lib +from keras.src.utils.module_utils import tensorflow as tf _EXTENSION_TYPE_SPEC = "_EXTENSION_TYPE_SPEC" diff --git a/keras/legacy/saving/json_utils_test.py b/keras/src/legacy/saving/json_utils_test.py similarity index 96% rename from keras/legacy/saving/json_utils_test.py rename to keras/src/legacy/saving/json_utils_test.py index 8d82f52a40f7..3eca485bedc0 100644 --- a/keras/legacy/saving/json_utils_test.py +++ b/keras/src/legacy/saving/json_utils_test.py @@ -2,9 +2,9 @@ import pytest -from keras import backend -from keras import testing -from keras.legacy.saving import json_utils +from keras.src import backend +from keras.src import testing +from keras.src.legacy.saving import json_utils if backend.backend() == "tensorflow": import tensorflow as tf diff --git a/keras/legacy/saving/legacy_h5_format.py b/keras/src/legacy/saving/legacy_h5_format.py similarity index 98% rename from keras/legacy/saving/legacy_h5_format.py rename to keras/src/legacy/saving/legacy_h5_format.py index 1c4e897a42ea..05f7ceca22be 100644 --- a/keras/legacy/saving/legacy_h5_format.py +++ b/keras/src/legacy/saving/legacy_h5_format.py @@ -5,14 +5,14 @@ import numpy as np from absl import logging -from keras import backend -from keras import optimizers -from keras.backend.common import global_state -from keras.legacy.saving import json_utils -from keras.legacy.saving import saving_options -from keras.legacy.saving import saving_utils -from keras.saving import object_registration -from keras.utils import io_utils +from keras.src import backend +from keras.src import optimizers +from keras.src.backend.common import global_state +from keras.src.legacy.saving import json_utils +from keras.src.legacy.saving import saving_options +from keras.src.legacy.saving import saving_utils +from keras.src.saving import object_registration +from keras.src.utils import io_utils try: import h5py @@ -200,7 +200,7 @@ def save_weights_to_hdf5_group(f, model): f: HDF5 group. model: Model instance. """ - from keras import __version__ as keras_version + from keras.src import __version__ as keras_version save_attributes_to_hdf5_group( f, "layer_names", [layer.name.encode("utf8") for layer in model.layers] diff --git a/keras/legacy/saving/legacy_h5_format_test.py b/keras/src/legacy/saving/legacy_h5_format_test.py similarity index 98% rename from keras/legacy/saving/legacy_h5_format_test.py rename to keras/src/legacy/saving/legacy_h5_format_test.py index c4e48e5eb07d..225b06f9ba44 100644 --- a/keras/legacy/saving/legacy_h5_format_test.py +++ b/keras/src/legacy/saving/legacy_h5_format_test.py @@ -4,13 +4,13 @@ import pytest import keras -from keras import layers -from keras import models -from keras import ops -from keras import testing -from keras.legacy.saving import legacy_h5_format -from keras.saving import object_registration -from keras.saving import serialization_lib +from keras.src import layers +from keras.src import models +from keras.src import ops +from keras.src import testing +from keras.src.legacy.saving import legacy_h5_format +from keras.src.saving import object_registration +from keras.src.saving import serialization_lib # TODO: more thorough testing. Correctness depends # on exact weight ordering for each layer, so we need @@ -233,7 +233,7 @@ class RegisteredSubLayer(layers.Layer): ) model = models.Sequential([layer]) with self.subTest("test_JSON"): - from keras.models.model import model_from_json + from keras.src.models.model import model_from_json model_json = model.to_json() self.assertIn("Foo>RegisteredSubLayer", model_json) diff --git a/keras/legacy/saving/saving_options.py b/keras/src/legacy/saving/saving_options.py similarity index 89% rename from keras/legacy/saving/saving_options.py rename to keras/src/legacy/saving/saving_options.py index 30ba5fb464e1..6f270fb23290 100644 --- a/keras/legacy/saving/saving_options.py +++ b/keras/src/legacy/saving/saving_options.py @@ -1,6 +1,6 @@ import contextlib -from keras.backend.common import global_state +from keras.src.backend.common import global_state @contextlib.contextmanager diff --git a/keras/legacy/saving/saving_utils.py b/keras/src/legacy/saving/saving_utils.py similarity index 95% rename from keras/legacy/saving/saving_utils.py rename to keras/src/legacy/saving/saving_utils.py index 69e3553bdf15..aec107802138 100644 --- a/keras/legacy/saving/saving_utils.py +++ b/keras/src/legacy/saving/saving_utils.py @@ -3,15 +3,15 @@ from absl import logging -from keras import backend -from keras import layers -from keras import losses -from keras import metrics as metrics_module -from keras import models -from keras import optimizers -from keras import tree -from keras.legacy.saving import serialization -from keras.saving import object_registration +from keras.src import backend +from keras.src import layers +from keras.src import losses +from keras.src import metrics as metrics_module +from keras.src import models +from keras.src import optimizers +from keras.src import tree +from keras.src.legacy.saving import serialization +from keras.src.saving import object_registration MODULE_OBJECTS = threading.local() @@ -92,7 +92,7 @@ def model_from_config(config, custom_objects=None): def model_metadata(model, include_optimizer=True, require_config=True): """Returns a dictionary containing the model metadata.""" - from keras import __version__ as keras_version + from keras.src import __version__ as keras_version model_config = {"class_name": model.__class__.__name__} try: diff --git a/keras/legacy/saving/serialization.py b/keras/src/legacy/saving/serialization.py similarity index 99% rename from keras/legacy/saving/serialization.py rename to keras/src/legacy/saving/serialization.py index 98640c68ff59..7fa7eb44c507 100644 --- a/keras/legacy/saving/serialization.py +++ b/keras/src/legacy/saving/serialization.py @@ -7,8 +7,8 @@ import weakref # isort: off -from keras.api_export import keras_export -from keras.saving import object_registration +from keras.src.api_export import keras_export +from keras.src.saving import object_registration # Flag that determines whether to skip the NotImplementedError when calling # get_config in custom models and layers. This is only enabled when saving to diff --git a/keras/losses/__init__.py b/keras/src/losses/__init__.py similarity index 64% rename from keras/losses/__init__.py rename to keras/src/losses/__init__.py index e2cc81d49cef..9652ceb057bf 100644 --- a/keras/losses/__init__.py +++ b/keras/src/losses/__init__.py @@ -1,48 +1,48 @@ import inspect -from keras.api_export import keras_export -from keras.losses.loss import Loss -from keras.losses.losses import BinaryCrossentropy -from keras.losses.losses import BinaryFocalCrossentropy -from keras.losses.losses import CategoricalCrossentropy -from keras.losses.losses import CategoricalFocalCrossentropy -from keras.losses.losses import CategoricalHinge -from keras.losses.losses import CosineSimilarity -from keras.losses.losses import Dice -from keras.losses.losses import Hinge -from keras.losses.losses import Huber -from keras.losses.losses import KLDivergence -from keras.losses.losses import LogCosh -from keras.losses.losses import LossFunctionWrapper -from keras.losses.losses import MeanAbsoluteError -from keras.losses.losses import MeanAbsolutePercentageError -from keras.losses.losses import MeanSquaredError -from keras.losses.losses import MeanSquaredLogarithmicError -from keras.losses.losses import Poisson -from keras.losses.losses import SparseCategoricalCrossentropy -from keras.losses.losses import SquaredHinge -from keras.losses.losses import Tversky -from keras.losses.losses import binary_crossentropy -from keras.losses.losses import binary_focal_crossentropy -from keras.losses.losses import categorical_crossentropy -from keras.losses.losses import categorical_focal_crossentropy -from keras.losses.losses import categorical_hinge -from keras.losses.losses import cosine_similarity -from keras.losses.losses import ctc -from keras.losses.losses import dice -from keras.losses.losses import hinge -from keras.losses.losses import huber -from keras.losses.losses import kl_divergence -from keras.losses.losses import log_cosh -from keras.losses.losses import mean_absolute_error -from keras.losses.losses import mean_absolute_percentage_error -from keras.losses.losses import mean_squared_error -from keras.losses.losses import mean_squared_logarithmic_error -from keras.losses.losses import poisson -from keras.losses.losses import sparse_categorical_crossentropy -from keras.losses.losses import squared_hinge -from keras.losses.losses import tversky -from keras.saving import serialization_lib +from keras.src.api_export import keras_export +from keras.src.losses.loss import Loss +from keras.src.losses.losses import BinaryCrossentropy +from keras.src.losses.losses import BinaryFocalCrossentropy +from keras.src.losses.losses import CategoricalCrossentropy +from keras.src.losses.losses import CategoricalFocalCrossentropy +from keras.src.losses.losses import CategoricalHinge +from keras.src.losses.losses import CosineSimilarity +from keras.src.losses.losses import Dice +from keras.src.losses.losses import Hinge +from keras.src.losses.losses import Huber +from keras.src.losses.losses import KLDivergence +from keras.src.losses.losses import LogCosh +from keras.src.losses.losses import LossFunctionWrapper +from keras.src.losses.losses import MeanAbsoluteError +from keras.src.losses.losses import MeanAbsolutePercentageError +from keras.src.losses.losses import MeanSquaredError +from keras.src.losses.losses import MeanSquaredLogarithmicError +from keras.src.losses.losses import Poisson +from keras.src.losses.losses import SparseCategoricalCrossentropy +from keras.src.losses.losses import SquaredHinge +from keras.src.losses.losses import Tversky +from keras.src.losses.losses import binary_crossentropy +from keras.src.losses.losses import binary_focal_crossentropy +from keras.src.losses.losses import categorical_crossentropy +from keras.src.losses.losses import categorical_focal_crossentropy +from keras.src.losses.losses import categorical_hinge +from keras.src.losses.losses import cosine_similarity +from keras.src.losses.losses import ctc +from keras.src.losses.losses import dice +from keras.src.losses.losses import hinge +from keras.src.losses.losses import huber +from keras.src.losses.losses import kl_divergence +from keras.src.losses.losses import log_cosh +from keras.src.losses.losses import mean_absolute_error +from keras.src.losses.losses import mean_absolute_percentage_error +from keras.src.losses.losses import mean_squared_error +from keras.src.losses.losses import mean_squared_logarithmic_error +from keras.src.losses.losses import poisson +from keras.src.losses.losses import sparse_categorical_crossentropy +from keras.src.losses.losses import squared_hinge +from keras.src.losses.losses import tversky +from keras.src.saving import serialization_lib ALL_OBJECTS = { # Base diff --git a/keras/losses/loss.py b/keras/src/losses/loss.py similarity index 97% rename from keras/losses/loss.py rename to keras/src/losses/loss.py index ad432e62dc37..ba4c78ebc5a5 100644 --- a/keras/losses/loss.py +++ b/keras/src/losses/loss.py @@ -1,8 +1,8 @@ -from keras import backend -from keras import ops -from keras import tree -from keras.api_export import keras_export -from keras.utils.naming import auto_name +from keras.src import backend +from keras.src import ops +from keras.src import tree +from keras.src.api_export import keras_export +from keras.src.utils.naming import auto_name @keras_export(["keras.Loss", "keras.losses.Loss"]) diff --git a/keras/losses/loss_test.py b/keras/src/losses/loss_test.py similarity index 97% rename from keras/losses/loss_test.py rename to keras/src/losses/loss_test.py index 929785fcc420..1d5725ffd3a1 100644 --- a/keras/losses/loss_test.py +++ b/keras/src/losses/loss_test.py @@ -1,12 +1,12 @@ import numpy as np import pytest -from keras import backend -from keras import losses as losses_module -from keras import ops -from keras import testing -from keras.losses.loss import Loss -from keras.losses.loss import squeeze_or_expand_to_same_rank +from keras.src import backend +from keras.src import losses as losses_module +from keras.src import ops +from keras.src import testing +from keras.src.losses.loss import Loss +from keras.src.losses.loss import squeeze_or_expand_to_same_rank class ExampleLoss(Loss): diff --git a/keras/losses/losses.py b/keras/src/losses/losses.py similarity index 99% rename from keras/losses/losses.py rename to keras/src/losses/losses.py index ef0a2229dafc..f3f997616a00 100644 --- a/keras/losses/losses.py +++ b/keras/src/losses/losses.py @@ -1,12 +1,12 @@ import warnings -from keras import backend -from keras import ops -from keras.api_export import keras_export -from keras.losses.loss import Loss -from keras.losses.loss import squeeze_or_expand_to_same_rank -from keras.saving import serialization_lib -from keras.utils.numerical_utils import normalize +from keras.src import backend +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.losses.loss import Loss +from keras.src.losses.loss import squeeze_or_expand_to_same_rank +from keras.src.saving import serialization_lib +from keras.src.utils.numerical_utils import normalize class LossFunctionWrapper(Loss): diff --git a/keras/losses/losses_test.py b/keras/src/losses/losses_test.py similarity index 99% rename from keras/losses/losses_test.py rename to keras/src/losses/losses_test.py index 59af6abf9c1e..b97a8a253c3e 100644 --- a/keras/losses/losses_test.py +++ b/keras/src/losses/losses_test.py @@ -1,9 +1,9 @@ import numpy as np import pytest -from keras import backend -from keras import testing -from keras.losses import losses +from keras.src import backend +from keras.src import testing +from keras.src.losses import losses class MeanSquaredErrorTest(testing.TestCase): diff --git a/keras/metrics/__init__.py b/keras/src/metrics/__init__.py similarity index 59% rename from keras/metrics/__init__.py rename to keras/src/metrics/__init__.py index 02e0f76dfcbe..fd5e89069770 100644 --- a/keras/metrics/__init__.py +++ b/keras/src/metrics/__init__.py @@ -1,52 +1,54 @@ import inspect -from keras.api_export import keras_export -from keras.metrics.accuracy_metrics import Accuracy -from keras.metrics.accuracy_metrics import BinaryAccuracy -from keras.metrics.accuracy_metrics import CategoricalAccuracy -from keras.metrics.accuracy_metrics import SparseCategoricalAccuracy -from keras.metrics.accuracy_metrics import SparseTopKCategoricalAccuracy -from keras.metrics.accuracy_metrics import TopKCategoricalAccuracy -from keras.metrics.confusion_metrics import AUC -from keras.metrics.confusion_metrics import FalseNegatives -from keras.metrics.confusion_metrics import FalsePositives -from keras.metrics.confusion_metrics import Precision -from keras.metrics.confusion_metrics import PrecisionAtRecall -from keras.metrics.confusion_metrics import Recall -from keras.metrics.confusion_metrics import RecallAtPrecision -from keras.metrics.confusion_metrics import SensitivityAtSpecificity -from keras.metrics.confusion_metrics import SpecificityAtSensitivity -from keras.metrics.confusion_metrics import TrueNegatives -from keras.metrics.confusion_metrics import TruePositives -from keras.metrics.f_score_metrics import F1Score -from keras.metrics.f_score_metrics import FBetaScore -from keras.metrics.hinge_metrics import CategoricalHinge -from keras.metrics.hinge_metrics import Hinge -from keras.metrics.hinge_metrics import SquaredHinge -from keras.metrics.iou_metrics import BinaryIoU -from keras.metrics.iou_metrics import IoU -from keras.metrics.iou_metrics import MeanIoU -from keras.metrics.iou_metrics import OneHotIoU -from keras.metrics.iou_metrics import OneHotMeanIoU -from keras.metrics.metric import Metric -from keras.metrics.probabilistic_metrics import BinaryCrossentropy -from keras.metrics.probabilistic_metrics import CategoricalCrossentropy -from keras.metrics.probabilistic_metrics import KLDivergence -from keras.metrics.probabilistic_metrics import Poisson -from keras.metrics.probabilistic_metrics import SparseCategoricalCrossentropy -from keras.metrics.reduction_metrics import Mean -from keras.metrics.reduction_metrics import MeanMetricWrapper -from keras.metrics.reduction_metrics import Sum -from keras.metrics.regression_metrics import CosineSimilarity -from keras.metrics.regression_metrics import LogCoshError -from keras.metrics.regression_metrics import MeanAbsoluteError -from keras.metrics.regression_metrics import MeanAbsolutePercentageError -from keras.metrics.regression_metrics import MeanSquaredError -from keras.metrics.regression_metrics import MeanSquaredLogarithmicError -from keras.metrics.regression_metrics import R2Score -from keras.metrics.regression_metrics import RootMeanSquaredError -from keras.saving import serialization_lib -from keras.utils.naming import to_snake_case +from keras.src.api_export import keras_export +from keras.src.metrics.accuracy_metrics import Accuracy +from keras.src.metrics.accuracy_metrics import BinaryAccuracy +from keras.src.metrics.accuracy_metrics import CategoricalAccuracy +from keras.src.metrics.accuracy_metrics import SparseCategoricalAccuracy +from keras.src.metrics.accuracy_metrics import SparseTopKCategoricalAccuracy +from keras.src.metrics.accuracy_metrics import TopKCategoricalAccuracy +from keras.src.metrics.confusion_metrics import AUC +from keras.src.metrics.confusion_metrics import FalseNegatives +from keras.src.metrics.confusion_metrics import FalsePositives +from keras.src.metrics.confusion_metrics import Precision +from keras.src.metrics.confusion_metrics import PrecisionAtRecall +from keras.src.metrics.confusion_metrics import Recall +from keras.src.metrics.confusion_metrics import RecallAtPrecision +from keras.src.metrics.confusion_metrics import SensitivityAtSpecificity +from keras.src.metrics.confusion_metrics import SpecificityAtSensitivity +from keras.src.metrics.confusion_metrics import TrueNegatives +from keras.src.metrics.confusion_metrics import TruePositives +from keras.src.metrics.f_score_metrics import F1Score +from keras.src.metrics.f_score_metrics import FBetaScore +from keras.src.metrics.hinge_metrics import CategoricalHinge +from keras.src.metrics.hinge_metrics import Hinge +from keras.src.metrics.hinge_metrics import SquaredHinge +from keras.src.metrics.iou_metrics import BinaryIoU +from keras.src.metrics.iou_metrics import IoU +from keras.src.metrics.iou_metrics import MeanIoU +from keras.src.metrics.iou_metrics import OneHotIoU +from keras.src.metrics.iou_metrics import OneHotMeanIoU +from keras.src.metrics.metric import Metric +from keras.src.metrics.probabilistic_metrics import BinaryCrossentropy +from keras.src.metrics.probabilistic_metrics import CategoricalCrossentropy +from keras.src.metrics.probabilistic_metrics import KLDivergence +from keras.src.metrics.probabilistic_metrics import Poisson +from keras.src.metrics.probabilistic_metrics import ( + SparseCategoricalCrossentropy, +) +from keras.src.metrics.reduction_metrics import Mean +from keras.src.metrics.reduction_metrics import MeanMetricWrapper +from keras.src.metrics.reduction_metrics import Sum +from keras.src.metrics.regression_metrics import CosineSimilarity +from keras.src.metrics.regression_metrics import LogCoshError +from keras.src.metrics.regression_metrics import MeanAbsoluteError +from keras.src.metrics.regression_metrics import MeanAbsolutePercentageError +from keras.src.metrics.regression_metrics import MeanSquaredError +from keras.src.metrics.regression_metrics import MeanSquaredLogarithmicError +from keras.src.metrics.regression_metrics import R2Score +from keras.src.metrics.regression_metrics import RootMeanSquaredError +from keras.src.saving import serialization_lib +from keras.src.utils.naming import to_snake_case ALL_OBJECTS = { # Base diff --git a/keras/metrics/accuracy_metrics.py b/keras/src/metrics/accuracy_metrics.py similarity index 98% rename from keras/metrics/accuracy_metrics.py rename to keras/src/metrics/accuracy_metrics.py index 330c09ce775e..53a9b207cfdf 100644 --- a/keras/metrics/accuracy_metrics.py +++ b/keras/src/metrics/accuracy_metrics.py @@ -1,8 +1,8 @@ -from keras import backend -from keras import ops -from keras.api_export import keras_export -from keras.losses.loss import squeeze_or_expand_to_same_rank -from keras.metrics import reduction_metrics +from keras.src import backend +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.losses.loss import squeeze_or_expand_to_same_rank +from keras.src.metrics import reduction_metrics def accuracy(y_true, y_pred): diff --git a/keras/metrics/accuracy_metrics_test.py b/keras/src/metrics/accuracy_metrics_test.py similarity index 99% rename from keras/metrics/accuracy_metrics_test.py rename to keras/src/metrics/accuracy_metrics_test.py index 06207e3e8114..a2adc1d4f23b 100644 --- a/keras/metrics/accuracy_metrics_test.py +++ b/keras/src/metrics/accuracy_metrics_test.py @@ -2,8 +2,8 @@ import numpy as np -from keras import testing -from keras.metrics import accuracy_metrics +from keras.src import testing +from keras.src.metrics import accuracy_metrics class AccuracyTest(testing.TestCase): diff --git a/keras/metrics/confusion_metrics.py b/keras/src/metrics/confusion_metrics.py similarity index 99% rename from keras/metrics/confusion_metrics.py rename to keras/src/metrics/confusion_metrics.py index 18791977d463..175932e47127 100644 --- a/keras/metrics/confusion_metrics.py +++ b/keras/src/metrics/confusion_metrics.py @@ -1,13 +1,13 @@ import numpy as np -from keras import activations -from keras import backend -from keras import initializers -from keras import ops -from keras.api_export import keras_export -from keras.metrics import metrics_utils -from keras.metrics.metric import Metric -from keras.utils.python_utils import to_list +from keras.src import activations +from keras.src import backend +from keras.src import initializers +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.metrics import metrics_utils +from keras.src.metrics.metric import Metric +from keras.src.utils.python_utils import to_list class _ConfusionMatrixConditionCount(Metric): diff --git a/keras/metrics/confusion_metrics_test.py b/keras/src/metrics/confusion_metrics_test.py similarity index 99% rename from keras/metrics/confusion_metrics_test.py rename to keras/src/metrics/confusion_metrics_test.py index 849aef9d6a2b..ba5934cc342f 100644 --- a/keras/metrics/confusion_metrics_test.py +++ b/keras/src/metrics/confusion_metrics_test.py @@ -5,12 +5,12 @@ from absl import logging from absl.testing import parameterized -from keras import layers -from keras import metrics -from keras import models -from keras import ops -from keras import testing -from keras.metrics import metrics_utils +from keras.src import layers +from keras.src import metrics +from keras.src import models +from keras.src import ops +from keras.src import testing +from keras.src.metrics import metrics_utils class FalsePositivesTest(testing.TestCase): diff --git a/keras/metrics/f_score_metrics.py b/keras/src/metrics/f_score_metrics.py similarity index 98% rename from keras/metrics/f_score_metrics.py rename to keras/src/metrics/f_score_metrics.py index eda9c2576593..a51119cb48e4 100644 --- a/keras/metrics/f_score_metrics.py +++ b/keras/src/metrics/f_score_metrics.py @@ -1,8 +1,8 @@ -from keras import backend -from keras import initializers -from keras import ops -from keras.api_export import keras_export -from keras.metrics.metric import Metric +from keras.src import backend +from keras.src import initializers +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.metrics.metric import Metric @keras_export("keras.metrics.FBetaScore") diff --git a/keras/metrics/f_score_metrics_test.py b/keras/src/metrics/f_score_metrics_test.py similarity index 99% rename from keras/metrics/f_score_metrics_test.py rename to keras/src/metrics/f_score_metrics_test.py index c5b700664cdf..baf7acced00b 100644 --- a/keras/metrics/f_score_metrics_test.py +++ b/keras/src/metrics/f_score_metrics_test.py @@ -1,8 +1,8 @@ import numpy as np from absl.testing import parameterized -from keras import testing -from keras.metrics import f_score_metrics +from keras.src import testing +from keras.src.metrics import f_score_metrics class FBetaScoreTest(parameterized.TestCase, testing.TestCase): diff --git a/keras/metrics/hinge_metrics.py b/keras/src/metrics/hinge_metrics.py similarity index 92% rename from keras/metrics/hinge_metrics.py rename to keras/src/metrics/hinge_metrics.py index 8ca0530ce2e7..4678b3fa1718 100644 --- a/keras/metrics/hinge_metrics.py +++ b/keras/src/metrics/hinge_metrics.py @@ -1,8 +1,8 @@ -from keras.api_export import keras_export -from keras.losses.losses import categorical_hinge -from keras.losses.losses import hinge -from keras.losses.losses import squared_hinge -from keras.metrics import reduction_metrics +from keras.src.api_export import keras_export +from keras.src.losses.losses import categorical_hinge +from keras.src.losses.losses import hinge +from keras.src.losses.losses import squared_hinge +from keras.src.metrics import reduction_metrics @keras_export("keras.metrics.Hinge") diff --git a/keras/metrics/hinge_metrics_test.py b/keras/src/metrics/hinge_metrics_test.py similarity index 98% rename from keras/metrics/hinge_metrics_test.py rename to keras/src/metrics/hinge_metrics_test.py index 6e217d33ea35..26d67b98ee6d 100644 --- a/keras/metrics/hinge_metrics_test.py +++ b/keras/src/metrics/hinge_metrics_test.py @@ -1,7 +1,7 @@ import numpy as np -from keras import testing -from keras.metrics import hinge_metrics +from keras.src import testing +from keras.src.metrics import hinge_metrics class HingeTest(testing.TestCase): diff --git a/keras/metrics/iou_metrics.py b/keras/src/metrics/iou_metrics.py similarity index 99% rename from keras/metrics/iou_metrics.py rename to keras/src/metrics/iou_metrics.py index e8dd9594b5d7..f39222ede85c 100644 --- a/keras/metrics/iou_metrics.py +++ b/keras/src/metrics/iou_metrics.py @@ -1,9 +1,9 @@ -from keras import backend -from keras import initializers -from keras import ops -from keras.api_export import keras_export -from keras.metrics.metric import Metric -from keras.metrics.metrics_utils import confusion_matrix +from keras.src import backend +from keras.src import initializers +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.metrics.metric import Metric +from keras.src.metrics.metrics_utils import confusion_matrix class _IoUBase(Metric): diff --git a/keras/metrics/iou_metrics_test.py b/keras/src/metrics/iou_metrics_test.py similarity index 99% rename from keras/metrics/iou_metrics_test.py rename to keras/src/metrics/iou_metrics_test.py index 907af12ceac7..76887dfc0655 100644 --- a/keras/metrics/iou_metrics_test.py +++ b/keras/src/metrics/iou_metrics_test.py @@ -1,10 +1,10 @@ import numpy as np import pytest -from keras import layers -from keras import models -from keras import testing -from keras.metrics import iou_metrics as metrics +from keras.src import layers +from keras.src import models +from keras.src import testing +from keras.src.metrics import iou_metrics as metrics class IoUTest(testing.TestCase): diff --git a/keras/metrics/metric.py b/keras/src/metrics/metric.py similarity index 97% rename from keras/metrics/metric.py rename to keras/src/metrics/metric.py index c4c43f8549f1..27f39f94d799 100644 --- a/keras/metrics/metric.py +++ b/keras/src/metrics/metric.py @@ -1,9 +1,9 @@ -from keras import backend -from keras import initializers -from keras import ops -from keras.api_export import keras_export -from keras.utils.naming import auto_name -from keras.utils.tracking import Tracker +from keras.src import backend +from keras.src import initializers +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.utils.naming import auto_name +from keras.src.utils.tracking import Tracker @keras_export(["keras.Metric", "keras.metrics.Metric"]) diff --git a/keras/metrics/metric_test.py b/keras/src/metrics/metric_test.py similarity index 96% rename from keras/metrics/metric_test.py rename to keras/src/metrics/metric_test.py index 56d3737e597f..346e6140c89b 100644 --- a/keras/metrics/metric_test.py +++ b/keras/src/metrics/metric_test.py @@ -1,11 +1,11 @@ import numpy as np -from keras import backend -from keras import initializers -from keras import metrics as metrics_module -from keras import ops -from keras import testing -from keras.metrics.metric import Metric +from keras.src import backend +from keras.src import initializers +from keras.src import metrics as metrics_module +from keras.src import ops +from keras.src import testing +from keras.src.metrics.metric import Metric class ExampleMetric(Metric): diff --git a/keras/metrics/metrics_utils.py b/keras/src/metrics/metrics_utils.py similarity index 99% rename from keras/metrics/metrics_utils.py rename to keras/src/metrics/metrics_utils.py index 8018363277e3..32f02bbb3ccb 100644 --- a/keras/metrics/metrics_utils.py +++ b/keras/src/metrics/metrics_utils.py @@ -2,10 +2,10 @@ import numpy as np -from keras import backend -from keras import ops -from keras.losses.loss import squeeze_or_expand_to_same_rank -from keras.utils.python_utils import to_list +from keras.src import backend +from keras.src import ops +from keras.src.losses.loss import squeeze_or_expand_to_same_rank +from keras.src.utils.python_utils import to_list NEG_INF = -1e10 diff --git a/keras/metrics/probabilistic_metrics.py b/keras/src/metrics/probabilistic_metrics.py similarity index 96% rename from keras/metrics/probabilistic_metrics.py rename to keras/src/metrics/probabilistic_metrics.py index b6f4551e0796..1abcd55623fc 100644 --- a/keras/metrics/probabilistic_metrics.py +++ b/keras/src/metrics/probabilistic_metrics.py @@ -1,10 +1,10 @@ -from keras.api_export import keras_export -from keras.losses.losses import binary_crossentropy -from keras.losses.losses import categorical_crossentropy -from keras.losses.losses import kl_divergence -from keras.losses.losses import poisson -from keras.losses.losses import sparse_categorical_crossentropy -from keras.metrics import reduction_metrics +from keras.src.api_export import keras_export +from keras.src.losses.losses import binary_crossentropy +from keras.src.losses.losses import categorical_crossentropy +from keras.src.losses.losses import kl_divergence +from keras.src.losses.losses import poisson +from keras.src.losses.losses import sparse_categorical_crossentropy +from keras.src.metrics import reduction_metrics @keras_export("keras.metrics.KLDivergence") diff --git a/keras/metrics/probabilistic_metrics_test.py b/keras/src/metrics/probabilistic_metrics_test.py similarity index 99% rename from keras/metrics/probabilistic_metrics_test.py rename to keras/src/metrics/probabilistic_metrics_test.py index 1ff76a846f99..0950b277893b 100644 --- a/keras/metrics/probabilistic_metrics_test.py +++ b/keras/src/metrics/probabilistic_metrics_test.py @@ -1,7 +1,7 @@ import numpy as np -from keras import metrics -from keras import testing +from keras.src import metrics +from keras.src import testing class KLDivergenceTest(testing.TestCase): diff --git a/keras/metrics/reduction_metrics.py b/keras/src/metrics/reduction_metrics.py similarity index 96% rename from keras/metrics/reduction_metrics.py rename to keras/src/metrics/reduction_metrics.py index 88c6af118e5a..90f45c008d96 100644 --- a/keras/metrics/reduction_metrics.py +++ b/keras/src/metrics/reduction_metrics.py @@ -1,10 +1,10 @@ -from keras import backend -from keras import initializers -from keras import losses -from keras import ops -from keras.api_export import keras_export -from keras.metrics.metric import Metric -from keras.saving import serialization_lib +from keras.src import backend +from keras.src import initializers +from keras.src import losses +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.metrics.metric import Metric +from keras.src.saving import serialization_lib def reduce_to_samplewise_values(values, sample_weight, reduce_fn, dtype): diff --git a/keras/metrics/reduction_metrics_test.py b/keras/src/metrics/reduction_metrics_test.py similarity index 97% rename from keras/metrics/reduction_metrics_test.py rename to keras/src/metrics/reduction_metrics_test.py index 7f56fde5f04b..eb0443a6d85c 100644 --- a/keras/metrics/reduction_metrics_test.py +++ b/keras/src/metrics/reduction_metrics_test.py @@ -1,8 +1,8 @@ import numpy as np -from keras import testing -from keras.metrics import reduction_metrics -from keras.saving import register_keras_serializable +from keras.src import testing +from keras.src.metrics import reduction_metrics +from keras.src.saving import register_keras_serializable class SumTest(testing.TestCase): diff --git a/keras/metrics/regression_metrics.py b/keras/src/metrics/regression_metrics.py similarity index 97% rename from keras/metrics/regression_metrics.py rename to keras/src/metrics/regression_metrics.py index 7997be11d901..220e87c20929 100644 --- a/keras/metrics/regression_metrics.py +++ b/keras/src/metrics/regression_metrics.py @@ -1,16 +1,16 @@ import warnings -from keras import initializers -from keras import ops -from keras.api_export import keras_export -from keras.losses.loss import squeeze_or_expand_to_same_rank -from keras.losses.losses import log_cosh -from keras.losses.losses import mean_absolute_error -from keras.losses.losses import mean_absolute_percentage_error -from keras.losses.losses import mean_squared_error -from keras.losses.losses import mean_squared_logarithmic_error -from keras.metrics import reduction_metrics -from keras.utils.numerical_utils import normalize +from keras.src import initializers +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.losses.loss import squeeze_or_expand_to_same_rank +from keras.src.losses.losses import log_cosh +from keras.src.losses.losses import mean_absolute_error +from keras.src.losses.losses import mean_absolute_percentage_error +from keras.src.losses.losses import mean_squared_error +from keras.src.losses.losses import mean_squared_logarithmic_error +from keras.src.metrics import reduction_metrics +from keras.src.utils.numerical_utils import normalize @keras_export("keras.metrics.MeanSquaredError") diff --git a/keras/metrics/regression_metrics_test.py b/keras/src/metrics/regression_metrics_test.py similarity index 99% rename from keras/metrics/regression_metrics_test.py rename to keras/src/metrics/regression_metrics_test.py index 7a3dbc5b5cbe..e7276f58c70e 100644 --- a/keras/metrics/regression_metrics_test.py +++ b/keras/src/metrics/regression_metrics_test.py @@ -1,8 +1,8 @@ import numpy as np from absl.testing import parameterized -from keras import testing -from keras.metrics import regression_metrics as metrics +from keras.src import testing +from keras.src.metrics import regression_metrics as metrics class MeanSquaredErrorTest(testing.TestCase): diff --git a/keras/src/models/__init__.py b/keras/src/models/__init__.py new file mode 100644 index 000000000000..1f3f73c99961 --- /dev/null +++ b/keras/src/models/__init__.py @@ -0,0 +1,3 @@ +from keras.src.models.functional import Functional +from keras.src.models.model import Model +from keras.src.models.sequential import Sequential diff --git a/keras/models/cloning.py b/keras/src/models/cloning.py similarity index 96% rename from keras/models/cloning.py rename to keras/src/models/cloning.py index e17655dc582e..3875b3522a6e 100644 --- a/keras/models/cloning.py +++ b/keras/src/models/cloning.py @@ -1,13 +1,13 @@ -from keras import backend -from keras import tree -from keras import utils -from keras.api_export import keras_export -from keras.layers import Input -from keras.layers import InputLayer -from keras.models.functional import Functional -from keras.models.functional import functional_like_constructor -from keras.models.sequential import Sequential -from keras.saving import serialization_lib +from keras.src import backend +from keras.src import tree +from keras.src import utils +from keras.src.api_export import keras_export +from keras.src.layers import Input +from keras.src.layers import InputLayer +from keras.src.models.functional import Functional +from keras.src.models.functional import functional_like_constructor +from keras.src.models.sequential import Sequential +from keras.src.saving import serialization_lib @keras_export("keras.models.clone_model") diff --git a/keras/models/cloning_test.py b/keras/src/models/cloning_test.py similarity index 96% rename from keras/models/cloning_test.py rename to keras/src/models/cloning_test.py index 340856f33a89..d9a46ac29cfa 100644 --- a/keras/models/cloning_test.py +++ b/keras/src/models/cloning_test.py @@ -2,11 +2,11 @@ import pytest from absl.testing import parameterized -from keras import layers -from keras import models -from keras import testing -from keras import tree -from keras.models.cloning import clone_model +from keras.src import layers +from keras.src import models +from keras.src import testing +from keras.src import tree +from keras.src.models.cloning import clone_model def get_mlp_functional_model(shared_layers=False): diff --git a/keras/models/functional.py b/keras/src/models/functional.py similarity index 97% rename from keras/models/functional.py rename to keras/src/models/functional.py index de6c8d82a5f1..20e2266e00e6 100644 --- a/keras/models/functional.py +++ b/keras/src/models/functional.py @@ -3,24 +3,24 @@ import typing import warnings -from keras import backend -from keras import ops -from keras import tree -from keras.backend.common import global_state -from keras.layers.core.input_layer import Input -from keras.layers.core.input_layer import InputLayer -from keras.layers.input_spec import InputSpec -from keras.layers.layer import Layer -from keras.legacy.saving import saving_utils -from keras.legacy.saving import serialization as legacy_serialization -from keras.models.model import Model -from keras.ops.function import Function -from keras.ops.function import _build_map -from keras.ops.function import make_node_key -from keras.ops.node import KerasHistory -from keras.ops.node import Node -from keras.saving import serialization_lib -from keras.utils import tracking +from keras.src import backend +from keras.src import ops +from keras.src import tree +from keras.src.backend.common import global_state +from keras.src.layers.core.input_layer import Input +from keras.src.layers.core.input_layer import InputLayer +from keras.src.layers.input_spec import InputSpec +from keras.src.layers.layer import Layer +from keras.src.legacy.saving import saving_utils +from keras.src.legacy.saving import serialization as legacy_serialization +from keras.src.models.model import Model +from keras.src.ops.function import Function +from keras.src.ops.function import _build_map +from keras.src.ops.function import make_node_key +from keras.src.ops.node import KerasHistory +from keras.src.ops.node import Node +from keras.src.saving import serialization_lib +from keras.src.utils import tracking class Functional(Function, Model): diff --git a/keras/models/functional_test.py b/keras/src/models/functional_test.py similarity index 98% rename from keras/models/functional_test.py rename to keras/src/models/functional_test.py index 432cc3273772..d8acbcae4f3c 100644 --- a/keras/models/functional_test.py +++ b/keras/src/models/functional_test.py @@ -3,13 +3,13 @@ import numpy as np import pytest -from keras import backend -from keras import layers -from keras import testing -from keras.layers.core.input_layer import Input -from keras.layers.input_spec import InputSpec -from keras.models import Functional -from keras.models import Model +from keras.src import backend +from keras.src import layers +from keras.src import testing +from keras.src.layers.core.input_layer import Input +from keras.src.layers.input_spec import InputSpec +from keras.src.models import Functional +from keras.src.models import Model class FunctionalTest(testing.TestCase): diff --git a/keras/models/model.py b/keras/src/models/model.py similarity index 94% rename from keras/models/model.py rename to keras/src/models/model.py index 65d915cba7bd..5678f34c6828 100644 --- a/keras/models/model.py +++ b/keras/src/models/model.py @@ -3,24 +3,26 @@ import typing import warnings -from keras import backend -from keras import utils -from keras.api_export import keras_export -from keras.layers.layer import Layer -from keras.models.variable_mapping import map_trackable_variables -from keras.saving import saving_api -from keras.trainers import trainer as base_trainer -from keras.utils import summary_utils -from keras.utils import traceback_utils +from keras.src import backend +from keras.src import utils +from keras.src.api_export import keras_export +from keras.src.layers.layer import Layer +from keras.src.models.variable_mapping import map_trackable_variables +from keras.src.saving import saving_api +from keras.src.trainers import trainer as base_trainer +from keras.src.utils import summary_utils +from keras.src.utils import traceback_utils if backend.backend() == "tensorflow": - from keras.backend.tensorflow.trainer import TensorFlowTrainer as Trainer + from keras.src.backend.tensorflow.trainer import ( + TensorFlowTrainer as Trainer, + ) elif backend.backend() == "jax": - from keras.backend.jax.trainer import JAXTrainer as Trainer + from keras.src.backend.jax.trainer import JAXTrainer as Trainer elif backend.backend() == "torch": - from keras.backend.torch.trainer import TorchTrainer as Trainer + from keras.src.backend.torch.trainer import TorchTrainer as Trainer elif backend.backend() == "numpy": - from keras.backend.numpy.trainer import NumpyTrainer as Trainer + from keras.src.backend.numpy.trainer import NumpyTrainer as Trainer else: raise RuntimeError( f"Backend '{backend.backend()}' must implement the Trainer class." @@ -136,14 +138,14 @@ def call(self, inputs, training=False): def __new__(cls, *args, **kwargs): # Signature detection for usage of `Model` as a `Functional` if functional_init_arguments(args, kwargs) and cls == Model: - from keras.models import functional + from keras.src.models import functional return functional.Functional(*args, **kwargs) return typing.cast(Model, super().__new__(cls)) def __init__(self, *args, **kwargs): Trainer.__init__(self) - from keras.models import functional + from keras.src.models import functional # Signature detection for usage of a `Model` subclass # as a `Functional` subclass @@ -357,7 +359,7 @@ def quantize(self, mode): mode: The mode of the quantization. Only 'int8' is supported at this time. """ - from keras.dtype_policies import QUANTIZATION_MODES + from keras.src.dtype_policies import QUANTIZATION_MODES if not self.built: raise ValueError( @@ -442,7 +444,7 @@ def to_json(self, **kwargs): Returns: A JSON string. """ - from keras.saving import serialization_lib + from keras.src.saving import serialization_lib model_config = serialization_lib.serialize_keras_object(self) return json.dumps(model_config, **kwargs) @@ -481,13 +483,13 @@ def export(self, filepath, format="tf_saved_model"): use the lower-level `keras.export.ExportArchive` class. The `export()` method relies on `ExportArchive` internally. """ - from keras.export import export_lib + from keras.src.export import export_lib export_lib.export_model(self, filepath) @classmethod def from_config(cls, config, custom_objects=None): - from keras.models.functional import Functional + from keras.src.models.functional import Functional functional_config_keys = [ "name", @@ -510,7 +512,7 @@ def from_config(cls, config, custom_objects=None): if is_functional_config and revivable_as_functional: # Revive Functional model # (but not Functional subclasses with a custom __init__) - from keras.models.functional import functional_from_config + from keras.src.models.functional import functional_from_config return functional_from_config( cls, config, custom_objects=custom_objects @@ -567,7 +569,7 @@ def model_from_json(json_string, custom_objects=None): Returns: A Keras model instance (uncompiled). """ - from keras.saving import serialization_lib + from keras.src.saving import serialization_lib model_config = json.loads(json_string) return serialization_lib.deserialize_keras_object( @@ -585,7 +587,7 @@ def functional_init_arguments(args, kwargs): def inject_functional_model_class(cls): """Inject `Functional` into the hierarchy of this class if needed.""" - from keras.models import functional + from keras.src.models import functional if cls == Model: return functional.Functional diff --git a/keras/models/model_test.py b/keras/src/models/model_test.py similarity index 98% rename from keras/models/model_test.py rename to keras/src/models/model_test.py index 23f647b7d067..871fc4bff19e 100644 --- a/keras/models/model_test.py +++ b/keras/src/models/model_test.py @@ -2,13 +2,13 @@ import pytest from absl.testing import parameterized -from keras import backend -from keras import layers -from keras import testing -from keras.layers.core.input_layer import Input -from keras.models.functional import Functional -from keras.models.model import Model -from keras.models.model import model_from_json +from keras.src import backend +from keras.src import layers +from keras.src import testing +from keras.src.layers.core.input_layer import Input +from keras.src.models.functional import Functional +from keras.src.models.model import Model +from keras.src.models.model import model_from_json def _get_model(): diff --git a/keras/models/sequential.py b/keras/src/models/sequential.py similarity index 96% rename from keras/models/sequential.py rename to keras/src/models/sequential.py index e094a5df5eee..ecdaa4058e8d 100644 --- a/keras/models/sequential.py +++ b/keras/src/models/sequential.py @@ -2,16 +2,16 @@ import inspect import typing -from keras import tree -from keras.api_export import keras_export -from keras.backend.common import global_state -from keras.layers.core.input_layer import InputLayer -from keras.layers.layer import Layer -from keras.legacy.saving import saving_utils -from keras.legacy.saving import serialization as legacy_serialization -from keras.models.functional import Functional -from keras.models.model import Model -from keras.saving import serialization_lib +from keras.src import tree +from keras.src.api_export import keras_export +from keras.src.backend.common import global_state +from keras.src.layers.core.input_layer import InputLayer +from keras.src.layers.layer import Layer +from keras.src.legacy.saving import saving_utils +from keras.src.legacy.saving import serialization as legacy_serialization +from keras.src.models.functional import Functional +from keras.src.models.model import Model +from keras.src.saving import serialization_lib @keras_export(["keras.Sequential", "keras.models.Sequential"]) diff --git a/keras/models/sequential_test.py b/keras/src/models/sequential_test.py similarity index 97% rename from keras/models/sequential_test.py rename to keras/src/models/sequential_test.py index 0df2d64cd925..12c0703ab45a 100644 --- a/keras/models/sequential_test.py +++ b/keras/src/models/sequential_test.py @@ -1,12 +1,12 @@ import numpy as np import pytest -from keras import backend -from keras import layers -from keras import testing -from keras.layers.core.input_layer import Input -from keras.models.functional import Functional -from keras.models.sequential import Sequential +from keras.src import backend +from keras.src import layers +from keras.src import testing +from keras.src.layers.core.input_layer import Input +from keras.src.models.functional import Functional +from keras.src.models.sequential import Sequential @pytest.mark.requires_trainable_backend diff --git a/keras/models/variable_mapping.py b/keras/src/models/variable_mapping.py similarity index 91% rename from keras/models/variable_mapping.py rename to keras/src/models/variable_mapping.py index ec04015a74b2..ed9deb7340ec 100644 --- a/keras/models/variable_mapping.py +++ b/keras/src/models/variable_mapping.py @@ -1,7 +1,7 @@ -from keras.layers.layer import Layer -from keras.metrics.metric import Metric -from keras.optimizers.optimizer import Optimizer -from keras.saving import saving_lib +from keras.src.layers.layer import Layer +from keras.src.metrics.metric import Metric +from keras.src.optimizers.optimizer import Optimizer +from keras.src.saving import saving_lib def map_trackable_variables(trackable, store, visited_trackables): diff --git a/keras/models/variable_mapping_test.py b/keras/src/models/variable_mapping_test.py similarity index 94% rename from keras/models/variable_mapping_test.py rename to keras/src/models/variable_mapping_test.py index 6eadce71bade..652e578289ce 100644 --- a/keras/models/variable_mapping_test.py +++ b/keras/src/models/variable_mapping_test.py @@ -1,7 +1,7 @@ import numpy as np -from keras import testing -from keras.saving import saving_lib_test +from keras.src import testing +from keras.src.saving import saving_lib_test class VariableMappingTest(testing.TestCase): diff --git a/keras/src/ops/__init__.py b/keras/src/ops/__init__.py new file mode 100644 index 000000000000..754923c9fea5 --- /dev/null +++ b/keras/src/ops/__init__.py @@ -0,0 +1,16 @@ +# from keras.src.ops.numpy import Matmul, matmul +# from keras.src.ops.numpy import Add, add +# from keras.src.ops.numpy import Multiply, multiply + +from keras.src.backend import cast +from keras.src.backend import cond +from keras.src.backend import is_tensor +from keras.src.backend import name_scope +from keras.src.backend import random +from keras.src.ops import image +from keras.src.ops import operation_utils +from keras.src.ops.core import * # noqa: F403 +from keras.src.ops.linalg import * # noqa: F403 +from keras.src.ops.math import * # noqa: F403 +from keras.src.ops.nn import * # noqa: F403 +from keras.src.ops.numpy import * # noqa: F403 diff --git a/keras/ops/core.py b/keras/src/ops/core.py similarity index 98% rename from keras/ops/core.py rename to keras/src/ops/core.py index c542f79f8847..5f581fa8678f 100644 --- a/keras/ops/core.py +++ b/keras/src/ops/core.py @@ -16,13 +16,13 @@ import numpy as np -from keras import backend -from keras import tree -from keras.api_export import keras_export -from keras.backend import KerasTensor -from keras.backend import any_symbolic_tensors -from keras.ops.operation import Operation -from keras.utils import traceback_utils +from keras.src import backend +from keras.src import tree +from keras.src.api_export import keras_export +from keras.src.backend import KerasTensor +from keras.src.backend import any_symbolic_tensors +from keras.src.ops.operation import Operation +from keras.src.utils import traceback_utils class Scatter(Operation): diff --git a/keras/ops/core_test.py b/keras/src/ops/core_test.py similarity index 98% rename from keras/ops/core_test.py rename to keras/src/ops/core_test.py index fe1284d1252b..31d553853b63 100644 --- a/keras/ops/core_test.py +++ b/keras/src/ops/core_test.py @@ -5,17 +5,17 @@ import pytest from absl.testing import parameterized -from keras import backend -from keras import layers -from keras import losses -from keras import models -from keras import ops -from keras import optimizers -from keras import testing -from keras import tree -from keras.backend.common import dtypes -from keras.backend.common.keras_tensor import KerasTensor -from keras.ops import core +from keras.src import backend +from keras.src import layers +from keras.src import losses +from keras.src import models +from keras.src import ops +from keras.src import optimizers +from keras.src import testing +from keras.src import tree +from keras.src.backend.common import dtypes +from keras.src.backend.common.keras_tensor import KerasTensor +from keras.src.ops import core class CoreOpsStaticShapeTest(testing.TestCase): diff --git a/keras/ops/function.py b/keras/src/ops/function.py similarity index 98% rename from keras/ops/function.py rename to keras/src/ops/function.py index 7ae8244c77c2..8b6930ac12ab 100644 --- a/keras/ops/function.py +++ b/keras/src/ops/function.py @@ -1,10 +1,10 @@ import collections -from keras import tree -from keras.api_export import keras_export -from keras.backend import KerasTensor -from keras.backend.config import backend -from keras.ops.operation import Operation +from keras.src import tree +from keras.src.api_export import keras_export +from keras.src.backend import KerasTensor +from keras.src.backend.config import backend +from keras.src.ops.operation import Operation @keras_export("keras.Function") diff --git a/keras/ops/function_test.py b/keras/src/ops/function_test.py similarity index 94% rename from keras/ops/function_test.py rename to keras/src/ops/function_test.py index 34de13c814e7..d1ebc838d314 100644 --- a/keras/ops/function_test.py +++ b/keras/src/ops/function_test.py @@ -2,13 +2,13 @@ import numpy as np -from keras import testing -from keras.backend.common import keras_tensor -from keras.layers import Dense -from keras.layers import Input -from keras.models import Model -from keras.ops import function -from keras.ops import numpy as knp +from keras.src import testing +from keras.src.backend.common import keras_tensor +from keras.src.layers import Dense +from keras.src.layers import Input +from keras.src.models import Model +from keras.src.ops import function +from keras.src.ops import numpy as knp class FunctionTest(testing.TestCase): diff --git a/keras/ops/image.py b/keras/src/ops/image.py similarity index 99% rename from keras/ops/image.py rename to keras/src/ops/image.py index 960290500729..398defe615a4 100644 --- a/keras/ops/image.py +++ b/keras/src/ops/image.py @@ -1,10 +1,10 @@ -from keras import backend -from keras import ops -from keras.api_export import keras_export -from keras.backend import KerasTensor -from keras.backend import any_symbolic_tensors -from keras.ops.operation import Operation -from keras.ops.operation_utils import compute_conv_output_shape +from keras.src import backend +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.backend import KerasTensor +from keras.src.backend import any_symbolic_tensors +from keras.src.ops.operation import Operation +from keras.src.ops.operation_utils import compute_conv_output_shape class RGBToGrayscale(Operation): @@ -78,7 +78,7 @@ def rgb_to_grayscale( Examples: >>> import numpy as np - >>> from keras import ops + >>> from keras.src import ops >>> x = np.random.random((2, 4, 4, 3)) >>> y = ops.image.rgb_to_grayscale(x) >>> y.shape diff --git a/keras/ops/image_test.py b/keras/src/ops/image_test.py similarity index 99% rename from keras/ops/image_test.py rename to keras/src/ops/image_test.py index 2f8b24a3e1ec..1f3fb7938063 100644 --- a/keras/ops/image_test.py +++ b/keras/src/ops/image_test.py @@ -6,10 +6,10 @@ import tensorflow as tf from absl.testing import parameterized -from keras import backend -from keras import testing -from keras.backend.common.keras_tensor import KerasTensor -from keras.ops import image as kimage +from keras.src import backend +from keras.src import testing +from keras.src.backend.common.keras_tensor import KerasTensor +from keras.src.ops import image as kimage class ImageOpsDynamicShapeTest(testing.TestCase): diff --git a/keras/ops/linalg.py b/keras/src/ops/linalg.py similarity index 98% rename from keras/ops/linalg.py rename to keras/src/ops/linalg.py index 0636b185cc85..cd2ac98c7090 100644 --- a/keras/ops/linalg.py +++ b/keras/src/ops/linalg.py @@ -1,9 +1,9 @@ -from keras import backend -from keras.api_export import keras_export -from keras.backend import KerasTensor -from keras.backend import any_symbolic_tensors -from keras.ops.operation import Operation -from keras.ops.operation_utils import reduce_shape +from keras.src import backend +from keras.src.api_export import keras_export +from keras.src.backend import KerasTensor +from keras.src.backend import any_symbolic_tensors +from keras.src.ops.operation import Operation +from keras.src.ops.operation_utils import reduce_shape class Cholesky(Operation): diff --git a/keras/ops/linalg_test.py b/keras/src/ops/linalg_test.py similarity index 98% rename from keras/ops/linalg_test.py rename to keras/src/ops/linalg_test.py index 30f7368cef8f..36ab32b202d9 100644 --- a/keras/ops/linalg_test.py +++ b/keras/src/ops/linalg_test.py @@ -1,12 +1,12 @@ import numpy as np from absl.testing import parameterized -from keras import backend -from keras import ops -from keras import testing -from keras.backend.common.keras_tensor import KerasTensor -from keras.ops import linalg -from keras.testing.test_utils import named_product +from keras.src import backend +from keras.src import ops +from keras.src import testing +from keras.src.backend.common.keras_tensor import KerasTensor +from keras.src.ops import linalg +from keras.src.testing.test_utils import named_product class LinalgOpsDynamicShapeTest(testing.TestCase): diff --git a/keras/ops/math.py b/keras/src/ops/math.py similarity index 99% rename from keras/ops/math.py rename to keras/src/ops/math.py index 5d81eed75770..15ecad5acb0e 100644 --- a/keras/ops/math.py +++ b/keras/src/ops/math.py @@ -1,11 +1,11 @@ """Commonly used math operations not included in NumPy.""" -from keras import backend -from keras.api_export import keras_export -from keras.backend import KerasTensor -from keras.backend import any_symbolic_tensors -from keras.ops.operation import Operation -from keras.ops.operation_utils import reduce_shape +from keras.src import backend +from keras.src.api_export import keras_export +from keras.src.backend import KerasTensor +from keras.src.backend import any_symbolic_tensors +from keras.src.ops.operation import Operation +from keras.src.ops.operation_utils import reduce_shape class SegmentSum(Operation): diff --git a/keras/ops/math_test.py b/keras/src/ops/math_test.py similarity index 99% rename from keras/ops/math_test.py rename to keras/src/ops/math_test.py index 5fdebb5f63d7..60db9fc70f6c 100644 --- a/keras/ops/math_test.py +++ b/keras/src/ops/math_test.py @@ -5,11 +5,11 @@ import scipy.signal from absl.testing import parameterized -from keras import backend -from keras import testing -from keras.backend.common import dtypes -from keras.backend.common.keras_tensor import KerasTensor -from keras.ops import math as kmath +from keras.src import backend +from keras.src import testing +from keras.src.backend.common import dtypes +from keras.src.backend.common.keras_tensor import KerasTensor +from keras.src.ops import math as kmath def _stft( diff --git a/keras/ops/nn.py b/keras/src/ops/nn.py similarity index 99% rename from keras/ops/nn.py rename to keras/src/ops/nn.py index d1a724d94070..4ec642b018a6 100644 --- a/keras/ops/nn.py +++ b/keras/src/ops/nn.py @@ -2,17 +2,17 @@ import warnings -from keras import backend -from keras.api_export import keras_export -from keras.backend import KerasTensor -from keras.backend import any_symbolic_tensors -from keras.backend import standardize_data_format -from keras.backend.common.backend_utils import ( +from keras.src import backend +from keras.src.api_export import keras_export +from keras.src.backend import KerasTensor +from keras.src.backend import any_symbolic_tensors +from keras.src.backend import standardize_data_format +from keras.src.backend.common.backend_utils import ( compute_conv_transpose_output_shape, ) -from keras.ops import operation_utils -from keras.ops.operation import Operation -from keras.ops.operation_utils import reduce_shape +from keras.src.ops import operation_utils +from keras.src.ops.operation import Operation +from keras.src.ops.operation_utils import reduce_shape class Relu(Operation): diff --git a/keras/ops/nn_test.py b/keras/src/ops/nn_test.py similarity index 98% rename from keras/ops/nn_test.py rename to keras/src/ops/nn_test.py index 43c95af174fd..0e13aac7163a 100644 --- a/keras/ops/nn_test.py +++ b/keras/src/ops/nn_test.py @@ -3,28 +3,34 @@ from absl.testing import parameterized import keras -from keras import backend -from keras import layers -from keras import losses -from keras import models -from keras import ops -from keras import testing -from keras.backend.common import dtypes -from keras.backend.common import standardize_dtype -from keras.backend.common.keras_tensor import KerasTensor -from keras.layers.convolutional.conv_test import np_conv1d -from keras.layers.convolutional.conv_test import np_conv2d -from keras.layers.convolutional.conv_test import np_conv3d -from keras.layers.convolutional.conv_transpose_test import np_conv1d_transpose -from keras.layers.convolutional.conv_transpose_test import np_conv2d_transpose -from keras.layers.convolutional.depthwise_conv_test import np_depthwise_conv2d -from keras.layers.pooling.average_pooling_test import np_avgpool1d -from keras.layers.pooling.average_pooling_test import np_avgpool2d -from keras.layers.pooling.max_pooling_test import np_maxpool1d -from keras.layers.pooling.max_pooling_test import np_maxpool2d -from keras.ops import nn as knn -from keras.ops import numpy as knp -from keras.testing.test_utils import named_product +from keras.src import backend +from keras.src import layers +from keras.src import losses +from keras.src import models +from keras.src import ops +from keras.src import testing +from keras.src.backend.common import dtypes +from keras.src.backend.common import standardize_dtype +from keras.src.backend.common.keras_tensor import KerasTensor +from keras.src.layers.convolutional.conv_test import np_conv1d +from keras.src.layers.convolutional.conv_test import np_conv2d +from keras.src.layers.convolutional.conv_test import np_conv3d +from keras.src.layers.convolutional.conv_transpose_test import ( + np_conv1d_transpose, +) +from keras.src.layers.convolutional.conv_transpose_test import ( + np_conv2d_transpose, +) +from keras.src.layers.convolutional.depthwise_conv_test import ( + np_depthwise_conv2d, +) +from keras.src.layers.pooling.average_pooling_test import np_avgpool1d +from keras.src.layers.pooling.average_pooling_test import np_avgpool2d +from keras.src.layers.pooling.max_pooling_test import np_maxpool1d +from keras.src.layers.pooling.max_pooling_test import np_maxpool2d +from keras.src.ops import nn as knn +from keras.src.ops import numpy as knp +from keras.src.testing.test_utils import named_product class NNOpsDynamicShapeTest(testing.TestCase, parameterized.TestCase): @@ -1809,7 +1815,7 @@ def test_moments_sync(self): reason="synchronized=True only implemented for TF backend", ) def test_moments_sync_with_distribution_strategy(self, dtype): - from keras.utils.module_utils import tensorflow as tf + from keras.src.utils.module_utils import tensorflow as tf # Config 2 CPUs for testing. logical_cpus = tf.config.list_logical_devices("CPU") diff --git a/keras/ops/node.py b/keras/src/ops/node.py similarity index 97% rename from keras/ops/node.py rename to keras/src/ops/node.py index dc775920c0f9..7e05de88fcf5 100644 --- a/keras/ops/node.py +++ b/keras/src/ops/node.py @@ -1,8 +1,8 @@ import collections -from keras import tree -from keras.backend import KerasTensor -from keras.ops.symbolic_arguments import SymbolicArguments +from keras.src import tree +from keras.src.backend import KerasTensor +from keras.src.ops.symbolic_arguments import SymbolicArguments class Node: diff --git a/keras/ops/node_test.py b/keras/src/ops/node_test.py similarity index 93% rename from keras/ops/node_test.py rename to keras/src/ops/node_test.py index b00781f5f9c2..7ed8227b3c2f 100644 --- a/keras/ops/node_test.py +++ b/keras/src/ops/node_test.py @@ -1,9 +1,9 @@ import numpy as np -from keras import Layer -from keras import testing -from keras.backend import KerasTensor -from keras.ops.node import Node +from keras.src import Layer +from keras.src import testing +from keras.src.backend import KerasTensor +from keras.src.ops.node import Node class DummyLayer(Layer): diff --git a/keras/ops/numpy.py b/keras/src/ops/numpy.py similarity index 99% rename from keras/ops/numpy.py rename to keras/src/ops/numpy.py index 94306eaa702d..266eb3047024 100644 --- a/keras/ops/numpy.py +++ b/keras/src/ops/numpy.py @@ -147,17 +147,17 @@ import numpy as np -from keras import backend -from keras.api_export import keras_export -from keras.backend import KerasTensor -from keras.backend import any_symbolic_tensors -from keras.backend.common import dtypes -from keras.backend.common.backend_utils import canonicalize_axis -from keras.backend.common.backend_utils import to_tuple_or_list -from keras.ops import operation_utils -from keras.ops.operation import Operation -from keras.ops.operation_utils import broadcast_shapes -from keras.ops.operation_utils import reduce_shape +from keras.src import backend +from keras.src.api_export import keras_export +from keras.src.backend import KerasTensor +from keras.src.backend import any_symbolic_tensors +from keras.src.backend.common import dtypes +from keras.src.backend.common.backend_utils import canonicalize_axis +from keras.src.backend.common.backend_utils import to_tuple_or_list +from keras.src.ops import operation_utils +from keras.src.ops.operation import Operation +from keras.src.ops.operation_utils import broadcast_shapes +from keras.src.ops.operation_utils import reduce_shape def shape_equal(shape1, shape2, axis=None, allow_none=True): @@ -1884,7 +1884,7 @@ def diag(x, k=0): The extracted diagonal or constructed diagonal tensor. Examples: - >>> from keras import ops + >>> from keras.src import ops >>> x = ops.arange(9).reshape((3, 3)) >>> x array([[0, 1, 2], @@ -1978,7 +1978,7 @@ def diagonal(x, offset=0, axis1=0, axis2=1): Tensor of diagonals. Examples: - >>> from keras import ops + >>> from keras.src import ops >>> x = ops.arange(4).reshape((2, 2)) >>> x array([[0, 1], @@ -2047,7 +2047,7 @@ def diff(a, n=1, axis=-1): Tensor of diagonals. Examples: - >>> from keras import ops + >>> from keras.src import ops >>> x = ops.convert_to_tensor([1, 2, 4, 7, 0]) >>> ops.diff(x) array([ 1, 2, 3, -7]) @@ -2366,7 +2366,7 @@ def einsum(subscripts, *operands): The calculation based on the Einstein summation convention. Example: - >>> from keras import ops + >>> from keras.src import ops >>> a = ops.arange(25).reshape(5, 5) >>> b = ops.arange(5) >>> c = ops.arange(6).reshape(2, 3) @@ -3748,7 +3748,7 @@ def meshgrid(*x, indexing="xy"): Sequence of N tensors. Example: - >>> from keras import ops + >>> from keras.src import ops >>> x = ops.array([1, 2, 3]) >>> y = ops.array([4, 5, 6]) diff --git a/keras/ops/numpy_test.py b/keras/src/ops/numpy_test.py similarity index 99% rename from keras/ops/numpy_test.py rename to keras/src/ops/numpy_test.py index 5f8ed2fc0856..6cea9ef86066 100644 --- a/keras/ops/numpy_test.py +++ b/keras/src/ops/numpy_test.py @@ -9,13 +9,13 @@ from absl.testing import parameterized import keras -from keras import backend -from keras import testing -from keras.backend.common import dtypes -from keras.backend.common import standardize_dtype -from keras.backend.common.keras_tensor import KerasTensor -from keras.ops import numpy as knp -from keras.testing.test_utils import named_product +from keras.src import backend +from keras.src import testing +from keras.src.backend.common import dtypes +from keras.src.backend.common import standardize_dtype +from keras.src.backend.common.keras_tensor import KerasTensor +from keras.src.ops import numpy as knp +from keras.src.testing.test_utils import named_product class NumpyTwoInputOpsDynamicShapeTest(testing.TestCase): diff --git a/keras/ops/operation.py b/keras/src/ops/operation.py similarity index 95% rename from keras/ops/operation.py rename to keras/src/ops/operation.py index 547e8f3f387d..10b79d591406 100644 --- a/keras/ops/operation.py +++ b/keras/src/ops/operation.py @@ -1,15 +1,15 @@ import inspect import textwrap -from keras import backend -from keras import dtype_policies -from keras import tree -from keras.api_export import keras_export -from keras.backend.common.keras_tensor import any_symbolic_tensors -from keras.ops.node import Node -from keras.utils import python_utils -from keras.utils import traceback_utils -from keras.utils.naming import auto_name +from keras.src import backend +from keras.src import dtype_policies +from keras.src import tree +from keras.src.api_export import keras_export +from keras.src.backend.common.keras_tensor import any_symbolic_tensors +from keras.src.ops.node import Node +from keras.src.utils import python_utils +from keras.src.utils import traceback_utils +from keras.src.utils.naming import auto_name @keras_export("keras.Operation") @@ -120,7 +120,7 @@ def __new__(cls, *args, **kwargs): try: instance._lock = False if auto_config: - from keras.saving import serialization_lib + from keras.src.saving import serialization_lib instance._auto_config = serialization_lib.SerializableDict( **kwargs diff --git a/keras/ops/operation_test.py b/keras/src/ops/operation_test.py similarity index 96% rename from keras/ops/operation_test.py rename to keras/src/ops/operation_test.py index e01ef075e3cb..63183759fecb 100644 --- a/keras/ops/operation_test.py +++ b/keras/src/ops/operation_test.py @@ -1,10 +1,10 @@ import numpy as np -from keras import backend -from keras import testing -from keras.backend.common import keras_tensor -from keras.ops import numpy as knp -from keras.ops import operation +from keras.src import backend +from keras.src import testing +from keras.src.backend.common import keras_tensor +from keras.src.ops import numpy as knp +from keras.src.ops import operation class OpWithMultipleInputs(operation.Operation): diff --git a/keras/ops/operation_utils.py b/keras/src/ops/operation_utils.py similarity index 98% rename from keras/ops/operation_utils.py rename to keras/src/ops/operation_utils.py index e8d335bb286a..ac0961da4854 100644 --- a/keras/ops/operation_utils.py +++ b/keras/src/ops/operation_utils.py @@ -2,10 +2,10 @@ import numpy as np -from keras import tree -from keras.api_export import keras_export -from keras.backend.common.backend_utils import canonicalize_axis -from keras.backend.common.backend_utils import to_tuple_or_list +from keras.src import tree +from keras.src.api_export import keras_export +from keras.src.backend.common.backend_utils import canonicalize_axis +from keras.src.backend.common.backend_utils import to_tuple_or_list def broadcast_shapes(shape1, shape2): diff --git a/keras/ops/operation_utils_test.py b/keras/src/ops/operation_utils_test.py similarity index 97% rename from keras/ops/operation_utils_test.py rename to keras/src/ops/operation_utils_test.py index 20c140c02b5a..b5acf9d29260 100644 --- a/keras/ops/operation_utils_test.py +++ b/keras/src/ops/operation_utils_test.py @@ -1,8 +1,8 @@ -from keras import backend -from keras import ops -from keras import testing -from keras.layers.core import input_layer -from keras.ops import operation_utils +from keras.src import backend +from keras.src import ops +from keras.src import testing +from keras.src.layers.core import input_layer +from keras.src.ops import operation_utils class OperationUtilsTest(testing.TestCase): diff --git a/keras/ops/symbolic_arguments.py b/keras/src/ops/symbolic_arguments.py similarity index 95% rename from keras/ops/symbolic_arguments.py rename to keras/src/ops/symbolic_arguments.py index 33ec86998672..b5ff9b9687f8 100644 --- a/keras/ops/symbolic_arguments.py +++ b/keras/src/ops/symbolic_arguments.py @@ -1,5 +1,5 @@ -from keras import tree -from keras.backend import KerasTensor +from keras.src import tree +from keras.src.backend import KerasTensor class SymbolicArguments: diff --git a/keras/ops/symbolic_arguments_test.py b/keras/src/ops/symbolic_arguments_test.py similarity index 95% rename from keras/ops/symbolic_arguments_test.py rename to keras/src/ops/symbolic_arguments_test.py index 3fda859e6c58..b212032154ec 100644 --- a/keras/ops/symbolic_arguments_test.py +++ b/keras/src/ops/symbolic_arguments_test.py @@ -1,7 +1,7 @@ -from keras import testing -from keras import tree -from keras.backend import KerasTensor -from keras.ops.symbolic_arguments import SymbolicArguments +from keras.src import testing +from keras.src import tree +from keras.src.backend import KerasTensor +from keras.src.ops.symbolic_arguments import SymbolicArguments class SymbolicArgumentsTest(testing.TestCase): diff --git a/keras/optimizers/__init__.py b/keras/src/optimizers/__init__.py similarity index 81% rename from keras/optimizers/__init__.py rename to keras/src/optimizers/__init__.py index 6d94932a530b..d00c96d98954 100644 --- a/keras/optimizers/__init__.py +++ b/keras/src/optimizers/__init__.py @@ -1,18 +1,18 @@ -from keras.api_export import keras_export -from keras.optimizers.adadelta import Adadelta -from keras.optimizers.adafactor import Adafactor -from keras.optimizers.adagrad import Adagrad -from keras.optimizers.adam import Adam -from keras.optimizers.adamax import Adamax -from keras.optimizers.adamw import AdamW -from keras.optimizers.ftrl import Ftrl -from keras.optimizers.lion import Lion -from keras.optimizers.loss_scale_optimizer import LossScaleOptimizer -from keras.optimizers.nadam import Nadam -from keras.optimizers.optimizer import Optimizer -from keras.optimizers.rmsprop import RMSprop -from keras.optimizers.sgd import SGD -from keras.saving import serialization_lib +from keras.src.api_export import keras_export +from keras.src.optimizers.adadelta import Adadelta +from keras.src.optimizers.adafactor import Adafactor +from keras.src.optimizers.adagrad import Adagrad +from keras.src.optimizers.adam import Adam +from keras.src.optimizers.adamax import Adamax +from keras.src.optimizers.adamw import AdamW +from keras.src.optimizers.ftrl import Ftrl +from keras.src.optimizers.lion import Lion +from keras.src.optimizers.loss_scale_optimizer import LossScaleOptimizer +from keras.src.optimizers.nadam import Nadam +from keras.src.optimizers.optimizer import Optimizer +from keras.src.optimizers.rmsprop import RMSprop +from keras.src.optimizers.sgd import SGD +from keras.src.saving import serialization_lib ALL_OBJECTS = { Optimizer, diff --git a/keras/optimizers/adadelta.py b/keras/src/optimizers/adadelta.py similarity index 97% rename from keras/optimizers/adadelta.py rename to keras/src/optimizers/adadelta.py index fa56ee5b4b70..1f2f3835aec4 100644 --- a/keras/optimizers/adadelta.py +++ b/keras/src/optimizers/adadelta.py @@ -1,6 +1,6 @@ -from keras import ops -from keras.api_export import keras_export -from keras.optimizers import optimizer +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.optimizers import optimizer @keras_export(["keras.optimizers.Adadelta"]) diff --git a/keras/optimizers/adadelta_test.py b/keras/src/optimizers/adadelta_test.py similarity index 95% rename from keras/optimizers/adadelta_test.py rename to keras/src/optimizers/adadelta_test.py index c7c9dd7d32bf..9da72612fc87 100644 --- a/keras/optimizers/adadelta_test.py +++ b/keras/src/optimizers/adadelta_test.py @@ -1,9 +1,9 @@ import numpy as np -from keras import backend -from keras import ops -from keras import testing -from keras.optimizers.adadelta import Adadelta +from keras.src import backend +from keras.src import ops +from keras.src import testing +from keras.src.optimizers.adadelta import Adadelta class AdadeltaTest(testing.TestCase): diff --git a/keras/optimizers/adafactor.py b/keras/src/optimizers/adafactor.py similarity index 98% rename from keras/optimizers/adafactor.py rename to keras/src/optimizers/adafactor.py index 7782f35e66ea..8635f1d9d8c0 100644 --- a/keras/optimizers/adafactor.py +++ b/keras/src/optimizers/adafactor.py @@ -1,7 +1,7 @@ -from keras import backend -from keras import ops -from keras.api_export import keras_export -from keras.optimizers import optimizer +from keras.src import backend +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.optimizers import optimizer @keras_export(["keras.optimizers.Adafactor"]) diff --git a/keras/optimizers/adafactor_test.py b/keras/src/optimizers/adafactor_test.py similarity index 97% rename from keras/optimizers/adafactor_test.py rename to keras/src/optimizers/adafactor_test.py index b5621963f15b..b928400c34e4 100644 --- a/keras/optimizers/adafactor_test.py +++ b/keras/src/optimizers/adafactor_test.py @@ -3,9 +3,9 @@ import numpy as np -from keras import backend -from keras import testing -from keras.optimizers.adafactor import Adafactor +from keras.src import backend +from keras.src import testing +from keras.src.optimizers.adafactor import Adafactor class AdafactorTest(testing.TestCase): diff --git a/keras/optimizers/adagrad.py b/keras/src/optimizers/adagrad.py similarity index 95% rename from keras/optimizers/adagrad.py rename to keras/src/optimizers/adagrad.py index 9e28644f9951..836356ba13c2 100644 --- a/keras/optimizers/adagrad.py +++ b/keras/src/optimizers/adagrad.py @@ -1,7 +1,7 @@ -from keras import initializers -from keras import ops -from keras.api_export import keras_export -from keras.optimizers import optimizer +from keras.src import initializers +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.optimizers import optimizer @keras_export(["keras.optimizers.Adagrad"]) diff --git a/keras/optimizers/adagrad_test.py b/keras/src/optimizers/adagrad_test.py similarity index 95% rename from keras/optimizers/adagrad_test.py rename to keras/src/optimizers/adagrad_test.py index a724540fad16..43d2bcbd7afa 100644 --- a/keras/optimizers/adagrad_test.py +++ b/keras/src/optimizers/adagrad_test.py @@ -3,10 +3,10 @@ import numpy as np -from keras import backend -from keras import ops -from keras import testing -from keras.optimizers.adagrad import Adagrad +from keras.src import backend +from keras.src import ops +from keras.src import testing +from keras.src.optimizers.adagrad import Adagrad class AdagradTest(testing.TestCase): diff --git a/keras/optimizers/adam.py b/keras/src/optimizers/adam.py similarity index 97% rename from keras/optimizers/adam.py rename to keras/src/optimizers/adam.py index f1db87ff9b77..585819322404 100644 --- a/keras/optimizers/adam.py +++ b/keras/src/optimizers/adam.py @@ -1,6 +1,6 @@ -from keras import ops -from keras.api_export import keras_export -from keras.optimizers import optimizer +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.optimizers import optimizer @keras_export(["keras.optimizers.Adam"]) diff --git a/keras/optimizers/adam_test.py b/keras/src/optimizers/adam_test.py similarity index 96% rename from keras/optimizers/adam_test.py rename to keras/src/optimizers/adam_test.py index 1dcc876a1ddc..6f8430d3c75d 100644 --- a/keras/optimizers/adam_test.py +++ b/keras/src/optimizers/adam_test.py @@ -2,10 +2,10 @@ import pytest import keras -from keras import backend -from keras import ops -from keras import testing -from keras.optimizers.adam import Adam +from keras.src import backend +from keras.src import ops +from keras.src import testing +from keras.src.optimizers.adam import Adam class AdamTest(testing.TestCase): diff --git a/keras/optimizers/adamax.py b/keras/src/optimizers/adamax.py similarity index 97% rename from keras/optimizers/adamax.py rename to keras/src/optimizers/adamax.py index 870dfc0aeeab..338afcc5735c 100644 --- a/keras/optimizers/adamax.py +++ b/keras/src/optimizers/adamax.py @@ -1,6 +1,6 @@ -from keras import ops -from keras.api_export import keras_export -from keras.optimizers import optimizer +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.optimizers import optimizer @keras_export(["keras.optimizers.Adamax"]) diff --git a/keras/optimizers/adamax_test.py b/keras/src/optimizers/adamax_test.py similarity index 95% rename from keras/optimizers/adamax_test.py rename to keras/src/optimizers/adamax_test.py index f040d508b6a2..4084ade7450d 100644 --- a/keras/optimizers/adamax_test.py +++ b/keras/src/optimizers/adamax_test.py @@ -3,10 +3,10 @@ import numpy as np -from keras import backend -from keras import ops -from keras import testing -from keras.optimizers.adamax import Adamax +from keras.src import backend +from keras.src import ops +from keras.src import testing +from keras.src.optimizers.adamax import Adamax class AdamaxTest(testing.TestCase): diff --git a/keras/optimizers/adamw.py b/keras/src/optimizers/adamw.py similarity index 96% rename from keras/optimizers/adamw.py rename to keras/src/optimizers/adamw.py index cda4e5bd4558..e52d3b7188a1 100644 --- a/keras/optimizers/adamw.py +++ b/keras/src/optimizers/adamw.py @@ -1,6 +1,6 @@ -from keras.api_export import keras_export -from keras.optimizers import adam -from keras.optimizers import optimizer +from keras.src.api_export import keras_export +from keras.src.optimizers import adam +from keras.src.optimizers import optimizer @keras_export(["keras.optimizers.AdamW"]) diff --git a/keras/optimizers/adamw_test.py b/keras/src/optimizers/adamw_test.py similarity index 95% rename from keras/optimizers/adamw_test.py rename to keras/src/optimizers/adamw_test.py index 37ee3865a27c..efe71ef87e38 100644 --- a/keras/optimizers/adamw_test.py +++ b/keras/src/optimizers/adamw_test.py @@ -3,10 +3,10 @@ import numpy as np -from keras import backend -from keras import ops -from keras import testing -from keras.optimizers.adamw import AdamW +from keras.src import backend +from keras.src import ops +from keras.src import testing +from keras.src.optimizers.adamw import AdamW class AdamWTest(testing.TestCase): diff --git a/keras/optimizers/base_optimizer.py b/keras/src/optimizers/base_optimizer.py similarity index 99% rename from keras/optimizers/base_optimizer.py rename to keras/src/optimizers/base_optimizer.py index 8da8ffaf52a3..b368a203bebf 100644 --- a/keras/optimizers/base_optimizer.py +++ b/keras/src/optimizers/base_optimizer.py @@ -3,13 +3,13 @@ import numpy as np -from keras import backend -from keras import initializers -from keras import ops -from keras.optimizers.schedules import learning_rate_schedule -from keras.saving import serialization_lib -from keras.utils import tracking -from keras.utils.naming import auto_name +from keras.src import backend +from keras.src import initializers +from keras.src import ops +from keras.src.optimizers.schedules import learning_rate_schedule +from keras.src.saving import serialization_lib +from keras.src.utils import tracking +from keras.src.utils.naming import auto_name class BaseOptimizer: diff --git a/keras/optimizers/ftrl.py b/keras/src/optimizers/ftrl.py similarity index 98% rename from keras/optimizers/ftrl.py rename to keras/src/optimizers/ftrl.py index 05930db69fac..1bb56518dc9d 100644 --- a/keras/optimizers/ftrl.py +++ b/keras/src/optimizers/ftrl.py @@ -1,7 +1,7 @@ -from keras import initializers -from keras import ops -from keras.api_export import keras_export -from keras.optimizers import optimizer +from keras.src import initializers +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.optimizers import optimizer @keras_export(["keras.optimizers.Ftrl"]) diff --git a/keras/optimizers/ftrl_test.py b/keras/src/optimizers/ftrl_test.py similarity index 96% rename from keras/optimizers/ftrl_test.py rename to keras/src/optimizers/ftrl_test.py index c1688b8c2bef..4e27f25d0ff3 100644 --- a/keras/optimizers/ftrl_test.py +++ b/keras/src/optimizers/ftrl_test.py @@ -3,9 +3,9 @@ import numpy as np -from keras import backend -from keras import testing -from keras.optimizers.ftrl import Ftrl +from keras.src import backend +from keras.src import testing +from keras.src.optimizers.ftrl import Ftrl class FtrlTest(testing.TestCase): diff --git a/keras/optimizers/lion.py b/keras/src/optimizers/lion.py similarity index 97% rename from keras/optimizers/lion.py rename to keras/src/optimizers/lion.py index 49fb7f309d22..d63e736266b9 100644 --- a/keras/optimizers/lion.py +++ b/keras/src/optimizers/lion.py @@ -1,6 +1,6 @@ -from keras import ops -from keras.api_export import keras_export -from keras.optimizers import optimizer +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.optimizers import optimizer @keras_export(["keras.optimizers.Lion"]) diff --git a/keras/optimizers/lion_test.py b/keras/src/optimizers/lion_test.py similarity index 95% rename from keras/optimizers/lion_test.py rename to keras/src/optimizers/lion_test.py index b9cf8f1263cd..b62773a426f2 100644 --- a/keras/optimizers/lion_test.py +++ b/keras/src/optimizers/lion_test.py @@ -2,10 +2,10 @@ import pytest import keras -from keras import backend -from keras import ops -from keras import testing -from keras.optimizers.lion import Lion +from keras.src import backend +from keras.src import ops +from keras.src import testing +from keras.src.optimizers.lion import Lion class LionTest(testing.TestCase): diff --git a/keras/optimizers/loss_scale_optimizer.py b/keras/src/optimizers/loss_scale_optimizer.py similarity index 97% rename from keras/optimizers/loss_scale_optimizer.py rename to keras/src/optimizers/loss_scale_optimizer.py index e032ca6c0412..42306685eee1 100644 --- a/keras/optimizers/loss_scale_optimizer.py +++ b/keras/src/optimizers/loss_scale_optimizer.py @@ -1,10 +1,10 @@ -from keras import backend -from keras import initializers -from keras import ops -from keras.api_export import keras_export -from keras.optimizers import optimizer -from keras.saving import serialization_lib -from keras.utils import tracking +from keras.src import backend +from keras.src import initializers +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.optimizers import optimizer +from keras.src.saving import serialization_lib +from keras.src.utils import tracking @keras_export( @@ -207,7 +207,7 @@ def _common_apply(self, grads, trainable_variables=None): def _tf_apply(self, grads, trainable_variables=None): """Tensorflow specific logic for apply, which handles distribution.""" - from keras.utils.module_utils import tensorflow as tf + from keras.src.utils.module_utils import tensorflow as tf if tf.distribute.in_cross_replica_context(): raise ValueError("apply() must be called in a replica context.") diff --git a/keras/optimizers/loss_scale_optimizer_test.py b/keras/src/optimizers/loss_scale_optimizer_test.py similarity index 95% rename from keras/optimizers/loss_scale_optimizer_test.py rename to keras/src/optimizers/loss_scale_optimizer_test.py index 28a81ea8c0f9..ace067f1ab1d 100644 --- a/keras/optimizers/loss_scale_optimizer_test.py +++ b/keras/src/optimizers/loss_scale_optimizer_test.py @@ -1,11 +1,11 @@ import numpy as np from absl.testing import parameterized -from keras import backend -from keras import ops -from keras import testing -from keras.optimizers.loss_scale_optimizer import LossScaleOptimizer -from keras.optimizers.sgd import SGD +from keras.src import backend +from keras.src import ops +from keras.src import testing +from keras.src.optimizers.loss_scale_optimizer import LossScaleOptimizer +from keras.src.optimizers.sgd import SGD class LossScaleOptimizerTest(testing.TestCase, parameterized.TestCase): diff --git a/keras/optimizers/nadam.py b/keras/src/optimizers/nadam.py similarity index 97% rename from keras/optimizers/nadam.py rename to keras/src/optimizers/nadam.py index d9b74d9d1942..77454e9f94f9 100644 --- a/keras/optimizers/nadam.py +++ b/keras/src/optimizers/nadam.py @@ -1,7 +1,7 @@ -from keras import backend -from keras import ops -from keras.api_export import keras_export -from keras.optimizers import optimizer +from keras.src import backend +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.optimizers import optimizer @keras_export(["keras.optimizers.Nadam"]) diff --git a/keras/optimizers/nadam_test.py b/keras/src/optimizers/nadam_test.py similarity index 96% rename from keras/optimizers/nadam_test.py rename to keras/src/optimizers/nadam_test.py index c50d070b8ca3..8a6c85034472 100644 --- a/keras/optimizers/nadam_test.py +++ b/keras/src/optimizers/nadam_test.py @@ -3,10 +3,10 @@ import numpy as np -from keras import backend -from keras import ops -from keras import testing -from keras.optimizers.nadam import Nadam +from keras.src import backend +from keras.src import ops +from keras.src import testing +from keras.src.optimizers.nadam import Nadam class NadamTest(testing.TestCase): diff --git a/keras/optimizers/optimizer.py b/keras/src/optimizers/optimizer.py similarity index 61% rename from keras/optimizers/optimizer.py rename to keras/src/optimizers/optimizer.py index 7fafbdf1bbeb..cd9c29cfba29 100644 --- a/keras/optimizers/optimizer.py +++ b/keras/src/optimizers/optimizer.py @@ -1,17 +1,17 @@ -from keras import backend -from keras.api_export import keras_export -from keras.optimizers import base_optimizer +from keras.src import backend +from keras.src.api_export import keras_export +from keras.src.optimizers import base_optimizer if backend.backend() == "tensorflow": - from keras.backend.tensorflow.optimizer import ( + from keras.src.backend.tensorflow.optimizer import ( TFOptimizer as BackendOptimizer, ) elif backend.backend() == "torch": - from keras.backend.torch.optimizers import ( + from keras.src.backend.torch.optimizers import ( TorchOptimizer as BackendOptimizer, ) elif backend.backend() == "jax": - from keras.backend.jax.optimizer import JaxOptimizer as BackendOptimizer + from keras.src.backend.jax.optimizer import JaxOptimizer as BackendOptimizer else: class BackendOptimizer(base_optimizer.BaseOptimizer): diff --git a/keras/optimizers/optimizer_sparse_test.py b/keras/src/optimizers/optimizer_sparse_test.py similarity index 98% rename from keras/optimizers/optimizer_sparse_test.py rename to keras/src/optimizers/optimizer_sparse_test.py index a398c53009f8..c06dbd52d6bb 100644 --- a/keras/optimizers/optimizer_sparse_test.py +++ b/keras/src/optimizers/optimizer_sparse_test.py @@ -3,10 +3,10 @@ import pytest from absl.testing import parameterized -from keras import backend -from keras import ops -from keras import optimizers -from keras import testing +from keras.src import backend +from keras.src import ops +from keras.src import optimizers +from keras.src import testing class ScatterUpdateOptimizer(optimizers.Optimizer): diff --git a/keras/optimizers/optimizer_test.py b/keras/src/optimizers/optimizer_test.py similarity index 98% rename from keras/optimizers/optimizer_test.py rename to keras/src/optimizers/optimizer_test.py index 2f8ef0c85151..23d47477907c 100644 --- a/keras/optimizers/optimizer_test.py +++ b/keras/src/optimizers/optimizer_test.py @@ -3,12 +3,12 @@ import numpy as np import pytest -from keras import backend -from keras import constraints -from keras import layers -from keras import models -from keras import optimizers -from keras import testing +from keras.src import backend +from keras.src import constraints +from keras.src import layers +from keras.src import models +from keras.src import optimizers +from keras.src import testing class OptimizerTest(testing.TestCase): diff --git a/keras/optimizers/rmsprop.py b/keras/src/optimizers/rmsprop.py similarity index 98% rename from keras/optimizers/rmsprop.py rename to keras/src/optimizers/rmsprop.py index bf7b13eea244..ad7c4a079c4d 100644 --- a/keras/optimizers/rmsprop.py +++ b/keras/src/optimizers/rmsprop.py @@ -1,6 +1,6 @@ -from keras import ops -from keras.api_export import keras_export -from keras.optimizers import optimizer +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.optimizers import optimizer @keras_export(["keras.optimizers.RMSprop"]) diff --git a/keras/optimizers/rmsprop_test.py b/keras/src/optimizers/rmsprop_test.py similarity index 95% rename from keras/optimizers/rmsprop_test.py rename to keras/src/optimizers/rmsprop_test.py index 862e0b8687dc..f22dc82801bc 100644 --- a/keras/optimizers/rmsprop_test.py +++ b/keras/src/optimizers/rmsprop_test.py @@ -1,9 +1,9 @@ import numpy as np -from keras import backend -from keras import ops -from keras import testing -from keras.optimizers.rmsprop import RMSprop +from keras.src import backend +from keras.src import ops +from keras.src import testing +from keras.src.optimizers.rmsprop import RMSprop class RMSpropTest(testing.TestCase): diff --git a/keras/src/optimizers/schedules/__init__.py b/keras/src/optimizers/schedules/__init__.py new file mode 100644 index 000000000000..a6812ebb0827 --- /dev/null +++ b/keras/src/optimizers/schedules/__init__.py @@ -0,0 +1,16 @@ +from keras.src.optimizers.schedules.learning_rate_schedule import CosineDecay +from keras.src.optimizers.schedules.learning_rate_schedule import ( + CosineDecayRestarts, +) +from keras.src.optimizers.schedules.learning_rate_schedule import ( + ExponentialDecay, +) +from keras.src.optimizers.schedules.learning_rate_schedule import ( + InverseTimeDecay, +) +from keras.src.optimizers.schedules.learning_rate_schedule import ( + PiecewiseConstantDecay, +) +from keras.src.optimizers.schedules.learning_rate_schedule import ( + PolynomialDecay, +) diff --git a/keras/optimizers/schedules/learning_rate_schedule.py b/keras/src/optimizers/schedules/learning_rate_schedule.py similarity index 99% rename from keras/optimizers/schedules/learning_rate_schedule.py rename to keras/src/optimizers/schedules/learning_rate_schedule.py index 3b95bf59ea0c..74c13aafbe53 100644 --- a/keras/optimizers/schedules/learning_rate_schedule.py +++ b/keras/src/optimizers/schedules/learning_rate_schedule.py @@ -2,9 +2,9 @@ import math -from keras import ops -from keras.api_export import keras_export -from keras.saving import serialization_lib +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.saving import serialization_lib @keras_export("keras.optimizers.schedules.LearningRateSchedule") diff --git a/keras/optimizers/schedules/learning_rate_schedule_test.py b/keras/src/optimizers/schedules/learning_rate_schedule_test.py similarity index 98% rename from keras/optimizers/schedules/learning_rate_schedule_test.py rename to keras/src/optimizers/schedules/learning_rate_schedule_test.py index 56e0c2d3c28f..052db9e93945 100644 --- a/keras/optimizers/schedules/learning_rate_schedule_test.py +++ b/keras/src/optimizers/schedules/learning_rate_schedule_test.py @@ -5,12 +5,12 @@ import numpy as np import pytest -from keras import backend -from keras import layers -from keras import optimizers -from keras import testing -from keras.models import Sequential -from keras.optimizers import schedules +from keras.src import backend +from keras.src import layers +from keras.src import optimizers +from keras.src import testing +from keras.src.models import Sequential +from keras.src.optimizers import schedules class TestFitLRSchedulesFlow(testing.TestCase): diff --git a/keras/optimizers/sgd.py b/keras/src/optimizers/sgd.py similarity index 97% rename from keras/optimizers/sgd.py rename to keras/src/optimizers/sgd.py index 3880bb7caa2d..85a8c8647445 100644 --- a/keras/optimizers/sgd.py +++ b/keras/src/optimizers/sgd.py @@ -1,6 +1,6 @@ -from keras import ops -from keras.api_export import keras_export -from keras.optimizers import optimizer +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.optimizers import optimizer @keras_export("keras.optimizers.SGD") diff --git a/keras/optimizers/sgd_test.py b/keras/src/optimizers/sgd_test.py similarity index 96% rename from keras/optimizers/sgd_test.py rename to keras/src/optimizers/sgd_test.py index b8eaeaff7d53..a0fc2d46c53b 100644 --- a/keras/optimizers/sgd_test.py +++ b/keras/src/optimizers/sgd_test.py @@ -2,10 +2,10 @@ import numpy as np -from keras import backend -from keras import ops -from keras import testing -from keras.optimizers.sgd import SGD +from keras.src import backend +from keras.src import ops +from keras.src import testing +from keras.src.optimizers.sgd import SGD class SGDTest(testing.TestCase): diff --git a/keras/quantizers/__init__.py b/keras/src/quantizers/__init__.py similarity index 70% rename from keras/quantizers/__init__.py rename to keras/src/quantizers/__init__.py index 1cecf1902d15..b12d5cc84d70 100644 --- a/keras/quantizers/__init__.py +++ b/keras/src/quantizers/__init__.py @@ -1,14 +1,14 @@ import inspect -from keras.api_export import keras_export -from keras.quantizers.quantizers import AbsMaxQuantizer -from keras.quantizers.quantizers import Quantizer -from keras.quantizers.quantizers import abs_max_quantize -from keras.quantizers.quantizers import compute_float8_amax_history -from keras.quantizers.quantizers import compute_float8_scale -from keras.quantizers.quantizers import quantize_and_dequantize -from keras.saving import serialization_lib -from keras.utils.naming import to_snake_case +from keras.src.api_export import keras_export +from keras.src.quantizers.quantizers import AbsMaxQuantizer +from keras.src.quantizers.quantizers import Quantizer +from keras.src.quantizers.quantizers import abs_max_quantize +from keras.src.quantizers.quantizers import compute_float8_amax_history +from keras.src.quantizers.quantizers import compute_float8_scale +from keras.src.quantizers.quantizers import quantize_and_dequantize +from keras.src.saving import serialization_lib +from keras.src.utils.naming import to_snake_case ALL_OBJECTS = {Quantizer, AbsMaxQuantizer} ALL_OBJECTS_DICT = {cls.__name__: cls for cls in ALL_OBJECTS} diff --git a/keras/quantizers/quantizers.py b/keras/src/quantizers/quantizers.py similarity index 97% rename from keras/quantizers/quantizers.py rename to keras/src/quantizers/quantizers.py index 5c8a4425cbad..ccf7cc42de06 100644 --- a/keras/quantizers/quantizers.py +++ b/keras/src/quantizers/quantizers.py @@ -1,8 +1,8 @@ import ml_dtypes -from keras import backend -from keras import ops -from keras.api_export import keras_export +from keras.src import backend +from keras.src import ops +from keras.src.api_export import keras_export """Int8-related classes and methods""" diff --git a/keras/quantizers/quantizers_test.py b/keras/src/quantizers/quantizers_test.py similarity index 96% rename from keras/quantizers/quantizers_test.py rename to keras/src/quantizers/quantizers_test.py index bf68fd36fbd1..83702bc20f56 100644 --- a/keras/quantizers/quantizers_test.py +++ b/keras/src/quantizers/quantizers_test.py @@ -1,7 +1,7 @@ -from keras import ops -from keras import quantizers -from keras import random -from keras import testing +from keras.src import ops +from keras.src import quantizers +from keras.src import random +from keras.src import testing class QuantizersTest(testing.TestCase): diff --git a/keras/src/random/__init__.py b/keras/src/random/__init__.py new file mode 100644 index 000000000000..4ba54c78837c --- /dev/null +++ b/keras/src/random/__init__.py @@ -0,0 +1,9 @@ +from keras.src.random.random import categorical +from keras.src.random.random import dropout +from keras.src.random.random import gamma +from keras.src.random.random import normal +from keras.src.random.random import randint +from keras.src.random.random import shuffle +from keras.src.random.random import truncated_normal +from keras.src.random.random import uniform +from keras.src.random.seed_generator import SeedGenerator diff --git a/keras/random/random.py b/keras/src/random/random.py similarity index 99% rename from keras/random/random.py rename to keras/src/random/random.py index 5e874f9e46db..72282921de7b 100644 --- a/keras/random/random.py +++ b/keras/src/random/random.py @@ -1,5 +1,5 @@ -from keras import backend -from keras.api_export import keras_export +from keras.src import backend +from keras.src.api_export import keras_export @keras_export("keras.random.normal") diff --git a/keras/random/random_test.py b/keras/src/random/random_test.py similarity index 97% rename from keras/random/random_test.py rename to keras/src/random/random_test.py index 95fdfe831121..a7358edbc253 100644 --- a/keras/random/random_test.py +++ b/keras/src/random/random_test.py @@ -3,15 +3,15 @@ from absl.testing import parameterized import keras -from keras import backend -from keras import ops -from keras import testing -from keras.backend.common import dtypes -from keras.backend.common import standardize_dtype -from keras.random import random -from keras.random import seed_generator -from keras.testing.test_utils import named_product -from keras.utils.rng_utils import set_random_seed +from keras.src import backend +from keras.src import ops +from keras.src import testing +from keras.src.backend.common import dtypes +from keras.src.backend.common import standardize_dtype +from keras.src.random import random +from keras.src.random import seed_generator +from keras.src.testing.test_utils import named_product +from keras.src.utils.rng_utils import set_random_seed class RandomTest(testing.TestCase, parameterized.TestCase): @@ -129,7 +129,7 @@ def test_dropout_jax_jit_stateless(self): @jax.jit def train_step(x): - with keras.backend.StatelessScope(): + with keras.src.backend.StatelessScope(): x = keras.layers.Dropout(rate=0.1)(x, training=True) return x diff --git a/keras/random/seed_generator.py b/keras/src/random/seed_generator.py similarity index 94% rename from keras/random/seed_generator.py rename to keras/src/random/seed_generator.py index ce4e4b1880a2..3dfcd5615640 100644 --- a/keras/random/seed_generator.py +++ b/keras/src/random/seed_generator.py @@ -2,11 +2,11 @@ import numpy as np -from keras import backend -from keras.api_export import keras_export -from keras.backend.common import global_state -from keras.utils import jax_utils -from keras.utils.naming import auto_name +from keras.src import backend +from keras.src.api_export import keras_export +from keras.src.backend.common import global_state +from keras.src.utils import jax_utils +from keras.src.utils.naming import auto_name @keras_export("keras.random.SeedGenerator") @@ -132,7 +132,7 @@ def make_default_seed(): def draw_seed(seed): - from keras.backend import convert_to_tensor + from keras.src.backend import convert_to_tensor if isinstance(seed, SeedGenerator): return seed.next() diff --git a/keras/random/seed_generator_test.py b/keras/src/random/seed_generator_test.py similarity index 95% rename from keras/random/seed_generator_test.py rename to keras/src/random/seed_generator_test.py index f0a6dd179f57..9ab5c132fdd0 100644 --- a/keras/random/seed_generator_test.py +++ b/keras/src/random/seed_generator_test.py @@ -1,10 +1,10 @@ import numpy as np import pytest -from keras import backend -from keras import ops -from keras import testing -from keras.random import seed_generator +from keras.src import backend +from keras.src import ops +from keras.src import testing +from keras.src.random import seed_generator class SeedGeneratorTest(testing.TestCase): diff --git a/keras/regularizers/__init__.py b/keras/src/regularizers/__init__.py similarity index 75% rename from keras/regularizers/__init__.py rename to keras/src/regularizers/__init__.py index b31d1904bfe3..64ffad22a6e4 100644 --- a/keras/regularizers/__init__.py +++ b/keras/src/regularizers/__init__.py @@ -1,13 +1,13 @@ import inspect -from keras.api_export import keras_export -from keras.regularizers.regularizers import L1 -from keras.regularizers.regularizers import L1L2 -from keras.regularizers.regularizers import L2 -from keras.regularizers.regularizers import OrthogonalRegularizer -from keras.regularizers.regularizers import Regularizer -from keras.saving import serialization_lib -from keras.utils.naming import to_snake_case +from keras.src.api_export import keras_export +from keras.src.regularizers.regularizers import L1 +from keras.src.regularizers.regularizers import L1L2 +from keras.src.regularizers.regularizers import L2 +from keras.src.regularizers.regularizers import OrthogonalRegularizer +from keras.src.regularizers.regularizers import Regularizer +from keras.src.saving import serialization_lib +from keras.src.utils.naming import to_snake_case ALL_OBJECTS = { Regularizer, diff --git a/keras/regularizers/regularizers.py b/keras/src/regularizers/regularizers.py similarity index 98% rename from keras/regularizers/regularizers.py rename to keras/src/regularizers/regularizers.py index 56d3ec6d09b8..99459fe32fb7 100644 --- a/keras/regularizers/regularizers.py +++ b/keras/src/regularizers/regularizers.py @@ -1,8 +1,8 @@ import math -from keras import ops -from keras.api_export import keras_export -from keras.utils.numerical_utils import normalize +from keras.src import ops +from keras.src.api_export import keras_export +from keras.src.utils.numerical_utils import normalize @keras_export(["keras.Regularizer", "keras.regularizers.Regularizer"]) diff --git a/keras/regularizers/regularizers_test.py b/keras/src/regularizers/regularizers_test.py similarity index 97% rename from keras/regularizers/regularizers_test.py rename to keras/src/regularizers/regularizers_test.py index c728f3fefa3c..288f494ede2f 100644 --- a/keras/regularizers/regularizers_test.py +++ b/keras/src/regularizers/regularizers_test.py @@ -1,9 +1,9 @@ import numpy as np -from keras import backend -from keras import regularizers -from keras import testing -from keras.regularizers.regularizers import validate_float_arg +from keras.src import backend +from keras.src import regularizers +from keras.src import testing +from keras.src.regularizers.regularizers import validate_float_arg class RegularizersTest(testing.TestCase): diff --git a/keras/src/saving/__init__.py b/keras/src/saving/__init__.py new file mode 100644 index 000000000000..3af25ce633af --- /dev/null +++ b/keras/src/saving/__init__.py @@ -0,0 +1,9 @@ +from keras.src.saving.object_registration import CustomObjectScope +from keras.src.saving.object_registration import custom_object_scope +from keras.src.saving.object_registration import get_custom_objects +from keras.src.saving.object_registration import get_registered_name +from keras.src.saving.object_registration import get_registered_object +from keras.src.saving.object_registration import register_keras_serializable +from keras.src.saving.saving_api import load_model +from keras.src.saving.serialization_lib import deserialize_keras_object +from keras.src.saving.serialization_lib import serialize_keras_object diff --git a/keras/saving/object_registration.py b/keras/src/saving/object_registration.py similarity index 98% rename from keras/saving/object_registration.py rename to keras/src/saving/object_registration.py index ee910ed954b7..978e4f762a67 100644 --- a/keras/saving/object_registration.py +++ b/keras/src/saving/object_registration.py @@ -1,7 +1,7 @@ import inspect -from keras.api_export import keras_export -from keras.backend.common import global_state +from keras.src.api_export import keras_export +from keras.src.backend.common import global_state GLOBAL_CUSTOM_OBJECTS = {} GLOBAL_CUSTOM_NAMES = {} diff --git a/keras/saving/object_registration_test.py b/keras/src/saving/object_registration_test.py similarity index 97% rename from keras/saving/object_registration_test.py rename to keras/src/saving/object_registration_test.py index 4da7606dd454..ece59e7e208a 100644 --- a/keras/saving/object_registration_test.py +++ b/keras/src/saving/object_registration_test.py @@ -1,7 +1,7 @@ import keras -from keras import testing -from keras.saving import object_registration -from keras.saving import serialization_lib +from keras.src import testing +from keras.src.saving import object_registration +from keras.src.saving import serialization_lib class TestObjectRegistration(testing.TestCase): diff --git a/keras/saving/saving_api.py b/keras/src/saving/saving_api.py similarity index 97% rename from keras/saving/saving_api.py rename to keras/src/saving/saving_api.py index cec7c3e793ee..a99ddae8008d 100644 --- a/keras/saving/saving_api.py +++ b/keras/src/saving/saving_api.py @@ -3,11 +3,11 @@ from absl import logging -from keras.api_export import keras_export -from keras.legacy.saving import legacy_h5_format -from keras.saving import saving_lib -from keras.utils import file_utils -from keras.utils import io_utils +from keras.src.api_export import keras_export +from keras.src.legacy.saving import legacy_h5_format +from keras.src.saving import saving_lib +from keras.src.utils import file_utils +from keras.src.utils import io_utils try: import h5py diff --git a/keras/saving/saving_api_test.py b/keras/src/saving/saving_api_test.py similarity index 97% rename from keras/saving/saving_api_test.py rename to keras/src/saving/saving_api_test.py index 8201c3e0a57a..024fae99678d 100644 --- a/keras/saving/saving_api_test.py +++ b/keras/src/saving/saving_api_test.py @@ -5,11 +5,11 @@ from absl import logging from absl.testing import parameterized -from keras import layers -from keras.models import Sequential -from keras.saving import saving_api -from keras.testing import test_case -from keras.testing.test_utils import named_product +from keras.src import layers +from keras.src.models import Sequential +from keras.src.saving import saving_api +from keras.src.testing import test_case +from keras.src.testing.test_utils import named_product class SaveModelTests(test_case.TestCase): diff --git a/keras/saving/saving_lib.py b/keras/src/saving/saving_lib.py similarity index 97% rename from keras/saving/saving_lib.py rename to keras/src/saving/saving_lib.py index 187e58aa9dea..7de68802e91c 100644 --- a/keras/saving/saving_lib.py +++ b/keras/src/saving/saving_lib.py @@ -10,19 +10,19 @@ import ml_dtypes import numpy as np -from keras import backend -from keras.backend.common import global_state -from keras.layers.layer import Layer -from keras.losses.loss import Loss -from keras.metrics.metric import Metric -from keras.optimizers.optimizer import Optimizer -from keras.saving.serialization_lib import ObjectSharingScope -from keras.saving.serialization_lib import deserialize_keras_object -from keras.saving.serialization_lib import serialize_keras_object -from keras.trainers.compile_utils import CompileMetrics -from keras.utils import file_utils -from keras.utils import naming -from keras.version import __version__ as keras_version +from keras.src import backend +from keras.src.backend.common import global_state +from keras.src.layers.layer import Layer +from keras.src.losses.loss import Loss +from keras.src.metrics.metric import Metric +from keras.src.optimizers.optimizer import Optimizer +from keras.src.saving.serialization_lib import ObjectSharingScope +from keras.src.saving.serialization_lib import deserialize_keras_object +from keras.src.saving.serialization_lib import serialize_keras_object +from keras.src.trainers.compile_utils import CompileMetrics +from keras.src.utils import file_utils +from keras.src.utils import naming +from keras.src.version import __version__ as keras_version try: import h5py @@ -319,8 +319,8 @@ def _name_key(name): def _walk_trackable(trackable): - from keras.models import Functional - from keras.models import Sequential + from keras.src.models import Functional + from keras.src.models import Sequential if isinstance(trackable, Sequential): obj_type = "Sequential" diff --git a/keras/saving/saving_lib_test.py b/keras/src/saving/saving_lib_test.py similarity index 99% rename from keras/saving/saving_lib_test.py rename to keras/src/saving/saving_lib_test.py index 5b3ee214824f..6b2d483d7591 100644 --- a/keras/saving/saving_lib_test.py +++ b/keras/src/saving/saving_lib_test.py @@ -12,9 +12,9 @@ import pytest import keras -from keras import ops -from keras import testing -from keras.saving import saving_lib +from keras.src import ops +from keras.src import testing +from keras.src.saving import saving_lib @keras.saving.register_keras_serializable(package="my_custom_package") @@ -614,7 +614,7 @@ def test_save_to_fileobj(self) -> None: @pytest.mark.requires_trainable_backend class SavingAPITest(testing.TestCase): def test_saving_api_errors(self): - from keras.saving import saving_api + from keras.src.saving import saving_api model = _get_basic_functional_model() diff --git a/keras/saving/serialization_lib.py b/keras/src/saving/serialization_lib.py similarity index 98% rename from keras/saving/serialization_lib.py rename to keras/src/saving/serialization_lib.py index 327cefcc0949..40125572809b 100644 --- a/keras/saving/serialization_lib.py +++ b/keras/src/saving/serialization_lib.py @@ -7,13 +7,13 @@ import numpy as np -from keras import api_export -from keras import backend -from keras.api_export import keras_export -from keras.backend.common import global_state -from keras.saving import object_registration -from keras.utils import python_utils -from keras.utils.module_utils import tensorflow as tf +from keras.src import api_export +from keras.src import backend +from keras.src.api_export import keras_export +from keras.src.backend.common import global_state +from keras.src.saving import object_registration +from keras.src.utils import python_utils +from keras.src.utils.module_utils import tensorflow as tf PLAIN_TYPES = (str, int, float, bool) diff --git a/keras/saving/serialization_lib_test.py b/keras/src/saving/serialization_lib_test.py similarity index 99% rename from keras/saving/serialization_lib_test.py rename to keras/src/saving/serialization_lib_test.py index 701a903d661f..06ed6ac7198f 100644 --- a/keras/saving/serialization_lib_test.py +++ b/keras/src/saving/serialization_lib_test.py @@ -6,9 +6,9 @@ import pytest import keras -from keras import ops -from keras import testing -from keras.saving import serialization_lib +from keras.src import ops +from keras.src import testing +from keras.src.saving import serialization_lib def custom_fn(x): diff --git a/keras/src/testing/__init__.py b/keras/src/testing/__init__.py new file mode 100644 index 000000000000..ae554ff85857 --- /dev/null +++ b/keras/src/testing/__init__.py @@ -0,0 +1,5 @@ +from keras.src.testing.test_case import TestCase +from keras.src.testing.test_case import jax_uses_gpu +from keras.src.testing.test_case import tensorflow_uses_gpu +from keras.src.testing.test_case import torch_uses_gpu +from keras.src.testing.test_case import uses_gpu diff --git a/keras/testing/test_case.py b/keras/src/testing/test_case.py similarity index 97% rename from keras/testing/test_case.py rename to keras/src/testing/test_case.py index 74656e6f0efb..0b6fd9d40f3f 100644 --- a/keras/testing/test_case.py +++ b/keras/src/testing/test_case.py @@ -5,17 +5,17 @@ import numpy as np -from keras import backend -from keras import distribution -from keras import ops -from keras import tree -from keras import utils -from keras.backend.common import is_float_dtype -from keras.backend.common import standardize_dtype -from keras.backend.common.global_state import clear_session -from keras.backend.common.keras_tensor import KerasTensor -from keras.models import Model -from keras.utils import traceback_utils +from keras.src import backend +from keras.src import distribution +from keras.src import ops +from keras.src import tree +from keras.src import utils +from keras.src.backend.common import is_float_dtype +from keras.src.backend.common import standardize_dtype +from keras.src.backend.common.global_state import clear_session +from keras.src.backend.common.keras_tensor import KerasTensor +from keras.src.models import Model +from keras.src.utils import traceback_utils class TestCase(unittest.TestCase): @@ -100,9 +100,9 @@ def assertSparse(self, x, sparse=True): ) def run_class_serialization_test(self, instance, custom_objects=None): - from keras.saving import custom_object_scope - from keras.saving import deserialize_keras_object - from keras.saving import serialize_keras_object + from keras.src.saving import custom_object_scope + from keras.src.saving import deserialize_keras_object + from keras.src.saving import serialize_keras_object # get_config roundtrip cls = instance.__class__ @@ -599,7 +599,7 @@ def create_keras_tensors(input_shape, dtype, sparse): def create_eager_tensors(input_shape, dtype, sparse): - from keras.backend import random + from keras.src.backend import random if set(tree.flatten(dtype)).difference( ["float16", "float32", "float64", "int16", "int32", "int64"] diff --git a/keras/testing/test_utils.py b/keras/src/testing/test_utils.py similarity index 100% rename from keras/testing/test_utils.py rename to keras/src/testing/test_utils.py diff --git a/keras/testing/test_utils_test.py b/keras/src/testing/test_utils_test.py similarity index 99% rename from keras/testing/test_utils_test.py rename to keras/src/testing/test_utils_test.py index c7bb9b6a86e2..f0b6591c79de 100644 --- a/keras/testing/test_utils_test.py +++ b/keras/src/testing/test_utils_test.py @@ -1,8 +1,8 @@ import numpy as np from absl.testing import parameterized -from keras.testing import test_case -from keras.testing import test_utils +from keras.src.testing import test_case +from keras.src.testing import test_utils class GetTestDataTest(test_case.TestCase): diff --git a/keras/trainers/__init__.py b/keras/src/trainers/__init__.py similarity index 100% rename from keras/trainers/__init__.py rename to keras/src/trainers/__init__.py diff --git a/keras/trainers/compile_utils.py b/keras/src/trainers/compile_utils.py similarity index 99% rename from keras/trainers/compile_utils.py rename to keras/src/trainers/compile_utils.py index 2049d4b8546b..729c26921336 100644 --- a/keras/trainers/compile_utils.py +++ b/keras/src/trainers/compile_utils.py @@ -1,9 +1,9 @@ -from keras import backend -from keras import losses as losses_module -from keras import metrics as metrics_module -from keras import ops -from keras import tree -from keras.utils.naming import get_object_name +from keras.src import backend +from keras.src import losses as losses_module +from keras.src import metrics as metrics_module +from keras.src import ops +from keras.src import tree +from keras.src.utils.naming import get_object_name class MetricsList(metrics_module.Metric): diff --git a/keras/trainers/compile_utils_test.py b/keras/src/trainers/compile_utils_test.py similarity index 97% rename from keras/trainers/compile_utils_test.py rename to keras/src/trainers/compile_utils_test.py index 0d53dcacc352..122a9f357f69 100644 --- a/keras/trainers/compile_utils_test.py +++ b/keras/src/trainers/compile_utils_test.py @@ -1,13 +1,13 @@ import numpy as np from absl.testing import parameterized -from keras import backend -from keras import metrics as losses_module -from keras import metrics as metrics_module -from keras import ops -from keras import testing -from keras.trainers.compile_utils import CompileLoss -from keras.trainers.compile_utils import CompileMetrics +from keras.src import backend +from keras.src import metrics as losses_module +from keras.src import metrics as metrics_module +from keras.src import ops +from keras.src import testing +from keras.src.trainers.compile_utils import CompileLoss +from keras.src.trainers.compile_utils import CompileMetrics class TestCompileMetrics(testing.TestCase): diff --git a/keras/trainers/data_adapters/__init__.py b/keras/src/trainers/data_adapters/__init__.py similarity index 89% rename from keras/trainers/data_adapters/__init__.py rename to keras/src/trainers/data_adapters/__init__.py index 84088342895d..41f2a91f11a0 100644 --- a/keras/trainers/data_adapters/__init__.py +++ b/keras/src/trainers/data_adapters/__init__.py @@ -1,15 +1,15 @@ import types -from keras.distribution import distribution_lib -from keras.trainers.data_adapters import array_data_adapter -from keras.trainers.data_adapters import py_dataset_adapter -from keras.trainers.data_adapters.array_data_adapter import ArrayDataAdapter -from keras.trainers.data_adapters.generator_data_adapter import ( +from keras.src.distribution import distribution_lib +from keras.src.trainers.data_adapters import array_data_adapter +from keras.src.trainers.data_adapters import py_dataset_adapter +from keras.src.trainers.data_adapters.array_data_adapter import ArrayDataAdapter +from keras.src.trainers.data_adapters.generator_data_adapter import ( GeneratorDataAdapter, ) -from keras.trainers.data_adapters.py_dataset_adapter import PyDatasetAdapter -from keras.trainers.data_adapters.tf_dataset_adapter import TFDatasetAdapter -from keras.trainers.data_adapters.torch_data_loader_adapter import ( +from keras.src.trainers.data_adapters.py_dataset_adapter import PyDatasetAdapter +from keras.src.trainers.data_adapters.tf_dataset_adapter import TFDatasetAdapter +from keras.src.trainers.data_adapters.torch_data_loader_adapter import ( TorchDataLoaderAdapter, ) diff --git a/keras/trainers/data_adapters/array_data_adapter.py b/keras/src/trainers/data_adapters/array_data_adapter.py similarity index 97% rename from keras/trainers/data_adapters/array_data_adapter.py rename to keras/src/trainers/data_adapters/array_data_adapter.py index 26cc77e609e2..3832d8e553ae 100644 --- a/keras/trainers/data_adapters/array_data_adapter.py +++ b/keras/src/trainers/data_adapters/array_data_adapter.py @@ -3,10 +3,10 @@ import numpy as np -from keras import tree -from keras.trainers.data_adapters import array_slicing -from keras.trainers.data_adapters import data_adapter_utils -from keras.trainers.data_adapters.data_adapter import DataAdapter +from keras.src import tree +from keras.src.trainers.data_adapters import array_slicing +from keras.src.trainers.data_adapters import data_adapter_utils +from keras.src.trainers.data_adapters.data_adapter import DataAdapter class ArrayDataAdapter(DataAdapter): @@ -103,7 +103,7 @@ def slice_and_convert_to_numpy(sliceable, indices=None): return self._get_iterator(slice_and_convert_to_numpy, inputs) def get_tf_dataset(self): - from keras.utils.module_utils import tensorflow as tf + from keras.src.utils.module_utils import tensorflow as tf shuffle = self._shuffle batch_size = self._batch_size @@ -243,7 +243,7 @@ def grab_one(x): return dataset.prefetch(tf.data.AUTOTUNE) def get_jax_iterator(self): - from keras.backend.jax.core import convert_to_tensor + from keras.src.backend.jax.core import convert_to_tensor inputs = array_slicing.convert_to_sliceable( self._inputs, target_backend="jax" @@ -260,7 +260,7 @@ def slice_and_convert_to_jax(sliceable, indices=None): def get_torch_dataloader(self): import torch - from keras.backend.torch.core import convert_to_tensor + from keras.src.backend.torch.core import convert_to_tensor class ArrayDataset(torch.utils.data.Dataset): def __init__(self, array): diff --git a/keras/trainers/data_adapters/array_data_adapter_test.py b/keras/src/trainers/data_adapters/array_data_adapter_test.py similarity index 98% rename from keras/trainers/data_adapters/array_data_adapter_test.py rename to keras/src/trainers/data_adapters/array_data_adapter_test.py index c1eccc6c290b..46eb4fcc194e 100644 --- a/keras/trainers/data_adapters/array_data_adapter_test.py +++ b/keras/src/trainers/data_adapters/array_data_adapter_test.py @@ -7,10 +7,10 @@ import torch from absl.testing import parameterized -from keras import backend -from keras import testing -from keras.testing.test_utils import named_product -from keras.trainers.data_adapters import array_data_adapter +from keras.src import backend +from keras.src import testing +from keras.src.testing.test_utils import named_product +from keras.src.trainers.data_adapters import array_data_adapter class TestArrayDataAdapter(testing.TestCase, parameterized.TestCase): diff --git a/keras/trainers/data_adapters/array_slicing.py b/keras/src/trainers/data_adapters/array_slicing.py similarity index 95% rename from keras/trainers/data_adapters/array_slicing.py rename to keras/src/trainers/data_adapters/array_slicing.py index eab94fa3ed5b..50279aa11087 100644 --- a/keras/trainers/data_adapters/array_slicing.py +++ b/keras/src/trainers/data_adapters/array_slicing.py @@ -3,9 +3,9 @@ import numpy as np -from keras import backend -from keras import tree -from keras.trainers.data_adapters import data_adapter_utils +from keras.src import backend +from keras.src import tree +from keras.src.trainers.data_adapters import data_adapter_utils try: import pandas @@ -124,7 +124,7 @@ class NumpySliceable(Sliceable): class TensorflowSliceable(Sliceable): def __getitem__(self, indices): - from keras.utils.module_utils import tensorflow as tf + from keras.src.utils.module_utils import tensorflow as tf if isinstance(indices, slice): return self.array[indices] @@ -133,13 +133,13 @@ def __getitem__(self, indices): @classmethod def cast(cls, x, dtype): - from keras.backend.tensorflow.core import cast + from keras.src.backend.tensorflow.core import cast return cast(x, dtype) @classmethod def convert_to_numpy(cls, x): - from keras.backend.tensorflow.core import convert_to_numpy + from keras.src.backend.tensorflow.core import convert_to_numpy return convert_to_numpy(x) @@ -175,7 +175,7 @@ def convert_to_jax_compatible(cls, x): @classmethod def convert_to_torch_compatible(cls, x): - from keras.backend.tensorflow import sparse as tf_sparse + from keras.src.backend.tensorflow import sparse as tf_sparse return tf_sparse.sparse_to_dense(x) @@ -186,7 +186,7 @@ def __getitem__(self, indices): @classmethod def convert_to_numpy(cls, x): - from keras.backend.jax.core import convert_to_numpy + from keras.src.backend.jax.core import convert_to_numpy return convert_to_numpy(x) @@ -206,13 +206,13 @@ def convert_to_torch_compatible(cls, x): class TorchSliceable(Sliceable): @classmethod def cast(cls, x, dtype): - from keras.backend.torch.core import cast + from keras.src.backend.torch.core import cast return cast(x, dtype) @classmethod def convert_to_numpy(cls, x): - from keras.backend.torch.core import convert_to_numpy + from keras.src.backend.torch.core import convert_to_numpy return convert_to_numpy(x) @@ -293,7 +293,7 @@ def convert_to_torch_compatible(cls, x): def to_tensorflow_sparse_wrapper(sparse): - from keras.utils.module_utils import tensorflow as tf + from keras.src.utils.module_utils import tensorflow as tf row_ids = sparse.indices[:, 0] row_splits = tf.experimental.RowPartition.from_value_rowids( @@ -308,7 +308,7 @@ def to_tensorflow_sparse_wrapper(sparse): def slice_tensorflow_sparse_wrapper(sparse_wrapper, indices): - from keras.utils.module_utils import tensorflow as tf + from keras.src.utils.module_utils import tensorflow as tf if isinstance(indices, slice): sparse_indices = sparse_wrapper.ragged_indices[indices] diff --git a/keras/trainers/data_adapters/data_adapter.py b/keras/src/trainers/data_adapters/data_adapter.py similarity index 100% rename from keras/trainers/data_adapters/data_adapter.py rename to keras/src/trainers/data_adapters/data_adapter.py diff --git a/keras/trainers/data_adapters/data_adapter_utils.py b/keras/src/trainers/data_adapters/data_adapter_utils.py similarity index 95% rename from keras/trainers/data_adapters/data_adapter_utils.py rename to keras/src/trainers/data_adapters/data_adapter_utils.py index 7768c9295e24..83dae01e146d 100644 --- a/keras/trainers/data_adapters/data_adapter_utils.py +++ b/keras/src/trainers/data_adapters/data_adapter_utils.py @@ -1,8 +1,8 @@ import numpy as np -from keras import backend -from keras import tree -from keras.api_export import keras_export +from keras.src import backend +from keras.src import tree +from keras.src.api_export import keras_export NUM_BATCHES_FOR_TENSOR_SPEC = 2 @@ -135,7 +135,7 @@ def get_tensor_spec(batches): identical, but the shape at each leaf may be different. Returns: the common tensor spec for all the batches. """ - from keras.utils.module_utils import tensorflow as tf + from keras.src.utils.module_utils import tensorflow as tf def get_single_tensor_spec(*tensors): x = tensors[0] @@ -176,7 +176,7 @@ def get_single_tensor_spec(*tensors): def get_jax_iterator(iterable): - from keras.backend.jax.core import convert_to_tensor + from keras.src.backend.jax.core import convert_to_tensor for batch in iterable: yield tree.map_structure(convert_to_tensor, batch) @@ -201,7 +201,7 @@ def convert_to_numpy(x): def get_torch_dataloader(iterable): import torch.utils.data as torch_data - from keras.backend.torch.core import convert_to_tensor + from keras.src.backend.torch.core import convert_to_tensor class ConverterIterableDataset(torch_data.IterableDataset): def __init__(self, iterable): @@ -279,7 +279,7 @@ def is_scipy_sparse(x): def scipy_sparse_to_tf_sparse(x): - from keras.utils.module_utils import tensorflow as tf + from keras.src.utils.module_utils import tensorflow as tf coo = x.tocoo() indices = np.concatenate( @@ -303,6 +303,6 @@ def tf_sparse_to_jax_sparse(x): def jax_sparse_to_tf_sparse(x): - from keras.utils.module_utils import tensorflow as tf + from keras.src.utils.module_utils import tensorflow as tf return tf.SparseTensor(x.indices, x.data, x.shape) diff --git a/keras/trainers/data_adapters/generator_data_adapter.py b/keras/src/trainers/data_adapters/generator_data_adapter.py similarity index 89% rename from keras/trainers/data_adapters/generator_data_adapter.py rename to keras/src/trainers/data_adapters/generator_data_adapter.py index 6e26c9585ccd..0cbf3d64cf49 100644 --- a/keras/trainers/data_adapters/generator_data_adapter.py +++ b/keras/src/trainers/data_adapters/generator_data_adapter.py @@ -1,8 +1,8 @@ import itertools -from keras import tree -from keras.trainers.data_adapters import data_adapter_utils -from keras.trainers.data_adapters.data_adapter import DataAdapter +from keras.src import tree +from keras.src.trainers.data_adapters import data_adapter_utils +from keras.src.trainers.data_adapters.data_adapter import DataAdapter class GeneratorDataAdapter(DataAdapter): @@ -26,7 +26,7 @@ def get_numpy_iterator(self): return data_adapter_utils.get_numpy_iterator(self.generator) def get_jax_iterator(self): - from keras.backend.jax.core import convert_to_tensor + from keras.src.backend.jax.core import convert_to_tensor def convert_to_jax(x): if data_adapter_utils.is_scipy_sparse(x): @@ -39,7 +39,7 @@ def convert_to_jax(x): yield tree.map_structure(convert_to_jax, batch) def get_tf_dataset(self): - from keras.utils.module_utils import tensorflow as tf + from keras.src.utils.module_utils import tensorflow as tf def convert_to_tf(x): if data_adapter_utils.is_scipy_sparse(x): diff --git a/keras/trainers/data_adapters/generator_data_adapter_test.py b/keras/src/trainers/data_adapters/generator_data_adapter_test.py similarity index 97% rename from keras/trainers/data_adapters/generator_data_adapter_test.py rename to keras/src/trainers/data_adapters/generator_data_adapter_test.py index f06e79610429..4d6ebdc5597c 100644 --- a/keras/trainers/data_adapters/generator_data_adapter_test.py +++ b/keras/src/trainers/data_adapters/generator_data_adapter_test.py @@ -9,9 +9,9 @@ from absl.testing import parameterized from jax import numpy as jnp -from keras import testing -from keras.testing.test_utils import named_product -from keras.trainers.data_adapters import generator_data_adapter +from keras.src import testing +from keras.src.testing.test_utils import named_product +from keras.src.trainers.data_adapters import generator_data_adapter def example_generator(x, y, sample_weight=None, batch_size=32): diff --git a/keras/trainers/data_adapters/py_dataset_adapter.py b/keras/src/trainers/data_adapters/py_dataset_adapter.py similarity index 98% rename from keras/trainers/data_adapters/py_dataset_adapter.py rename to keras/src/trainers/data_adapters/py_dataset_adapter.py index 451d8aa50c0d..71ab2a67736a 100644 --- a/keras/trainers/data_adapters/py_dataset_adapter.py +++ b/keras/src/trainers/data_adapters/py_dataset_adapter.py @@ -9,9 +9,9 @@ import numpy as np -from keras.api_export import keras_export -from keras.trainers.data_adapters import data_adapter_utils -from keras.trainers.data_adapters.data_adapter import DataAdapter +from keras.src.api_export import keras_export +from keras.src.trainers.data_adapters import data_adapter_utils +from keras.src.trainers.data_adapters.data_adapter import DataAdapter @keras_export(["keras.utils.PyDataset", "keras.utils.Sequence"]) @@ -260,7 +260,7 @@ def get_jax_iterator(self): return data_adapter_utils.get_jax_iterator(self._get_iterator()) def get_tf_dataset(self): - from keras.utils.module_utils import tensorflow as tf + from keras.src.utils.module_utils import tensorflow as tf if self._output_signature is None: num_samples = min( diff --git a/keras/trainers/data_adapters/py_dataset_adapter_test.py b/keras/src/trainers/data_adapters/py_dataset_adapter_test.py similarity index 97% rename from keras/trainers/data_adapters/py_dataset_adapter_test.py rename to keras/src/trainers/data_adapters/py_dataset_adapter_test.py index cc88631853dd..b1be7002ac54 100644 --- a/keras/trainers/data_adapters/py_dataset_adapter_test.py +++ b/keras/src/trainers/data_adapters/py_dataset_adapter_test.py @@ -7,10 +7,10 @@ import torch from absl.testing import parameterized -from keras import testing -from keras.testing.test_utils import named_product -from keras.trainers.data_adapters import py_dataset_adapter -from keras.utils.rng_utils import set_random_seed +from keras.src import testing +from keras.src.testing.test_utils import named_product +from keras.src.trainers.data_adapters import py_dataset_adapter +from keras.src.utils.rng_utils import set_random_seed class ExamplePyDataset(py_dataset_adapter.PyDataset): diff --git a/keras/trainers/data_adapters/tf_dataset_adapter.py b/keras/src/trainers/data_adapters/tf_dataset_adapter.py similarity index 89% rename from keras/trainers/data_adapters/tf_dataset_adapter.py rename to keras/src/trainers/data_adapters/tf_dataset_adapter.py index 6f2362dc9b4d..fcd4c9893852 100644 --- a/keras/trainers/data_adapters/tf_dataset_adapter.py +++ b/keras/src/trainers/data_adapters/tf_dataset_adapter.py @@ -1,6 +1,6 @@ -from keras import tree -from keras.trainers.data_adapters import data_adapter_utils -from keras.trainers.data_adapters.data_adapter import DataAdapter +from keras.src import tree +from keras.src.trainers.data_adapters import data_adapter_utils +from keras.src.trainers.data_adapters.data_adapter import DataAdapter class TFDatasetAdapter(DataAdapter): @@ -17,7 +17,7 @@ def __init__(self, dataset, class_weight=None, distribution=None): shard the input dataset into per worker/process dataset instance. """ - from keras.utils.module_utils import tensorflow as tf + from keras.src.utils.module_utils import tensorflow as tf if not isinstance( dataset, (tf.data.Dataset, tf.distribute.DistributedDataset) @@ -35,7 +35,7 @@ def __init__(self, dataset, class_weight=None, distribution=None): self._dataset = dataset def get_numpy_iterator(self): - from keras.backend.tensorflow.core import convert_to_numpy + from keras.src.backend.tensorflow.core import convert_to_numpy for batch in self._dataset: yield tree.map_structure(convert_to_numpy, batch) @@ -43,9 +43,9 @@ def get_numpy_iterator(self): def get_jax_iterator(self): import jax.experimental.sparse as jax_sparse - from keras.backend.jax.core import convert_to_tensor - from keras.backend.tensorflow.core import convert_to_numpy - from keras.utils.module_utils import tensorflow as tf + from keras.src.backend.jax.core import convert_to_tensor + from keras.src.backend.tensorflow.core import convert_to_numpy + from keras.src.utils.module_utils import tensorflow as tf def convert_to_jax(x): # We use numpy as an intermediary because the conversion @@ -107,7 +107,7 @@ def make_class_weight_map_fn(class_weight): A function that can be used with `tf.data.Dataset.map` to apply class weighting. """ - from keras.utils.module_utils import tensorflow as tf + from keras.src.utils.module_utils import tensorflow as tf class_weight_tensor = tf.convert_to_tensor( [ diff --git a/keras/trainers/data_adapters/tf_dataset_adapter_test.py b/keras/src/trainers/data_adapters/tf_dataset_adapter_test.py similarity index 98% rename from keras/trainers/data_adapters/tf_dataset_adapter_test.py rename to keras/src/trainers/data_adapters/tf_dataset_adapter_test.py index 5d4a7576f45b..ad48c2d3c241 100644 --- a/keras/trainers/data_adapters/tf_dataset_adapter_test.py +++ b/keras/src/trainers/data_adapters/tf_dataset_adapter_test.py @@ -6,9 +6,9 @@ import torch from absl.testing import parameterized -from keras import testing -from keras.testing.test_utils import named_product -from keras.trainers.data_adapters import tf_dataset_adapter +from keras.src import testing +from keras.src.testing.test_utils import named_product +from keras.src.trainers.data_adapters import tf_dataset_adapter class TestTFDatasetAdapter(testing.TestCase, parameterized.TestCase): diff --git a/keras/trainers/data_adapters/torch_data_loader_adapter.py b/keras/src/trainers/data_adapters/torch_data_loader_adapter.py similarity index 91% rename from keras/trainers/data_adapters/torch_data_loader_adapter.py rename to keras/src/trainers/data_adapters/torch_data_loader_adapter.py index 78df412c68f3..59a89050c5ce 100644 --- a/keras/trainers/data_adapters/torch_data_loader_adapter.py +++ b/keras/src/trainers/data_adapters/torch_data_loader_adapter.py @@ -2,9 +2,9 @@ import numpy as np -from keras import tree -from keras.trainers.data_adapters import data_adapter_utils -from keras.trainers.data_adapters.data_adapter import DataAdapter +from keras.src import tree +from keras.src.trainers.data_adapters import data_adapter_utils +from keras.src.trainers.data_adapters.data_adapter import DataAdapter class TorchDataLoaderAdapter(DataAdapter): @@ -44,7 +44,7 @@ def get_jax_iterator(self): return data_adapter_utils.get_jax_iterator(self.get_numpy_iterator()) def get_tf_dataset(self): - from keras.utils.module_utils import tensorflow as tf + from keras.src.utils.module_utils import tensorflow as tf if self._output_signature is None: batches = list( diff --git a/keras/trainers/data_adapters/torch_data_loader_adapter_test.py b/keras/src/trainers/data_adapters/torch_data_loader_adapter_test.py similarity index 97% rename from keras/trainers/data_adapters/torch_data_loader_adapter_test.py rename to keras/src/trainers/data_adapters/torch_data_loader_adapter_test.py index 9922667cecc3..e86f570d6925 100644 --- a/keras/trainers/data_adapters/torch_data_loader_adapter_test.py +++ b/keras/src/trainers/data_adapters/torch_data_loader_adapter_test.py @@ -6,9 +6,9 @@ import torch from absl.testing import parameterized -from keras import testing -from keras.testing.test_utils import named_product -from keras.trainers.data_adapters.torch_data_loader_adapter import ( +from keras.src import testing +from keras.src.testing.test_utils import named_product +from keras.src.trainers.data_adapters.torch_data_loader_adapter import ( TorchDataLoaderAdapter, ) diff --git a/keras/trainers/epoch_iterator.py b/keras/src/trainers/epoch_iterator.py similarity index 98% rename from keras/trainers/epoch_iterator.py rename to keras/src/trainers/epoch_iterator.py index 9711a6cfa12d..fa55d78d864f 100644 --- a/keras/trainers/epoch_iterator.py +++ b/keras/src/trainers/epoch_iterator.py @@ -41,7 +41,7 @@ import warnings -from keras.trainers import data_adapters +from keras.src.trainers import data_adapters class EpochIterator: diff --git a/keras/trainers/epoch_iterator_test.py b/keras/src/trainers/epoch_iterator_test.py similarity index 97% rename from keras/trainers/epoch_iterator_test.py rename to keras/src/trainers/epoch_iterator_test.py index 0c731b0bc79b..832520e19fc3 100644 --- a/keras/trainers/epoch_iterator_test.py +++ b/keras/src/trainers/epoch_iterator_test.py @@ -2,10 +2,10 @@ import pytest import tensorflow as tf -from keras import backend -from keras import testing -from keras.trainers import data_adapters -from keras.trainers import epoch_iterator +from keras.src import backend +from keras.src import testing +from keras.src.trainers import data_adapters +from keras.src.trainers import epoch_iterator class TestEpochIterator(testing.TestCase): diff --git a/keras/trainers/trainer.py b/keras/src/trainers/trainer.py similarity index 98% rename from keras/trainers/trainer.py rename to keras/src/trainers/trainer.py index 0ee156f9c5e2..0d8fdb85cd6d 100644 --- a/keras/trainers/trainer.py +++ b/keras/src/trainers/trainer.py @@ -1,18 +1,18 @@ import platform import warnings -from keras import backend -from keras import metrics as metrics_module -from keras import ops -from keras import optimizers -from keras import tree -from keras.optimizers.loss_scale_optimizer import LossScaleOptimizer -from keras.saving import serialization_lib -from keras.trainers.compile_utils import CompileLoss -from keras.trainers.compile_utils import CompileMetrics -from keras.trainers.data_adapters import data_adapter_utils -from keras.utils import traceback_utils -from keras.utils import tracking +from keras.src import backend +from keras.src import metrics as metrics_module +from keras.src import ops +from keras.src import optimizers +from keras.src import tree +from keras.src.optimizers.loss_scale_optimizer import LossScaleOptimizer +from keras.src.saving import serialization_lib +from keras.src.trainers.compile_utils import CompileLoss +from keras.src.trainers.compile_utils import CompileMetrics +from keras.src.trainers.data_adapters import data_adapter_utils +from keras.src.utils import traceback_utils +from keras.src.utils import tracking class Trainer: @@ -995,7 +995,7 @@ def model_supports_jit(model): # XLA not supported with TF on MacOS GPU if platform.system() == "Darwin" and "arm" in platform.processor().lower(): if backend.backend() == "tensorflow": - from keras.utils.module_utils import tensorflow as tf + from keras.src.utils.module_utils import tensorflow as tf if tf.config.list_physical_devices("GPU"): return False diff --git a/keras/trainers/trainer_test.py b/keras/src/trainers/trainer_test.py similarity index 98% rename from keras/trainers/trainer_test.py rename to keras/src/trainers/trainer_test.py index cf02da6b558a..6e125a31cf07 100644 --- a/keras/trainers/trainer_test.py +++ b/keras/src/trainers/trainer_test.py @@ -5,27 +5,29 @@ from absl.testing import parameterized import keras -from keras import backend -from keras import initializers -from keras import layers -from keras import losses -from keras import metrics -from keras import models -from keras import ops -from keras import optimizers -from keras import testing -from keras.callbacks.callback import Callback -from keras.optimizers.rmsprop import RMSprop -from keras.testing.test_utils import named_product +from keras.src import backend +from keras.src import initializers +from keras.src import layers +from keras.src import losses +from keras.src import metrics +from keras.src import models +from keras.src import ops +from keras.src import optimizers +from keras.src import testing +from keras.src.callbacks.callback import Callback +from keras.src.optimizers.rmsprop import RMSprop +from keras.src.testing.test_utils import named_product if backend.backend() == "jax": - from keras.backend.jax.trainer import JAXTrainer as Trainer + from keras.src.backend.jax.trainer import JAXTrainer as Trainer elif backend.backend() == "torch": - from keras.backend.torch.trainer import TorchTrainer as Trainer + from keras.src.backend.torch.trainer import TorchTrainer as Trainer elif backend.backend() == "tensorflow": - from keras.backend.tensorflow.trainer import TensorFlowTrainer as Trainer + from keras.src.backend.tensorflow.trainer import ( + TensorFlowTrainer as Trainer, + ) elif backend.backend() == "numpy": - from keras.backend.numpy.trainer import NumpyTrainer as Trainer + from keras.src.backend.numpy.trainer import NumpyTrainer as Trainer else: raise ImportError(f"Invalid backend: {backend.backend()}") @@ -966,7 +968,7 @@ def call(self, x): def get_functional(self): ExampleLayer = self.get_layer() - class ExampleFunctional(keras.Functional): + class ExampleFunctional(keras.src.Functional): def __init__(self, input_shape=(None,)): inputs = keras.Input(input_shape) outputs = ExampleLayer()(inputs) @@ -996,7 +998,7 @@ def __init__(self, input_shape=(None,)): reason="Only tensorflow supports raggeds", ) def test_trainer_with_raggeds(self, model_class): - from keras.utils.module_utils import tensorflow as tf + from keras.src.utils.module_utils import tensorflow as tf def loss_fn(y, y_pred, sample_weight=None): return 0 diff --git a/keras/src/tree/__init__.py b/keras/src/tree/__init__.py new file mode 100644 index 000000000000..ba755043cb9b --- /dev/null +++ b/keras/src/tree/__init__.py @@ -0,0 +1,10 @@ +from keras.src.tree.tree_api import assert_same_structure +from keras.src.tree.tree_api import flatten +from keras.src.tree.tree_api import is_nested +from keras.src.tree.tree_api import lists_to_tuples +from keras.src.tree.tree_api import map_shape_structure +from keras.src.tree.tree_api import map_structure +from keras.src.tree.tree_api import map_structure_up_to +from keras.src.tree.tree_api import pack_sequence_as +from keras.src.tree.tree_api import register_tree_node_class +from keras.src.tree.tree_api import traverse diff --git a/keras/tree/dmtree_impl.py b/keras/src/tree/dmtree_impl.py similarity index 99% rename from keras/tree/dmtree_impl.py rename to keras/src/tree/dmtree_impl.py index 916fb35b257b..441e84a35073 100644 --- a/keras/tree/dmtree_impl.py +++ b/keras/src/tree/dmtree_impl.py @@ -1,4 +1,4 @@ -from keras.utils.module_utils import dmtree +from keras.src.utils.module_utils import dmtree def register_tree_node_class(cls): diff --git a/keras/tree/optree_impl.py b/keras/src/tree/optree_impl.py similarity index 99% rename from keras/tree/optree_impl.py rename to keras/src/tree/optree_impl.py index c823381b56f3..8ada42b0fb24 100644 --- a/keras/tree/optree_impl.py +++ b/keras/src/tree/optree_impl.py @@ -5,7 +5,7 @@ import optree import optree.utils -from keras.backend.config import backend +from keras.src.backend.config import backend def register_tree_node_class(cls): diff --git a/keras/tree/tree_api.py b/keras/src/tree/tree_api.py similarity index 97% rename from keras/tree/tree_api.py rename to keras/src/tree/tree_api.py index 09a99daa10e9..1bd833c8d0ab 100644 --- a/keras/tree/tree_api.py +++ b/keras/src/tree/tree_api.py @@ -1,11 +1,11 @@ -from keras.api_export import keras_export -from keras.utils.module_utils import dmtree -from keras.utils.module_utils import optree +from keras.src.api_export import keras_export +from keras.src.utils.module_utils import dmtree +from keras.src.utils.module_utils import optree if optree.available: - from keras.tree import optree_impl as tree_impl + from keras.src.tree import optree_impl as tree_impl elif dmtree.available: - from keras.tree import dmtree_impl as tree_impl + from keras.src.tree import dmtree_impl as tree_impl else: raise ImportError( "To use Keras, you need to have `optree` installed. " diff --git a/keras/tree/tree_test.py b/keras/src/tree/tree_test.py similarity index 99% rename from keras/tree/tree_test.py rename to keras/src/tree/tree_test.py index 7335b7d3f377..24ddbe5ce0fa 100644 --- a/keras/tree/tree_test.py +++ b/keras/src/tree/tree_test.py @@ -2,9 +2,9 @@ import numpy as np -from keras import ops -from keras import testing -from keras import tree +from keras.src import ops +from keras.src import testing +from keras.src import tree STRUCTURE1 = (((1, 2), 3), 4, (5, 6)) STRUCTURE2 = ((("foo1", "foo2"), "foo3"), "foo4", ("foo5", "foo6")) diff --git a/keras/src/utils/__init__.py b/keras/src/utils/__init__.py new file mode 100644 index 000000000000..c503a2043776 --- /dev/null +++ b/keras/src/utils/__init__.py @@ -0,0 +1,26 @@ +from keras.src.utils.audio_dataset_utils import audio_dataset_from_directory +from keras.src.utils.dataset_utils import split_dataset +from keras.src.utils.file_utils import get_file +from keras.src.utils.image_dataset_utils import image_dataset_from_directory +from keras.src.utils.image_utils import array_to_img +from keras.src.utils.image_utils import img_to_array +from keras.src.utils.image_utils import load_img +from keras.src.utils.image_utils import save_img +from keras.src.utils.io_utils import disable_interactive_logging +from keras.src.utils.io_utils import enable_interactive_logging +from keras.src.utils.io_utils import is_interactive_logging_enabled +from keras.src.utils.model_visualization import model_to_dot +from keras.src.utils.model_visualization import plot_model +from keras.src.utils.numerical_utils import normalize +from keras.src.utils.numerical_utils import to_categorical +from keras.src.utils.progbar import Progbar +from keras.src.utils.python_utils import default +from keras.src.utils.python_utils import is_default +from keras.src.utils.python_utils import removeprefix +from keras.src.utils.python_utils import removesuffix +from keras.src.utils.rng_utils import set_random_seed +from keras.src.utils.sequence_utils import pad_sequences +from keras.src.utils.text_dataset_utils import text_dataset_from_directory +from keras.src.utils.timeseries_dataset_utils import ( + timeseries_dataset_from_array, +) diff --git a/keras/utils/argument_validation.py b/keras/src/utils/argument_validation.py similarity index 100% rename from keras/utils/argument_validation.py rename to keras/src/utils/argument_validation.py diff --git a/keras/utils/audio_dataset_utils.py b/keras/src/utils/audio_dataset_utils.py similarity index 98% rename from keras/utils/audio_dataset_utils.py rename to keras/src/utils/audio_dataset_utils.py index 3927b3aa383d..ac1bab223b82 100644 --- a/keras/utils/audio_dataset_utils.py +++ b/keras/src/utils/audio_dataset_utils.py @@ -1,9 +1,9 @@ import numpy as np -from keras.api_export import keras_export -from keras.utils import dataset_utils -from keras.utils.module_utils import tensorflow as tf -from keras.utils.module_utils import tensorflow_io as tfio +from keras.src.api_export import keras_export +from keras.src.utils import dataset_utils +from keras.src.utils.module_utils import tensorflow as tf +from keras.src.utils.module_utils import tensorflow_io as tfio ALLOWED_FORMATS = (".wav",) diff --git a/keras/utils/audio_dataset_utils_test.py b/keras/src/utils/audio_dataset_utils_test.py similarity index 99% rename from keras/utils/audio_dataset_utils_test.py rename to keras/src/utils/audio_dataset_utils_test.py index 668465f53c44..f382a24c14b7 100644 --- a/keras/utils/audio_dataset_utils_test.py +++ b/keras/src/utils/audio_dataset_utils_test.py @@ -2,9 +2,9 @@ import numpy as np -from keras import testing -from keras.utils import audio_dataset_utils -from keras.utils.module_utils import tensorflow as tf +from keras.src import testing +from keras.src.utils import audio_dataset_utils +from keras.src.utils.module_utils import tensorflow as tf class AudioDatasetFromDirectoryTest(testing.TestCase): diff --git a/keras/utils/backend_utils.py b/keras/src/utils/backend_utils.py similarity index 86% rename from keras/utils/backend_utils.py rename to keras/src/utils/backend_utils.py index 9d358354f3a7..9a82fd464eb2 100644 --- a/keras/utils/backend_utils.py +++ b/keras/src/utils/backend_utils.py @@ -3,9 +3,9 @@ import os import sys -from keras import backend as backend_module -from keras.api_export import keras_export -from keras.backend.common import global_state +from keras.src import backend as backend_module +from keras.src.api_export import keras_export +from keras.src.backend.common import global_state def in_tf_graph(): @@ -13,7 +13,7 @@ def in_tf_graph(): return True if "tensorflow" in sys.modules: - from keras.utils.module_utils import tensorflow as tf + from keras.src.utils.module_utils import tensorflow as tf return not tf.executing_eagerly() return False @@ -67,23 +67,23 @@ def reset(self): def __getattr__(self, name): if self._backend == "tensorflow": - from keras.backend import tensorflow as tf_backend + from keras.src.backend import tensorflow as tf_backend return getattr(tf_backend, name) if self._backend == "jax": - from keras.backend import jax as jax_backend + from keras.src.backend import jax as jax_backend return getattr(jax_backend, name) if self._backend == "torch": - from keras.backend import torch as torch_backend + from keras.src.backend import torch as torch_backend return getattr(torch_backend, name) if self._backend == "numpy": # TODO (ariG23498): - # The import `from keras.backend import numpy as numpy_backend` + # The import `from keras.src.backend import numpy as numpy_backend` # is not working. This is a temporary fix. # The import is redirected to `keras.backend.numpy.numpy.py` - from keras import backend as numpy_backend + from keras.src import backend as numpy_backend return getattr(numpy_backend, name) diff --git a/keras/utils/code_stats.py b/keras/src/utils/code_stats.py similarity index 100% rename from keras/utils/code_stats.py rename to keras/src/utils/code_stats.py diff --git a/keras/utils/code_stats_test.py b/keras/src/utils/code_stats_test.py similarity index 98% rename from keras/utils/code_stats_test.py rename to keras/src/utils/code_stats_test.py index bc1ccec8fc56..c1639ca9f907 100644 --- a/keras/utils/code_stats_test.py +++ b/keras/src/utils/code_stats_test.py @@ -2,8 +2,8 @@ import sys from io import StringIO -from keras.testing import test_case -from keras.utils.code_stats import count_loc +from keras.src.testing import test_case +from keras.src.utils.code_stats import count_loc class TestCountLoc(test_case.TestCase): diff --git a/keras/utils/dataset_utils.py b/keras/src/utils/dataset_utils.py similarity index 99% rename from keras/utils/dataset_utils.py rename to keras/src/utils/dataset_utils.py index 22dda610ff8d..ff27552278f4 100644 --- a/keras/utils/dataset_utils.py +++ b/keras/src/utils/dataset_utils.py @@ -6,9 +6,9 @@ import numpy as np -from keras.api_export import keras_export -from keras.utils import io_utils -from keras.utils.module_utils import tensorflow as tf +from keras.src.api_export import keras_export +from keras.src.utils import io_utils +from keras.src.utils.module_utils import tensorflow as tf @keras_export("keras.utils.split_dataset") @@ -248,7 +248,9 @@ def _get_next_sample( Yields: data_sample: The next sample. """ - from keras.trainers.data_adapters.data_adapter_utils import is_torch_tensor + from keras.src.trainers.data_adapters.data_adapter_utils import ( + is_torch_tensor, + ) try: dataset_iterator = iter(dataset_iterator) diff --git a/keras/utils/dataset_utils_test.py b/keras/src/utils/dataset_utils_test.py similarity index 98% rename from keras/utils/dataset_utils_test.py rename to keras/src/utils/dataset_utils_test.py index 9d044b1920b6..11cb275ff815 100644 --- a/keras/utils/dataset_utils_test.py +++ b/keras/src/utils/dataset_utils_test.py @@ -1,8 +1,8 @@ import numpy as np -from keras.testing import test_case -from keras.utils.dataset_utils import split_dataset -from keras.utils.module_utils import tensorflow as tf +from keras.src.testing import test_case +from keras.src.utils.dataset_utils import split_dataset +from keras.src.utils.module_utils import tensorflow as tf class DatasetUtilsTest(test_case.TestCase): diff --git a/keras/utils/dtype_utils.py b/keras/src/utils/dtype_utils.py similarity index 96% rename from keras/utils/dtype_utils.py rename to keras/src/utils/dtype_utils.py index cf6f54891b53..44ac7d4f65a3 100644 --- a/keras/utils/dtype_utils.py +++ b/keras/src/utils/dtype_utils.py @@ -1,5 +1,5 @@ -from keras import backend -from keras import ops +from keras.src import backend +from keras.src import ops DTYPE_TO_SIZE = { **{f"float{i}": i for i in (16, 32, 64)}, diff --git a/keras/utils/dtype_utils_test.py b/keras/src/utils/dtype_utils_test.py similarity index 97% rename from keras/utils/dtype_utils_test.py rename to keras/src/utils/dtype_utils_test.py index 29f2ef984203..390db6fd72d7 100644 --- a/keras/utils/dtype_utils_test.py +++ b/keras/src/utils/dtype_utils_test.py @@ -1,6 +1,6 @@ -from keras.backend.common.keras_tensor import KerasTensor -from keras.testing import test_case -from keras.utils import dtype_utils +from keras.src.backend.common.keras_tensor import KerasTensor +from keras.src.testing import test_case +from keras.src.utils import dtype_utils class DtypeSizeTests(test_case.TestCase): diff --git a/keras/utils/file_utils.py b/keras/src/utils/file_utils.py similarity index 98% rename from keras/utils/file_utils.py rename to keras/src/utils/file_utils.py index 36623d088361..e625a9f131ce 100644 --- a/keras/utils/file_utils.py +++ b/keras/src/utils/file_utils.py @@ -9,11 +9,11 @@ import zipfile from urllib.request import urlretrieve -from keras.api_export import keras_export -from keras.backend import config -from keras.utils import io_utils -from keras.utils.module_utils import gfile -from keras.utils.progbar import Progbar +from keras.src.api_export import keras_export +from keras.src.backend import config +from keras.src.utils import io_utils +from keras.src.utils.module_utils import gfile +from keras.src.utils.progbar import Progbar def path_to_string(path): diff --git a/keras/utils/file_utils_test.py b/keras/src/utils/file_utils_test.py similarity index 99% rename from keras/utils/file_utils_test.py rename to keras/src/utils/file_utils_test.py index 852adbca3dd3..c09f47acd1aa 100644 --- a/keras/utils/file_utils_test.py +++ b/keras/src/utils/file_utils_test.py @@ -8,8 +8,8 @@ import zipfile from unittest.mock import patch -from keras.testing import test_case -from keras.utils import file_utils +from keras.src.testing import test_case +from keras.src.utils import file_utils class PathToStringTest(test_case.TestCase): diff --git a/keras/utils/image_dataset_utils.py b/keras/src/utils/image_dataset_utils.py similarity index 98% rename from keras/utils/image_dataset_utils.py rename to keras/src/utils/image_dataset_utils.py index 9f340301023c..30317c96780b 100755 --- a/keras/utils/image_dataset_utils.py +++ b/keras/src/utils/image_dataset_utils.py @@ -1,10 +1,10 @@ import numpy as np -from keras.api_export import keras_export -from keras.backend.config import standardize_data_format -from keras.utils import dataset_utils -from keras.utils import image_utils -from keras.utils.module_utils import tensorflow as tf +from keras.src.api_export import keras_export +from keras.src.backend.config import standardize_data_format +from keras.src.utils import dataset_utils +from keras.src.utils import image_utils +from keras.src.utils.module_utils import tensorflow as tf ALLOWLIST_FORMATS = (".bmp", ".gif", ".jpeg", ".jpg", ".png") @@ -415,7 +415,7 @@ def load_image( ) if crop_to_aspect_ratio: - from keras.backend import tensorflow as tf_backend + from keras.src.backend import tensorflow as tf_backend if data_format == "channels_first": img = tf.transpose(img, (2, 0, 1)) diff --git a/keras/utils/image_dataset_utils_test.py b/keras/src/utils/image_dataset_utils_test.py similarity index 98% rename from keras/utils/image_dataset_utils_test.py rename to keras/src/utils/image_dataset_utils_test.py index f2b2981cabe8..e6d006ab7c0e 100644 --- a/keras/utils/image_dataset_utils_test.py +++ b/keras/src/utils/image_dataset_utils_test.py @@ -2,11 +2,11 @@ import numpy as np -from keras import backend -from keras import testing -from keras.utils import image_dataset_utils -from keras.utils import image_utils -from keras.utils.module_utils import tensorflow as tf +from keras.src import backend +from keras.src import testing +from keras.src.utils import image_dataset_utils +from keras.src.utils import image_utils +from keras.src.utils.module_utils import tensorflow as tf class ImageDatasetFromDirectoryTest(testing.TestCase): diff --git a/keras/utils/image_utils.py b/keras/src/utils/image_utils.py similarity index 99% rename from keras/utils/image_utils.py rename to keras/src/utils/image_utils.py index 59722afbfe97..8f5e805c5f75 100644 --- a/keras/utils/image_utils.py +++ b/keras/src/utils/image_utils.py @@ -6,8 +6,8 @@ import numpy as np -from keras import backend -from keras.api_export import keras_export +from keras.src import backend +from keras.src.api_export import keras_export try: from PIL import Image as pil_image diff --git a/keras/utils/io_utils.py b/keras/src/utils/io_utils.py similarity index 97% rename from keras/utils/io_utils.py rename to keras/src/utils/io_utils.py index b2308230117c..32322f405c33 100644 --- a/keras/utils/io_utils.py +++ b/keras/src/utils/io_utils.py @@ -2,8 +2,8 @@ from absl import logging -from keras.api_export import keras_export -from keras.backend.common import global_state +from keras.src.api_export import keras_export +from keras.src.backend.common import global_state @keras_export( diff --git a/keras/utils/io_utils_test.py b/keras/src/utils/io_utils_test.py similarity index 96% rename from keras/utils/io_utils_test.py rename to keras/src/utils/io_utils_test.py index 20eb2add559a..235314de3016 100644 --- a/keras/utils/io_utils_test.py +++ b/keras/src/utils/io_utils_test.py @@ -1,7 +1,7 @@ from unittest.mock import patch -from keras.testing import test_case -from keras.utils import io_utils +from keras.src.testing import test_case +from keras.src.utils import io_utils class TestIoUtils(test_case.TestCase): diff --git a/keras/utils/jax_layer.py b/keras/src/utils/jax_layer.py similarity index 98% rename from keras/utils/jax_layer.py rename to keras/src/utils/jax_layer.py index 83786b0b74f6..9c97f0ac28d4 100644 --- a/keras/utils/jax_layer.py +++ b/keras/src/utils/jax_layer.py @@ -2,14 +2,14 @@ import numpy as np -from keras import backend -from keras import tree -from keras.api_export import keras_export -from keras.layers.layer import Layer -from keras.saving import serialization_lib -from keras.utils import jax_utils -from keras.utils import tracking -from keras.utils.module_utils import jax +from keras.src import backend +from keras.src import tree +from keras.src.api_export import keras_export +from keras.src.layers.layer import Layer +from keras.src.saving import serialization_lib +from keras.src.utils import jax_utils +from keras.src.utils import tracking +from keras.src.utils.module_utils import jax @keras_export("keras.layers.JaxLayer") diff --git a/keras/utils/jax_layer_test.py b/keras/src/utils/jax_layer_test.py similarity index 98% rename from keras/utils/jax_layer_test.py rename to keras/src/utils/jax_layer_test.py index ba7104946b04..e3b088c78849 100644 --- a/keras/utils/jax_layer_test.py +++ b/keras/src/utils/jax_layer_test.py @@ -7,18 +7,18 @@ import tensorflow as tf from absl.testing import parameterized -from keras import backend -from keras import layers -from keras import metrics -from keras import models -from keras import saving -from keras import testing -from keras import tree -from keras import utils -from keras.export import export_lib -from keras.saving import object_registration -from keras.utils.jax_layer import FlaxLayer -from keras.utils.jax_layer import JaxLayer +from keras.src import backend +from keras.src import layers +from keras.src import metrics +from keras.src import models +from keras.src import saving +from keras.src import testing +from keras.src import tree +from keras.src import utils +from keras.src.export import export_lib +from keras.src.saving import object_registration +from keras.src.utils.jax_layer import FlaxLayer +from keras.src.utils.jax_layer import JaxLayer try: import flax diff --git a/keras/utils/jax_utils.py b/keras/src/utils/jax_utils.py similarity index 88% rename from keras/utils/jax_utils.py rename to keras/src/utils/jax_utils.py index 35e26697914c..2ac944eb967d 100644 --- a/keras/utils/jax_utils.py +++ b/keras/src/utils/jax_utils.py @@ -1,4 +1,4 @@ -from keras import backend +from keras.src import backend def is_in_jax_tracing_scope(x=None): diff --git a/keras/utils/model_visualization.py b/keras/src/utils/model_visualization.py similarity index 98% rename from keras/utils/model_visualization.py rename to keras/src/utils/model_visualization.py index 332eb6d97cc6..ee0a47bfaa39 100644 --- a/keras/utils/model_visualization.py +++ b/keras/src/utils/model_visualization.py @@ -3,9 +3,9 @@ import os import sys -from keras import tree -from keras.api_export import keras_export -from keras.utils import io_utils +from keras.src import tree +from keras.src.api_export import keras_export +from keras.src.utils import io_utils try: # pydot-ng is a fork of pydot that is better maintained. @@ -202,7 +202,7 @@ def model_to_dot( a `pydot.Cluster` instance representing nested model if `subgraph=True`. """ - from keras.ops.function import make_node_key + from keras.src.ops.function import make_node_key if not model.built: raise ValueError( @@ -211,10 +211,10 @@ def model_to_dot( "the model on a batch of data." ) - from keras.models import functional - from keras.models import sequential + from keras.src.models import functional + from keras.src.models import sequential - # from keras.layers import Wrapper + # from keras.src.layers import Wrapper if not check_pydot(): raise ImportError( diff --git a/keras/utils/module_utils.py b/keras/src/utils/module_utils.py similarity index 100% rename from keras/utils/module_utils.py rename to keras/src/utils/module_utils.py diff --git a/keras/utils/naming.py b/keras/src/utils/naming.py similarity index 94% rename from keras/utils/naming.py rename to keras/src/utils/naming.py index b16f429fcd06..28107f0f30f4 100644 --- a/keras/utils/naming.py +++ b/keras/src/utils/naming.py @@ -1,8 +1,8 @@ import collections import re -from keras.api_export import keras_export -from keras.backend.common import global_state +from keras.src.api_export import keras_export +from keras.src.backend.common import global_state def auto_name(prefix): diff --git a/keras/utils/naming_test.py b/keras/src/utils/naming_test.py similarity index 98% rename from keras/utils/naming_test.py rename to keras/src/utils/naming_test.py index 6be61fdbefe3..00e3f6bdda30 100644 --- a/keras/utils/naming_test.py +++ b/keras/src/utils/naming_test.py @@ -1,5 +1,5 @@ -from keras.testing import test_case -from keras.utils import naming +from keras.src.testing import test_case +from keras.src.utils import naming class NamingUtilsTest(test_case.TestCase): diff --git a/keras/utils/numerical_utils.py b/keras/src/utils/numerical_utils.py similarity index 97% rename from keras/utils/numerical_utils.py rename to keras/src/utils/numerical_utils.py index db922c4f07ef..05fb82abc522 100644 --- a/keras/utils/numerical_utils.py +++ b/keras/src/utils/numerical_utils.py @@ -1,7 +1,7 @@ import numpy as np -from keras import backend -from keras.api_export import keras_export +from keras.src import backend +from keras.src.api_export import keras_export @keras_export("keras.utils.normalize") @@ -19,7 +19,7 @@ def normalize(x, axis=-1, order=2): Returns: A normalized copy of the array. """ - from keras import ops + from keras.src import ops if isinstance(x, np.ndarray): # NumPy input diff --git a/keras/utils/numerical_utils_test.py b/keras/src/utils/numerical_utils_test.py similarity index 96% rename from keras/utils/numerical_utils_test.py rename to keras/src/utils/numerical_utils_test.py index d4cc7de575ad..2cb8c4c5e782 100644 --- a/keras/utils/numerical_utils_test.py +++ b/keras/src/utils/numerical_utils_test.py @@ -1,9 +1,9 @@ import numpy as np from absl.testing import parameterized -from keras import backend -from keras import testing -from keras.utils import numerical_utils +from keras.src import backend +from keras.src import testing +from keras.src.utils import numerical_utils NUM_CLASSES = 5 diff --git a/keras/utils/progbar.py b/keras/src/utils/progbar.py similarity index 98% rename from keras/utils/progbar.py rename to keras/src/utils/progbar.py index 1f60b1818e3d..e2b61a041b02 100644 --- a/keras/utils/progbar.py +++ b/keras/src/utils/progbar.py @@ -3,9 +3,9 @@ import sys import time -from keras import backend -from keras.api_export import keras_export -from keras.utils import io_utils +from keras.src import backend +from keras.src.api_export import keras_export +from keras.src.utils import io_utils @keras_export("keras.utils.Progbar") diff --git a/keras/utils/python_utils.py b/keras/src/utils/python_utils.py similarity index 100% rename from keras/utils/python_utils.py rename to keras/src/utils/python_utils.py diff --git a/keras/utils/python_utils_test.py b/keras/src/utils/python_utils_test.py similarity index 97% rename from keras/utils/python_utils_test.py rename to keras/src/utils/python_utils_test.py index 33d7e72e3d1a..2ca2a72d341c 100644 --- a/keras/utils/python_utils_test.py +++ b/keras/src/utils/python_utils_test.py @@ -1,8 +1,8 @@ import base64 import marshal -from keras import testing -from keras.utils import python_utils +from keras.src import testing +from keras.src.utils import python_utils class PythonUtilsTest(testing.TestCase): diff --git a/keras/utils/rng_utils.py b/keras/src/utils/rng_utils.py similarity index 92% rename from keras/utils/rng_utils.py rename to keras/src/utils/rng_utils.py index be438d587bcd..15804d0e43e6 100644 --- a/keras/utils/rng_utils.py +++ b/keras/src/utils/rng_utils.py @@ -2,9 +2,9 @@ import numpy as np -from keras import backend -from keras.api_export import keras_export -from keras.utils.module_utils import tensorflow as tf +from keras.src import backend +from keras.src.api_export import keras_export +from keras.src.utils.module_utils import tensorflow as tf @keras_export("keras.utils.set_random_seed") diff --git a/keras/utils/rng_utils_test.py b/keras/src/utils/rng_utils_test.py similarity index 89% rename from keras/utils/rng_utils_test.py rename to keras/src/utils/rng_utils_test.py index f6ec741c496c..aef96ddacc43 100644 --- a/keras/utils/rng_utils_test.py +++ b/keras/src/utils/rng_utils_test.py @@ -3,9 +3,9 @@ import tensorflow as tf import keras -from keras import backend -from keras.testing import test_case -from keras.utils import rng_utils +from keras.src import backend +from keras.src.testing import test_case +from keras.src.utils import rng_utils class TestRandomSeedSetting(test_case.TestCase): diff --git a/keras/utils/sequence_utils.py b/keras/src/utils/sequence_utils.py similarity index 99% rename from keras/utils/sequence_utils.py rename to keras/src/utils/sequence_utils.py index 5ba2903fe1ac..8d0c67a08e08 100644 --- a/keras/utils/sequence_utils.py +++ b/keras/src/utils/sequence_utils.py @@ -1,6 +1,6 @@ import numpy as np -from keras.api_export import keras_export +from keras.src.api_export import keras_export @keras_export( diff --git a/keras/utils/sequence_utils_test.py b/keras/src/utils/sequence_utils_test.py similarity index 98% rename from keras/utils/sequence_utils_test.py rename to keras/src/utils/sequence_utils_test.py index 7051331fd9d0..0714bd469a92 100644 --- a/keras/utils/sequence_utils_test.py +++ b/keras/src/utils/sequence_utils_test.py @@ -1,5 +1,5 @@ -from keras import testing -from keras.utils import sequence_utils +from keras.src import testing +from keras.src.utils import sequence_utils class PadSequencesTest(testing.TestCase): diff --git a/keras/utils/summary_utils.py b/keras/src/utils/summary_utils.py similarity index 98% rename from keras/utils/summary_utils.py rename to keras/src/utils/summary_utils.py index 18e3ac539cb3..94c82af7ff84 100644 --- a/keras/utils/summary_utils.py +++ b/keras/src/utils/summary_utils.py @@ -10,10 +10,10 @@ # for below imports import rich.table -from keras import backend -from keras import tree -from keras.utils import dtype_utils -from keras.utils import io_utils +from keras.src import backend +from keras.src import tree +from keras.src.utils import dtype_utils +from keras.src.utils import io_utils def count_params(weights): @@ -131,8 +131,8 @@ def print_summary( matches `layer_range[1]`. By default (`None`) all layers in the model are included in the summary. """ - from keras.models import Functional - from keras.models import Sequential + from keras.src.models import Functional + from keras.src.models import Sequential if not print_fn and not io_utils.is_interactive_logging_enabled(): print_fn = io_utils.print_msg diff --git a/keras/utils/summary_utils_test.py b/keras/src/utils/summary_utils_test.py similarity index 92% rename from keras/utils/summary_utils_test.py rename to keras/src/utils/summary_utils_test.py index 51f764a74a40..7b917da4f848 100644 --- a/keras/utils/summary_utils_test.py +++ b/keras/src/utils/summary_utils_test.py @@ -2,10 +2,10 @@ import pytest from absl.testing import parameterized -from keras import layers -from keras import models -from keras import testing -from keras.utils import summary_utils +from keras.src import layers +from keras.src import models +from keras.src import testing +from keras.src.utils import summary_utils class SummaryUtilsTest(testing.TestCase, parameterized.TestCase): diff --git a/keras/utils/text_dataset_utils.py b/keras/src/utils/text_dataset_utils.py similarity index 98% rename from keras/utils/text_dataset_utils.py rename to keras/src/utils/text_dataset_utils.py index 12d2aacd1dc0..d8e5ece971c5 100644 --- a/keras/utils/text_dataset_utils.py +++ b/keras/src/utils/text_dataset_utils.py @@ -1,8 +1,8 @@ import numpy as np -from keras.api_export import keras_export -from keras.utils import dataset_utils -from keras.utils.module_utils import tensorflow as tf +from keras.src.api_export import keras_export +from keras.src.utils import dataset_utils +from keras.src.utils.module_utils import tensorflow as tf @keras_export( diff --git a/keras/utils/text_dataset_utils_test.py b/keras/src/utils/text_dataset_utils_test.py similarity index 99% rename from keras/utils/text_dataset_utils_test.py rename to keras/src/utils/text_dataset_utils_test.py index 023c8f6c7345..6e59b1bb67a3 100644 --- a/keras/utils/text_dataset_utils_test.py +++ b/keras/src/utils/text_dataset_utils_test.py @@ -2,8 +2,8 @@ import random import string -from keras import testing -from keras.utils import text_dataset_utils +from keras.src import testing +from keras.src.utils import text_dataset_utils class TextDatasetFromDirectoryTest(testing.TestCase): diff --git a/keras/utils/tf_utils.py b/keras/src/utils/tf_utils.py similarity index 98% rename from keras/utils/tf_utils.py rename to keras/src/utils/tf_utils.py index 5a622a3a0efe..ea8e45aaf7c7 100644 --- a/keras/utils/tf_utils.py +++ b/keras/src/utils/tf_utils.py @@ -1,4 +1,4 @@ -from keras.utils.module_utils import tensorflow as tf +from keras.src.utils.module_utils import tensorflow as tf def expand_dims(inputs, axis): diff --git a/keras/utils/timeseries_dataset_utils.py b/keras/src/utils/timeseries_dataset_utils.py similarity index 98% rename from keras/utils/timeseries_dataset_utils.py rename to keras/src/utils/timeseries_dataset_utils.py index c0a60482fb32..bf0997b98bbe 100644 --- a/keras/utils/timeseries_dataset_utils.py +++ b/keras/src/utils/timeseries_dataset_utils.py @@ -1,7 +1,7 @@ import numpy as np -from keras.api_export import keras_export -from keras.utils.module_utils import tensorflow as tf +from keras.src.api_export import keras_export +from keras.src.utils.module_utils import tensorflow as tf @keras_export( diff --git a/keras/utils/timeseries_dataset_utils_test.py b/keras/src/utils/timeseries_dataset_utils_test.py similarity index 98% rename from keras/utils/timeseries_dataset_utils_test.py rename to keras/src/utils/timeseries_dataset_utils_test.py index a68ee36ae216..98c75a425e3c 100644 --- a/keras/utils/timeseries_dataset_utils_test.py +++ b/keras/src/utils/timeseries_dataset_utils_test.py @@ -1,7 +1,7 @@ import numpy as np -from keras import testing -from keras.utils import timeseries_dataset_utils +from keras.src import testing +from keras.src.utils import timeseries_dataset_utils class TimeseriesDatasetTest(testing.TestCase): diff --git a/keras/utils/torch_utils.py b/keras/src/utils/torch_utils.py similarity index 93% rename from keras/utils/torch_utils.py rename to keras/src/utils/torch_utils.py index 60d0f7642b65..11cc136f508f 100644 --- a/keras/utils/torch_utils.py +++ b/keras/src/utils/torch_utils.py @@ -2,10 +2,10 @@ from packaging.version import parse -from keras.api_export import keras_export -from keras.layers import Layer -from keras.ops import convert_to_numpy -from keras.ops import convert_to_tensor +from keras.src.api_export import keras_export +from keras.src.layers import Layer +from keras.src.ops import convert_to_numpy +from keras.src.ops import convert_to_tensor @keras_export("keras.layers.TorchModuleWrapper") @@ -33,7 +33,7 @@ class TorchModuleWrapper(Layer): import torch.nn.functional as F import keras - from keras.layers import TorchModuleWrapper + from keras.src.layers import TorchModuleWrapper class Classifier(keras.Model): def __init__(self, **kwargs): @@ -79,7 +79,7 @@ def __init__(self, module, name=None, **kwargs): super().__init__(name=name, **kwargs) import torch.nn as nn - from keras.backend.torch.core import get_device + from keras.src.backend.torch.core import get_device if ( isinstance(module, nn.modules.lazy.LazyModuleMixin) @@ -98,7 +98,7 @@ def parameters(self, recurse=True): return self.module.parameters(recurse=recurse) def _track_module_parameters(self): - from keras.backend.torch import Variable + from keras.src.backend.torch import Variable for param in self.module.parameters(): # The Variable will reuse the raw `param` diff --git a/keras/utils/torch_utils_test.py b/keras/src/utils/torch_utils_test.py similarity index 97% rename from keras/utils/torch_utils_test.py rename to keras/src/utils/torch_utils_test.py index 9b8ff31d7fd8..7e972f5b1b56 100644 --- a/keras/utils/torch_utils_test.py +++ b/keras/src/utils/torch_utils_test.py @@ -5,12 +5,12 @@ import torch from absl.testing import parameterized -from keras import backend -from keras import layers -from keras import models -from keras import saving -from keras import testing -from keras.utils.torch_utils import TorchModuleWrapper +from keras.src import backend +from keras.src import layers +from keras.src import models +from keras.src import saving +from keras.src import testing +from keras.src.utils.torch_utils import TorchModuleWrapper class Classifier(models.Model): diff --git a/keras/utils/traceback_utils.py b/keras/src/utils/traceback_utils.py similarity index 98% rename from keras/utils/traceback_utils.py rename to keras/src/utils/traceback_utils.py index 2b0bddefad46..88c3e9ac0ba2 100644 --- a/keras/utils/traceback_utils.py +++ b/keras/src/utils/traceback_utils.py @@ -4,10 +4,10 @@ import types from functools import wraps -from keras import backend -from keras import tree -from keras.api_export import keras_export -from keras.backend.common import global_state +from keras.src import backend +from keras.src import tree +from keras.src.api_export import keras_export +from keras.src.backend.common import global_state _EXCLUDED_PATHS = ( os.path.abspath(os.path.join(__file__, "..", "..")), diff --git a/keras/utils/tracking.py b/keras/src/utils/tracking.py similarity index 96% rename from keras/utils/tracking.py rename to keras/src/utils/tracking.py index 4a3a76c15d6c..02678de336a0 100644 --- a/keras/utils/tracking.py +++ b/keras/src/utils/tracking.py @@ -1,9 +1,9 @@ from functools import wraps -from keras import tree -from keras.backend.common.global_state import get_global_attribute -from keras.backend.common.global_state import set_global_attribute -from keras.utils import python_utils +from keras.src import tree +from keras.src.backend.common.global_state import get_global_attribute +from keras.src.backend.common.global_state import set_global_attribute +from keras.src.utils import python_utils class DotNotTrackScope: @@ -234,7 +234,7 @@ def clear(self): super().clear() def tree_flatten(self): - from keras.utils.module_utils import optree + from keras.src.utils.module_utils import optree # For optree keys, values = optree.utils.unzip2( @@ -244,7 +244,7 @@ def tree_flatten(self): @classmethod def tree_unflatten(cls, keys, values): - from keras.utils.module_utils import optree + from keras.src.utils.module_utils import optree # For optree return cls(optree.utils.safe_zip(keys, values)) diff --git a/keras/utils/tracking_test.py b/keras/src/utils/tracking_test.py similarity index 96% rename from keras/utils/tracking_test.py rename to keras/src/utils/tracking_test.py index e05379a8971c..dd5e9fc90037 100644 --- a/keras/utils/tracking_test.py +++ b/keras/src/utils/tracking_test.py @@ -1,8 +1,8 @@ import collections -from keras import backend -from keras import testing -from keras.utils import tracking +from keras.src import backend +from keras.src import testing +from keras.src.utils import tracking class TrackingTest(testing.TestCase): diff --git a/keras/version.py b/keras/src/version.py similarity index 75% rename from keras/version.py rename to keras/src/version.py index 6d3cb0e144eb..3e7f01c4e942 100644 --- a/keras/version.py +++ b/keras/src/version.py @@ -1,4 +1,4 @@ -from keras.api_export import keras_export +from keras.src.api_export import keras_export # Unique source of truth for the version number. __version__ = "3.2.1" diff --git a/keras/testing/__init__.py b/keras/testing/__init__.py deleted file mode 100644 index 34dab7c0c52d..000000000000 --- a/keras/testing/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from keras.testing.test_case import TestCase -from keras.testing.test_case import jax_uses_gpu -from keras.testing.test_case import tensorflow_uses_gpu -from keras.testing.test_case import torch_uses_gpu -from keras.testing.test_case import uses_gpu diff --git a/keras/tree/__init__.py b/keras/tree/__init__.py deleted file mode 100644 index fc6a783879de..000000000000 --- a/keras/tree/__init__.py +++ /dev/null @@ -1,10 +0,0 @@ -from keras.tree.tree_api import assert_same_structure -from keras.tree.tree_api import flatten -from keras.tree.tree_api import is_nested -from keras.tree.tree_api import lists_to_tuples -from keras.tree.tree_api import map_shape_structure -from keras.tree.tree_api import map_structure -from keras.tree.tree_api import map_structure_up_to -from keras.tree.tree_api import pack_sequence_as -from keras.tree.tree_api import register_tree_node_class -from keras.tree.tree_api import traverse diff --git a/keras/utils/__init__.py b/keras/utils/__init__.py deleted file mode 100644 index d02fc32c066d..000000000000 --- a/keras/utils/__init__.py +++ /dev/null @@ -1,24 +0,0 @@ -from keras.utils.audio_dataset_utils import audio_dataset_from_directory -from keras.utils.dataset_utils import split_dataset -from keras.utils.file_utils import get_file -from keras.utils.image_dataset_utils import image_dataset_from_directory -from keras.utils.image_utils import array_to_img -from keras.utils.image_utils import img_to_array -from keras.utils.image_utils import load_img -from keras.utils.image_utils import save_img -from keras.utils.io_utils import disable_interactive_logging -from keras.utils.io_utils import enable_interactive_logging -from keras.utils.io_utils import is_interactive_logging_enabled -from keras.utils.model_visualization import model_to_dot -from keras.utils.model_visualization import plot_model -from keras.utils.numerical_utils import normalize -from keras.utils.numerical_utils import to_categorical -from keras.utils.progbar import Progbar -from keras.utils.python_utils import default -from keras.utils.python_utils import is_default -from keras.utils.python_utils import removeprefix -from keras.utils.python_utils import removesuffix -from keras.utils.rng_utils import set_random_seed -from keras.utils.sequence_utils import pad_sequences -from keras.utils.text_dataset_utils import text_dataset_from_directory -from keras.utils.timeseries_dataset_utils import timeseries_dataset_from_array diff --git a/pip_build.py b/pip_build.py index 2e3cb7f13e99..887c7119e269 100644 --- a/pip_build.py +++ b/pip_build.py @@ -20,10 +20,9 @@ import glob import os import pathlib +import re import shutil -import namex - # Needed because importing torch after TF causes the runtime to crash import torch # noqa: F401 @@ -33,112 +32,6 @@ to_copy = ["setup.py", "README.md"] -def ignore_files(_, filenames): - return [f for f in filenames if f.endswith("_test.py")] - - -def copy_source_to_build_directory(root_path): - # Copy sources (`keras/` directory and setup files) to build - # directory - os.chdir(root_path) - os.mkdir(build_directory) - shutil.copytree( - package, os.path.join(build_directory, package), ignore=ignore_files - ) - for fname in to_copy: - shutil.copy(fname, os.path.join(f"{build_directory}", fname)) - os.chdir(build_directory) - - -def run_namex_conversion(): - # Restructure the codebase so that source files live in `keras/src` - namex.convert_codebase(package, code_directory="src") - - # Generate API __init__.py files in `keras/` - namex.generate_api_files(package, code_directory="src", verbose=True) - - -def create_legacy_directory(): - # Make keras/_tf_keras/ by copying keras/ - tf_keras_dirpath_parent = os.path.join(package, "_tf_keras") - tf_keras_dirpath = os.path.join(tf_keras_dirpath_parent, "keras") - os.makedirs(tf_keras_dirpath) - with open(os.path.join(tf_keras_dirpath_parent, "__init__.py"), "w") as f: - f.write("from keras._tf_keras import keras\n") - with open(os.path.join(package, "__init__.py")) as f: - init_file = f.read() - init_file = init_file.replace( - "from keras import _legacy", - "from keras import _tf_keras", - ) - with open(os.path.join(package, "__init__.py"), "w") as f: - f.write(init_file) - with open(os.path.join(tf_keras_dirpath, "__init__.py"), "w") as f: - f.write(init_file) - for dirname in os.listdir(package): - dirpath = os.path.join(package, dirname) - if os.path.isdir(dirpath) and dirname not in ( - "_legacy", - "_tf_keras", - "src", - ): - shutil.copytree( - dirpath, - os.path.join(tf_keras_dirpath, dirname), - ignore=ignore_files, - ) - - # Copy keras/_legacy/ file contents to keras/_tf_keras/keras - legacy_submodules = [ - path[:-3] - for path in os.listdir(os.path.join(package, "src", "legacy")) - if path.endswith(".py") - ] - legacy_submodules += [ - path - for path in os.listdir(os.path.join(package, "src", "legacy")) - if os.path.isdir(os.path.join(package, "src", "legacy", path)) - ] - - for root, _, fnames in os.walk(os.path.join(package, "_legacy")): - for fname in fnames: - if fname.endswith(".py"): - legacy_fpath = os.path.join(root, fname) - tf_keras_root = root.replace("/_legacy", "/_tf_keras/keras") - core_api_fpath = os.path.join( - root.replace("/_legacy", ""), fname - ) - if not os.path.exists(tf_keras_root): - os.makedirs(tf_keras_root) - tf_keras_fpath = os.path.join(tf_keras_root, fname) - with open(legacy_fpath) as f: - legacy_contents = f.read() - legacy_contents = legacy_contents.replace( - "keras._legacy", "keras._tf_keras.keras" - ) - if os.path.exists(core_api_fpath): - with open(core_api_fpath) as f: - core_api_contents = f.read() - core_api_contents = core_api_contents.replace( - "from keras import _tf_keras\n", "" - ) - for legacy_submodule in legacy_submodules: - core_api_contents = core_api_contents.replace( - f"from keras import {legacy_submodule}\n", - "", - ) - core_api_contents = core_api_contents.replace( - f"keras.{legacy_submodule}", - f"keras._tf_keras.keras.{legacy_submodule}", - ) - legacy_contents = core_api_contents + "\n" + legacy_contents - with open(tf_keras_fpath, "w") as f: - f.write(legacy_contents) - - # Delete keras/_legacy/ - shutil.rmtree(os.path.join(package, "_legacy")) - - def export_version_string(version, is_nightly=False, rc_index=None): """Export Version and Package Name.""" if is_nightly: @@ -156,10 +49,15 @@ def export_version_string(version, is_nightly=False, rc_index=None): version += "rc" + str(rc_index) # Make sure to export the __version__ string - with open(os.path.join(package, "__init__.py")) as f: + with open(os.path.join(package, "src", "version.py")) as f: init_contents = f.read() - with open(os.path.join(package, "__init__.py"), "w") as f: - f.write(init_contents + "\n\n" + f'__version__ = "{version}"\n') + with open(os.path.join(package, "src", "version.py"), "w") as f: + init_contents = re.sub( + "\n__version__ = .*\n", + f'\n__version__ = "{version}"\n', + init_contents, + ) + f.write(init_contents) def build_and_save_output(root_path, __version__): @@ -188,20 +86,10 @@ def build_and_save_output(root_path, __version__): def build(root_path, is_nightly=False, rc_index=None): - if os.path.exists(build_directory): - raise ValueError(f"Directory already exists: {build_directory}") - - try: - copy_source_to_build_directory(root_path) - run_namex_conversion() - create_legacy_directory() - from keras.src.version import __version__ # noqa: E402 - - export_version_string(__version__, is_nightly, rc_index) - return build_and_save_output(root_path, __version__) - finally: - # Clean up: remove the build directory (no longer needed) - shutil.rmtree(build_directory) + from keras.src.version import __version__ # noqa: E402 + + export_version_string(__version__, is_nightly, rc_index) + return build_and_save_output(root_path, __version__) def install_whl(whl_fpath): diff --git a/setup.py b/setup.py index 1a3fbf43e8b7..a78f07dda269 100644 --- a/setup.py +++ b/setup.py @@ -23,10 +23,7 @@ def get_version(rel_path): HERE = pathlib.Path(__file__).parent README = (HERE / "README.md").read_text() -if os.path.exists("keras/version.py"): - VERSION = get_version("keras/version.py") -else: - VERSION = get_version("keras/__init__.py") +VERSION = get_version("keras/src/version.py") setup( name="keras", diff --git a/shell/api_gen.sh b/shell/api_gen.sh new file mode 100755 index 000000000000..92cf6c7c2471 --- /dev/null +++ b/shell/api_gen.sh @@ -0,0 +1,12 @@ +#!/bin/bash +set -Eeuo pipefail + +base_dir=$(dirname $(dirname $0)) + +echo "Generating api directory with public APIs..." +# Generate API Files +python3 "${base_dir}"/api_gen.py + +echo "Formatting api directory..." +# Format API Files +bash "${base_dir}"/shell/format.sh > /dev/null 2>&1