gpflow 2.9.1__tar.gz → 2.9.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {gpflow-2.9.1/gpflow.egg-info → gpflow-2.9.2}/PKG-INFO +3 -1
- {gpflow-2.9.1 → gpflow-2.9.2}/RELEASE.md +15 -0
- gpflow-2.9.2/VERSION +1 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/plotters.py +5 -2
- {gpflow-2.9.1 → gpflow-2.9.2}/doc/sphinx/conf.py +1 -1
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/__init__.py +1 -0
- gpflow-2.9.2/gpflow/keras.py +32 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/models/training_mixins.py +3 -3
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/optimizers/natgrad.py +3 -2
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/utilities/misc.py +4 -2
- {gpflow-2.9.1 → gpflow-2.9.2/gpflow.egg-info}/PKG-INFO +3 -1
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow.egg-info/SOURCES.txt +1 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow.egg-info/requires.txt +1 -1
- {gpflow-2.9.1 → gpflow-2.9.2}/setup.py +1 -1
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/conditionals/test_uncertain_conditional.py +4 -3
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/models/test_svgp.py +2 -1
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/test_all.py +3 -6
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/test_inducing_variables.py +2 -1
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/test_monitor.py +3 -2
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/utilities/test_training_loop.py +12 -4
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/utilities/test_traversal.py +4 -3
- gpflow-2.9.1/VERSION +0 -1
- {gpflow-2.9.1 → gpflow-2.9.2}/LICENSE +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/MANIFEST.in +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/README.md +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/__init__.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/benchmark_api.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/benchmarks.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/dataset_api.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/datasets.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/grouping.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/metadata.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/metric_api.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/metrics.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/model_api.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/models.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/paths.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/plot.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/plotter_api.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/registry.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/run.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/sharding.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/tag.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/doc/sphinx/benchmarks.rst +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/doc/sphinx/bibliography.rst +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/doc/sphinx/getting_started.rst +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/doc/sphinx/index.rst +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/doc/sphinx/installation.rst +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/doc/sphinx/user_guide.rst +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/base.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/ci_utils.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/conditionals/__init__.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/conditionals/conditionals.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/conditionals/dispatch.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/conditionals/multioutput/__init__.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/conditionals/multioutput/conditionals.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/conditionals/multioutput/sample_conditionals.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/conditionals/sample_conditionals.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/conditionals/uncertain_conditionals.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/conditionals/util.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/config/__config__.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/config/__init__.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/covariances/__init__.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/covariances/dispatch.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/covariances/kufs.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/covariances/kuus.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/covariances/multioutput/__init__.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/covariances/multioutput/kufs.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/covariances/multioutput/kuus.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/expectations/__init__.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/expectations/cross_kernels.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/expectations/dispatch.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/expectations/expectations.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/expectations/linears.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/expectations/mean_functions.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/expectations/misc.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/expectations/products.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/expectations/quadratures.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/expectations/squared_exponentials.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/expectations/sums.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/experimental/__init__.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/experimental/utils.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/functions.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/inducing_variables/__init__.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/inducing_variables/inducing_patch.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/inducing_variables/inducing_variables.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/inducing_variables/multioutput/__init__.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/inducing_variables/multioutput/inducing_variables.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/kernels/__init__.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/kernels/base.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/kernels/categorical.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/kernels/changepoints.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/kernels/convolutional.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/kernels/linears.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/kernels/misc.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/kernels/multioutput/__init__.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/kernels/multioutput/kernels.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/kernels/periodic.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/kernels/statics.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/kernels/stationaries.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/kullback_leiblers.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/likelihoods/__init__.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/likelihoods/base.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/likelihoods/misc.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/likelihoods/multiclass.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/likelihoods/multilatent.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/likelihoods/scalar_continuous.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/likelihoods/scalar_discrete.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/likelihoods/utils.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/logdensities.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/mean_functions.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/models/__init__.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/models/cglb.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/models/gplvm.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/models/gpmc.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/models/gpr.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/models/model.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/models/sgpmc.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/models/sgpr.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/models/svgp.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/models/util.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/models/vgp.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/monitor/__init__.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/monitor/base.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/monitor/tensorboard.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/mypy_flags.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/optimizers/__init__.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/optimizers/mcmc.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/optimizers/scipy.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/posteriors.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/probability_distributions.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/py.typed +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/quadrature/__init__.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/quadrature/base.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/quadrature/deprecated.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/quadrature/gauss_hermite.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/type_flags.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/utilities/__init__.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/utilities/bijectors.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/utilities/model_utils.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/utilities/multipledispatch.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/utilities/ops.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/utilities/parameter_or_function.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/utilities/traversal.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/versions.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow.egg-info/dependency_links.txt +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/gpflow.egg-info/top_level.txt +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/setup.cfg +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/__init__.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/conditionals/__init__.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/conditionals/test_broadcasted_conditionals.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/conditionals/test_conditionals.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/conditionals/test_multioutput.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/conditionals/test_util.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/config/__init__.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/config/test_config.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/conftest.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/covariances/__init__.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/covariances/test_base_covariances.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/covariances/test_multioutput.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/expectations/__init__.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/expectations/test_expectations.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/experimental/__init__.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/experimental/test_utils.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/kernels/__init__.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/kernels/reference.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/kernels/test_broadcasting.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/kernels/test_changepoints.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/kernels/test_coregion.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/kernels/test_kernels.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/kernels/test_positive_semidefinite.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/kernels/test_scaled_euclid_dist.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/likelihoods/__init__.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/likelihoods/test_function_params.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/likelihoods/test_heteroskedastic.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/likelihoods/test_heteroskedastic_constant_variance.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/likelihoods/test_likelihoods.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/likelihoods/test_multiclass.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/likelihoods/test_switched_likelihood.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/models/__init__.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/models/test_cglb.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/models/test_gplvm.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/models/test_gpr.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/models/test_gpr_posterior.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/models/test_mcmc.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/models/test_methods.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/models/test_model_predict.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/models/test_sgpr.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/models/test_sgpr_posterior.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/models/test_svgp_posterior.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/models/test_training_mixins.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/models/test_variational.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/models/test_vgp.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/models/test_vgp_posterior.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/optimizers/__init__.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/optimizers/test_mcmc.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/optimizers/test_natural_gradient.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/optimizers/test_scipy.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/posteriors/__init__.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/posteriors/conftest.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/posteriors/test_bo_integration.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/posteriors/test_posteriors.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/test_base.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/test_base_prior.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/test_base_training.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/test_functions.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/test_initial_value.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/test_kullback_leiblers.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/test_logdensities.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/utilities/__init__.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/utilities/test_bijectors.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/utilities/test_deepcopy.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/utilities/test_misc.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/utilities/test_model_utils.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/utilities/test_multipledispatch.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/utilities/test_ops.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/utilities/test_parameter_or_function.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/utilities/test_set_trainable.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/utilities/test_utilities.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/integration/__init__.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/integration/test_benchmark.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/integration/test_docs.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/integration/test_dynamic_shapes.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/integration/test_linear_noise.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/integration/test_method_equivalence.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/integration/test_model_serialization.py +0 -0
- {gpflow-2.9.1 → gpflow-2.9.2}/tests/integration/test_notebooks.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: gpflow
|
|
3
|
-
Version: 2.9.
|
|
3
|
+
Version: 2.9.2
|
|
4
4
|
Summary: Gaussian process methods in TensorFlow
|
|
5
5
|
Home-page: https://www.gpflow.org
|
|
6
6
|
Author: James Hensman, Alex Matthews
|
|
@@ -9,6 +9,7 @@ License: Apache License 2.0
|
|
|
9
9
|
Project-URL: Source on GitHub, https://github.com/GPflow/GPflow
|
|
10
10
|
Project-URL: Documentation, https://gpflow.github.io/GPflow/
|
|
11
11
|
Keywords: machine-learning gaussian-processes kernels tensorflow
|
|
12
|
+
Platform: UNKNOWN
|
|
12
13
|
Classifier: Development Status :: 5 - Production/Stable
|
|
13
14
|
Classifier: Environment :: GPU :: NVIDIA CUDA
|
|
14
15
|
Classifier: Intended Audience :: Developers
|
|
@@ -216,3 +217,4 @@ which can be cited by users.
|
|
|
216
217
|
url = {https://arxiv.org/abs/2003.01115}
|
|
217
218
|
}
|
|
218
219
|
```
|
|
220
|
+
|
|
@@ -66,6 +66,21 @@ This release contains contributions from:
|
|
|
66
66
|
<INSERT>, <NAME>, <HERE>, <USING>, <GITHUB>, <HANDLE>
|
|
67
67
|
|
|
68
68
|
|
|
69
|
+
# Release 2.9.2
|
|
70
|
+
|
|
71
|
+
This patch release adds support for Tensorflow 2.16.
|
|
72
|
+
|
|
73
|
+
## Bug Fixes and Other Changes
|
|
74
|
+
|
|
75
|
+
* Support and test against Tensorflow 2.16. **Note that (like tensorflow-probability) GPflow uses Keras 2. Since TF 2.16 defaults to Keras 3, `tf.keras` must now be imported from the `tf_keras` package. Alternatively, you can import `tf_keras` from the `gpflow.keras` module, which will automatically select the right source depending on which version of TF is installed.**
|
|
76
|
+
|
|
77
|
+
## Thanks to our Contributors
|
|
78
|
+
|
|
79
|
+
This release contains contributions from:
|
|
80
|
+
|
|
81
|
+
uri-granta
|
|
82
|
+
|
|
83
|
+
|
|
69
84
|
# Release 2.9.1
|
|
70
85
|
|
|
71
86
|
This patch release fixes a number of identified issues.
|
gpflow-2.9.2/VERSION
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.9.2
|
|
@@ -18,9 +18,11 @@ from dataclasses import replace
|
|
|
18
18
|
from math import isnan
|
|
19
19
|
from typing import Collection, Tuple
|
|
20
20
|
|
|
21
|
+
import matplotlib
|
|
21
22
|
import pandas as pd
|
|
22
23
|
from matplotlib.axes import Axes
|
|
23
24
|
from matplotlib.dates import date2num
|
|
25
|
+
from packaging.version import Version
|
|
24
26
|
|
|
25
27
|
from benchmark.grouping import GroupingKey, GroupingSpec, group
|
|
26
28
|
from benchmark.metadata import BenchmarkMetadata, parse_timestamp
|
|
@@ -85,8 +87,9 @@ def metrics_box_plot(
|
|
|
85
87
|
for key, df, _ in group(metrics_df, [], metadata, line_by):
|
|
86
88
|
labels.append(_join_key(key))
|
|
87
89
|
values.append(df.value)
|
|
88
|
-
|
|
89
|
-
|
|
90
|
+
# cf https://github.com/matplotlib/matplotlib/pull/27901
|
|
91
|
+
label_id = "tick_labels" if Version(matplotlib.__version__) >= Version("3.9.0") else "labels"
|
|
92
|
+
ax.boxplot(values, **{label_id: labels}) # type: ignore[arg-type]
|
|
90
93
|
_shared_ax_config(ax, file_key, column_key, row_key, metric)
|
|
91
94
|
|
|
92
95
|
|
|
@@ -24,7 +24,7 @@ copyright = "2023, The GPflow Contributors"
|
|
|
24
24
|
author = "The GPflow Contributors"
|
|
25
25
|
|
|
26
26
|
# The full version, including alpha/beta/rc tags
|
|
27
|
-
release = "2.9.
|
|
27
|
+
release = "2.9.2"
|
|
28
28
|
|
|
29
29
|
# -- General configuration ---------------------------------------------------
|
|
30
30
|
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Copyright 2024 The GPflow Contributors. All Rights Reserved.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
# GPflow currently uses Keras 2. Depending on the version of Tensorflow installed,
|
|
16
|
+
# this is available either at tf_keras or at tensorflow.keras. This module provides
|
|
17
|
+
# a helpful version-agnostic shortcut for importing this. Note though that importing specific
|
|
18
|
+
# identifiers can only be done via attribute lookups:
|
|
19
|
+
#
|
|
20
|
+
# >> from gpflow.keras import tf_keras
|
|
21
|
+
# >> Adam = tf_keras.optimizers.Adam
|
|
22
|
+
# >> # The following does NOT work
|
|
23
|
+
# >> from tf_keras.optimizers import Adam
|
|
24
|
+
|
|
25
|
+
try:
|
|
26
|
+
import tf_keras
|
|
27
|
+
except ModuleNotFoundError:
|
|
28
|
+
import tensorflow.keras as tf_keras
|
|
29
|
+
|
|
30
|
+
tf_keras = tf_keras
|
|
31
|
+
|
|
32
|
+
__all__ = ["tf_keras"]
|
|
@@ -47,7 +47,7 @@ class InternalDataTrainingLossMixin:
|
|
|
47
47
|
- a uniform API for the training loss :meth:`training_loss`
|
|
48
48
|
- a convenience method :meth:`training_loss_closure` for constructing the closure expected by
|
|
49
49
|
various optimizers, namely :class:`gpflow.optimizers.Scipy` and subclasses of
|
|
50
|
-
`
|
|
50
|
+
`tf_keras.optimizers.Optimizer`.
|
|
51
51
|
|
|
52
52
|
See :class:`ExternalDataTrainingLossMixin` for an equivalent mixin for models that do **not**
|
|
53
53
|
own their own data.
|
|
@@ -67,7 +67,7 @@ class InternalDataTrainingLossMixin:
|
|
|
67
67
|
"""
|
|
68
68
|
Convenience method. Returns a closure which itself returns the training loss. This closure
|
|
69
69
|
can be passed to the minimize methods on :class:`gpflow.optimizers.Scipy` and subclasses of
|
|
70
|
-
`
|
|
70
|
+
`tf_keras.optimizers.Optimizer`.
|
|
71
71
|
|
|
72
72
|
:param compile: If `True` (default), compile the training loss function in a TensorFlow
|
|
73
73
|
graph by wrapping it in tf.function()
|
|
@@ -86,7 +86,7 @@ class ExternalDataTrainingLossMixin:
|
|
|
86
86
|
- a uniform API for the training loss :meth:`training_loss`
|
|
87
87
|
- a convenience method :meth:`training_loss_closure` for constructing the closure expected by
|
|
88
88
|
various optimizers, namely :class:`gpflow.optimizers.Scipy` and subclasses of
|
|
89
|
-
`
|
|
89
|
+
`tf_keras.optimizers.Optimizer`.
|
|
90
90
|
|
|
91
91
|
See :class:`InternalDataTrainingLossMixin` for an equivalent mixin for models that **do** own
|
|
92
92
|
their own data.
|
|
@@ -20,6 +20,7 @@ import tensorflow as tf
|
|
|
20
20
|
from check_shapes import check_shapes
|
|
21
21
|
|
|
22
22
|
from ..base import AnyNDArray, Parameter, _to_constrained
|
|
23
|
+
from ..keras import tf_keras
|
|
23
24
|
|
|
24
25
|
Scalar = Union[float, tf.Tensor, AnyNDArray]
|
|
25
26
|
LossClosure = Callable[[], tf.Tensor]
|
|
@@ -172,7 +173,7 @@ class XiSqrtMeanVar(XiTransform):
|
|
|
172
173
|
return natural_to_meanvarsqrt(nat1, nat2)
|
|
173
174
|
|
|
174
175
|
|
|
175
|
-
class NaturalGradient(
|
|
176
|
+
class NaturalGradient(tf_keras.optimizers.Optimizer):
|
|
176
177
|
"""
|
|
177
178
|
Implements a natural gradient descent optimizer for variational models
|
|
178
179
|
that are based on a distribution q(u) = N(q_mu, q_sqrt q_sqrtᵀ) that is
|
|
@@ -180,7 +181,7 @@ class NaturalGradient(tf.optimizers.Optimizer):
|
|
|
180
181
|
of the covariance.
|
|
181
182
|
|
|
182
183
|
Note that this optimizer does not implement the standard API of
|
|
183
|
-
|
|
184
|
+
tf_keras.optimizers.Optimizer. Its only public method is minimize(), which has
|
|
184
185
|
a custom signature (var_list needs to be a list of (q_mu, q_sqrt) tuples,
|
|
185
186
|
where q_mu and q_sqrt are gpflow.Parameter instances, not tf.Variable).
|
|
186
187
|
|
|
@@ -29,6 +29,8 @@ __all__ = [
|
|
|
29
29
|
"training_loop",
|
|
30
30
|
]
|
|
31
31
|
|
|
32
|
+
from ..keras import tf_keras
|
|
33
|
+
|
|
32
34
|
|
|
33
35
|
@check_shapes(
|
|
34
36
|
"x: [any...]",
|
|
@@ -73,7 +75,7 @@ def is_variable(t: TensorData) -> bool:
|
|
|
73
75
|
|
|
74
76
|
def training_loop(
|
|
75
77
|
closure: Callable[[], tf.Tensor],
|
|
76
|
-
optimizer: Optional[
|
|
78
|
+
optimizer: Optional[tf_keras.optimizers.Optimizer] = None,
|
|
77
79
|
var_list: Optional[List[tf.Variable]] = None,
|
|
78
80
|
maxiter: int = 1_000,
|
|
79
81
|
compile: bool = False,
|
|
@@ -90,7 +92,7 @@ def training_loop(
|
|
|
90
92
|
:return:
|
|
91
93
|
"""
|
|
92
94
|
|
|
93
|
-
safe_optimizer =
|
|
95
|
+
safe_optimizer = tf_keras.optimizers.Adam() if optimizer is None else optimizer
|
|
94
96
|
safe_var_list = [] if var_list is None else var_list
|
|
95
97
|
|
|
96
98
|
def optimization_step() -> None:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: gpflow
|
|
3
|
-
Version: 2.9.
|
|
3
|
+
Version: 2.9.2
|
|
4
4
|
Summary: Gaussian process methods in TensorFlow
|
|
5
5
|
Home-page: https://www.gpflow.org
|
|
6
6
|
Author: James Hensman, Alex Matthews
|
|
@@ -9,6 +9,7 @@ License: Apache License 2.0
|
|
|
9
9
|
Project-URL: Source on GitHub, https://github.com/GPflow/GPflow
|
|
10
10
|
Project-URL: Documentation, https://gpflow.github.io/GPflow/
|
|
11
11
|
Keywords: machine-learning gaussian-processes kernels tensorflow
|
|
12
|
+
Platform: UNKNOWN
|
|
12
13
|
Classifier: Development Status :: 5 - Production/Stable
|
|
13
14
|
Classifier: Environment :: GPU :: NVIDIA CUDA
|
|
14
15
|
Classifier: Intended Audience :: Developers
|
|
@@ -216,3 +217,4 @@ which can be cited by users.
|
|
|
216
217
|
url = {https://arxiv.org/abs/2003.01115}
|
|
217
218
|
}
|
|
218
219
|
```
|
|
220
|
+
|
|
@@ -16,7 +16,7 @@ requirements = [
|
|
|
16
16
|
"scipy",
|
|
17
17
|
"setuptools>=41.0.0", # to satisfy dependency constraints
|
|
18
18
|
"tabulate",
|
|
19
|
-
"tensorflow-probability>=0.12.0",
|
|
19
|
+
"tensorflow-probability[tf]>=0.12.0",
|
|
20
20
|
"tensorflow>=2.4.0; platform_system!='Darwin' or platform_machine!='arm64'",
|
|
21
21
|
# NOTE: Support of Apple Silicon MacOS platforms is in an experimental mode
|
|
22
22
|
"tensorflow-macos>=2.4.0; platform_system=='Darwin' and platform_machine=='arm64'",
|
|
@@ -24,6 +24,7 @@ import gpflow
|
|
|
24
24
|
from gpflow.base import AnyNDArray, MeanAndVariance
|
|
25
25
|
from gpflow.conditionals import conditional, uncertain_conditional
|
|
26
26
|
from gpflow.config import default_float
|
|
27
|
+
from gpflow.keras import tf_keras
|
|
27
28
|
from gpflow.mean_functions import Constant, Linear, MeanFunction, Zero
|
|
28
29
|
from gpflow.quadrature import mvnquad
|
|
29
30
|
from gpflow.utilities import training_loop
|
|
@@ -193,7 +194,7 @@ def test_no_uncertainty(white: bool, mean: Optional[str]) -> None:
|
|
|
193
194
|
|
|
194
195
|
training_loop(
|
|
195
196
|
model.training_loss_closure(Data.data),
|
|
196
|
-
optimizer=
|
|
197
|
+
optimizer=tf_keras.optimizers.Adam(),
|
|
197
198
|
var_list=model.trainable_variables,
|
|
198
199
|
maxiter=100,
|
|
199
200
|
compile=True,
|
|
@@ -226,7 +227,7 @@ def test_monte_carlo_1_din(white: bool, mean: Optional[str]) -> None:
|
|
|
226
227
|
|
|
227
228
|
training_loop(
|
|
228
229
|
model.training_loss_closure(DataMC1.data),
|
|
229
|
-
optimizer=
|
|
230
|
+
optimizer=tf_keras.optimizers.Adam(),
|
|
230
231
|
var_list=model.trainable_variables,
|
|
231
232
|
maxiter=200,
|
|
232
233
|
compile=True,
|
|
@@ -261,7 +262,7 @@ def test_monte_carlo_2_din(white: bool, mean: Optional[str]) -> None:
|
|
|
261
262
|
|
|
262
263
|
training_loop(
|
|
263
264
|
model.training_loss_closure(DataMC2.data),
|
|
264
|
-
optimizer=
|
|
265
|
+
optimizer=tf_keras.optimizers.Adam(),
|
|
265
266
|
var_list=model.trainable_variables,
|
|
266
267
|
maxiter=100,
|
|
267
268
|
compile=True,
|
|
@@ -21,6 +21,7 @@ from numpy.testing import assert_allclose
|
|
|
21
21
|
import gpflow
|
|
22
22
|
from gpflow import set_trainable
|
|
23
23
|
from gpflow.base import AnyNDArray
|
|
24
|
+
from gpflow.keras import tf_keras
|
|
24
25
|
from gpflow.models import SVGP
|
|
25
26
|
|
|
26
27
|
|
|
@@ -184,7 +185,7 @@ def test_stochastic_gradients(
|
|
|
184
185
|
|
|
185
186
|
def training_loop(indices: Sequence[int], num_data: int, max_iter: int) -> SVGP:
|
|
186
187
|
model = get_model(num_data)
|
|
187
|
-
opt =
|
|
188
|
+
opt = tf_keras.optimizers.SGD(learning_rate=0.001)
|
|
188
189
|
data = X[indices], Y[indices]
|
|
189
190
|
for _ in range(max_iter):
|
|
190
191
|
with tf.GradientTape() as tape:
|
|
@@ -58,14 +58,11 @@ _MODULES_WITH_ALL = [m for m in _MODULES if hasattr(m, "__all__")]
|
|
|
58
58
|
|
|
59
59
|
@pytest.mark.parametrize("package", _PACKAGES)
|
|
60
60
|
def test_all_present_and_up_to_date(package: ModuleType) -> None:
|
|
61
|
-
|
|
61
|
+
imported_set = set(attr for attr in dir(package) if not is_dunder(attr))
|
|
62
62
|
all_list = getattr(package, "__all__", None)
|
|
63
63
|
assert all_list is not None, f"Package {package} is missing an explicit __all__."
|
|
64
|
-
|
|
65
|
-
assert
|
|
66
|
-
f"{package}.__all__ is outdated."
|
|
67
|
-
f" Imported values are {imported_sorted}, but exported values are {all_list}."
|
|
68
|
-
)
|
|
64
|
+
all_set = set(attr for attr in all_list if not is_dunder(attr))
|
|
65
|
+
assert imported_set == all_set, f"{package}.__all__ is outdated."
|
|
69
66
|
|
|
70
67
|
|
|
71
68
|
@pytest.mark.parametrize("module", _MODULES_WITH_ALL)
|
|
@@ -23,6 +23,7 @@ from check_shapes.error_contexts import ErrorContext, MessageBuilder
|
|
|
23
23
|
|
|
24
24
|
import gpflow
|
|
25
25
|
import gpflow.inducing_variables as giv
|
|
26
|
+
from gpflow.keras import tf_keras
|
|
26
27
|
|
|
27
28
|
|
|
28
29
|
@dataclass(frozen=True)
|
|
@@ -50,7 +51,7 @@ def test_inducing_points_with_variable_shape() -> None:
|
|
|
50
51
|
m = gpflow.models.SGPR(data=(X, Y), kernel=gpflow.kernels.Matern32(), inducing_variable=iv)
|
|
51
52
|
|
|
52
53
|
# Check 1: that we can still optimize with None shape
|
|
53
|
-
opt =
|
|
54
|
+
opt = tf_keras.optimizers.Adam()
|
|
54
55
|
|
|
55
56
|
@tf.function
|
|
56
57
|
def optimization_step() -> None:
|
|
@@ -12,6 +12,7 @@ from matplotlib.figure import Figure
|
|
|
12
12
|
|
|
13
13
|
import gpflow
|
|
14
14
|
from gpflow.base import AnyNDArray
|
|
15
|
+
from gpflow.keras import tf_keras
|
|
15
16
|
from gpflow.models import GPR, GPModel
|
|
16
17
|
from gpflow.monitor import (
|
|
17
18
|
ExecuteCallback,
|
|
@@ -304,7 +305,7 @@ def test_logdir_created(monitor: Monitor, model: GPModel, tmp_path: Path) -> Non
|
|
|
304
305
|
size_before = _get_size_directory(tmp_path)
|
|
305
306
|
assert size_before > 0
|
|
306
307
|
|
|
307
|
-
opt =
|
|
308
|
+
opt = tf_keras.optimizers.Adam()
|
|
308
309
|
for step in range(Data.num_steps):
|
|
309
310
|
opt.minimize(model.training_loss, model.trainable_variables)
|
|
310
311
|
monitor(step)
|
|
@@ -314,7 +315,7 @@ def test_logdir_created(monitor: Monitor, model: GPModel, tmp_path: Path) -> Non
|
|
|
314
315
|
|
|
315
316
|
|
|
316
317
|
def test_compile_monitor(monitor: Monitor, model: GPModel) -> None:
|
|
317
|
-
opt =
|
|
318
|
+
opt = tf_keras.optimizers.Adam()
|
|
318
319
|
|
|
319
320
|
@tf.function
|
|
320
321
|
def tf_func(step: tf.Tensor) -> None:
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
from typing import Any
|
|
2
2
|
|
|
3
3
|
import numpy as np
|
|
4
|
-
import tensorflow as tf
|
|
5
4
|
from check_shapes import ShapeChecker
|
|
6
5
|
|
|
7
6
|
import gpflow
|
|
7
|
+
from gpflow.keras import tf_keras
|
|
8
8
|
from gpflow.utilities import training_loop
|
|
9
9
|
|
|
10
10
|
|
|
@@ -43,10 +43,18 @@ def test_training_loop_compiles() -> None:
|
|
|
43
43
|
m1 = create_model()
|
|
44
44
|
m2 = create_model()
|
|
45
45
|
training_loop(
|
|
46
|
-
m1.training_loss,
|
|
46
|
+
m1.training_loss,
|
|
47
|
+
tf_keras.optimizers.Adam(),
|
|
48
|
+
m1.trainable_variables,
|
|
49
|
+
maxiter=50,
|
|
50
|
+
compile=True,
|
|
47
51
|
)
|
|
48
52
|
training_loop(
|
|
49
|
-
m2.training_loss,
|
|
53
|
+
m2.training_loss,
|
|
54
|
+
tf_keras.optimizers.Adam(),
|
|
55
|
+
m2.trainable_variables,
|
|
56
|
+
maxiter=50,
|
|
57
|
+
compile=False,
|
|
50
58
|
)
|
|
51
59
|
assert_models_close(m1, m2)
|
|
52
60
|
|
|
@@ -57,7 +65,7 @@ def test_training_loop_converges() -> None:
|
|
|
57
65
|
gpflow.optimizers.Scipy().minimize(mref.training_loss, mref.trainable_variables)
|
|
58
66
|
training_loop(
|
|
59
67
|
m.training_loss,
|
|
60
|
-
|
|
68
|
+
tf_keras.optimizers.Adam(learning_rate=0.01),
|
|
61
69
|
m.trainable_variables,
|
|
62
70
|
maxiter=5000,
|
|
63
71
|
compile=True,
|
|
@@ -23,6 +23,7 @@ from packaging.version import Version
|
|
|
23
23
|
import gpflow
|
|
24
24
|
from gpflow.base import AnyNDArray
|
|
25
25
|
from gpflow.config import Config, as_context
|
|
26
|
+
from gpflow.keras import tf_keras
|
|
26
27
|
from gpflow.utilities import set_trainable
|
|
27
28
|
from gpflow.utilities.traversal import (
|
|
28
29
|
_merge_leaf_components,
|
|
@@ -65,12 +66,12 @@ class B(tf.Module):
|
|
|
65
66
|
self.var_fixed = tf.Variable(tf.ones((2, 2, 1)), trainable=False)
|
|
66
67
|
|
|
67
68
|
|
|
68
|
-
class C(
|
|
69
|
+
class C(tf_keras.Model):
|
|
69
70
|
def __init__(self, name: Optional[str] = None) -> None:
|
|
70
71
|
super().__init__(name)
|
|
71
72
|
self.variable = tf.Variable(tf.zeros((2, 2, 1)), trainable=True)
|
|
72
73
|
self.param = gpflow.Parameter(0.0)
|
|
73
|
-
self.dense =
|
|
74
|
+
self.dense = tf_keras.layers.Dense(5)
|
|
74
75
|
|
|
75
76
|
|
|
76
77
|
def create_kernel() -> gpflow.kernels.Kernel:
|
|
@@ -409,7 +410,7 @@ def test_print_summary_output_string_with_positive_minimum() -> None:
|
|
|
409
410
|
|
|
410
411
|
|
|
411
412
|
def test_print_summary_for_keras_model() -> None:
|
|
412
|
-
# Note: best to use `grid` formatting for `
|
|
413
|
+
# Note: best to use `grid` formatting for `tf_keras.Model` printing
|
|
413
414
|
# because of the duplicates in the references to the variables.
|
|
414
415
|
assert tabulate_module_summary(C(), tablefmt="grid") == example_tf_keras_model
|
|
415
416
|
|
gpflow-2.9.1/VERSION
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
2.9.1
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|