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.
Files changed (227) hide show
  1. {gpflow-2.9.1/gpflow.egg-info → gpflow-2.9.2}/PKG-INFO +3 -1
  2. {gpflow-2.9.1 → gpflow-2.9.2}/RELEASE.md +15 -0
  3. gpflow-2.9.2/VERSION +1 -0
  4. {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/plotters.py +5 -2
  5. {gpflow-2.9.1 → gpflow-2.9.2}/doc/sphinx/conf.py +1 -1
  6. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/__init__.py +1 -0
  7. gpflow-2.9.2/gpflow/keras.py +32 -0
  8. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/models/training_mixins.py +3 -3
  9. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/optimizers/natgrad.py +3 -2
  10. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/utilities/misc.py +4 -2
  11. {gpflow-2.9.1 → gpflow-2.9.2/gpflow.egg-info}/PKG-INFO +3 -1
  12. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow.egg-info/SOURCES.txt +1 -0
  13. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow.egg-info/requires.txt +1 -1
  14. {gpflow-2.9.1 → gpflow-2.9.2}/setup.py +1 -1
  15. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/conditionals/test_uncertain_conditional.py +4 -3
  16. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/models/test_svgp.py +2 -1
  17. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/test_all.py +3 -6
  18. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/test_inducing_variables.py +2 -1
  19. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/test_monitor.py +3 -2
  20. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/utilities/test_training_loop.py +12 -4
  21. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/utilities/test_traversal.py +4 -3
  22. gpflow-2.9.1/VERSION +0 -1
  23. {gpflow-2.9.1 → gpflow-2.9.2}/LICENSE +0 -0
  24. {gpflow-2.9.1 → gpflow-2.9.2}/MANIFEST.in +0 -0
  25. {gpflow-2.9.1 → gpflow-2.9.2}/README.md +0 -0
  26. {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/__init__.py +0 -0
  27. {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/benchmark_api.py +0 -0
  28. {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/benchmarks.py +0 -0
  29. {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/dataset_api.py +0 -0
  30. {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/datasets.py +0 -0
  31. {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/grouping.py +0 -0
  32. {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/metadata.py +0 -0
  33. {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/metric_api.py +0 -0
  34. {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/metrics.py +0 -0
  35. {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/model_api.py +0 -0
  36. {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/models.py +0 -0
  37. {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/paths.py +0 -0
  38. {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/plot.py +0 -0
  39. {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/plotter_api.py +0 -0
  40. {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/registry.py +0 -0
  41. {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/run.py +0 -0
  42. {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/sharding.py +0 -0
  43. {gpflow-2.9.1 → gpflow-2.9.2}/benchmark/tag.py +0 -0
  44. {gpflow-2.9.1 → gpflow-2.9.2}/doc/sphinx/benchmarks.rst +0 -0
  45. {gpflow-2.9.1 → gpflow-2.9.2}/doc/sphinx/bibliography.rst +0 -0
  46. {gpflow-2.9.1 → gpflow-2.9.2}/doc/sphinx/getting_started.rst +0 -0
  47. {gpflow-2.9.1 → gpflow-2.9.2}/doc/sphinx/index.rst +0 -0
  48. {gpflow-2.9.1 → gpflow-2.9.2}/doc/sphinx/installation.rst +0 -0
  49. {gpflow-2.9.1 → gpflow-2.9.2}/doc/sphinx/user_guide.rst +0 -0
  50. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/base.py +0 -0
  51. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/ci_utils.py +0 -0
  52. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/conditionals/__init__.py +0 -0
  53. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/conditionals/conditionals.py +0 -0
  54. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/conditionals/dispatch.py +0 -0
  55. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/conditionals/multioutput/__init__.py +0 -0
  56. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/conditionals/multioutput/conditionals.py +0 -0
  57. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/conditionals/multioutput/sample_conditionals.py +0 -0
  58. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/conditionals/sample_conditionals.py +0 -0
  59. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/conditionals/uncertain_conditionals.py +0 -0
  60. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/conditionals/util.py +0 -0
  61. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/config/__config__.py +0 -0
  62. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/config/__init__.py +0 -0
  63. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/covariances/__init__.py +0 -0
  64. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/covariances/dispatch.py +0 -0
  65. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/covariances/kufs.py +0 -0
  66. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/covariances/kuus.py +0 -0
  67. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/covariances/multioutput/__init__.py +0 -0
  68. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/covariances/multioutput/kufs.py +0 -0
  69. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/covariances/multioutput/kuus.py +0 -0
  70. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/expectations/__init__.py +0 -0
  71. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/expectations/cross_kernels.py +0 -0
  72. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/expectations/dispatch.py +0 -0
  73. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/expectations/expectations.py +0 -0
  74. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/expectations/linears.py +0 -0
  75. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/expectations/mean_functions.py +0 -0
  76. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/expectations/misc.py +0 -0
  77. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/expectations/products.py +0 -0
  78. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/expectations/quadratures.py +0 -0
  79. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/expectations/squared_exponentials.py +0 -0
  80. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/expectations/sums.py +0 -0
  81. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/experimental/__init__.py +0 -0
  82. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/experimental/utils.py +0 -0
  83. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/functions.py +0 -0
  84. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/inducing_variables/__init__.py +0 -0
  85. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/inducing_variables/inducing_patch.py +0 -0
  86. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/inducing_variables/inducing_variables.py +0 -0
  87. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/inducing_variables/multioutput/__init__.py +0 -0
  88. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/inducing_variables/multioutput/inducing_variables.py +0 -0
  89. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/kernels/__init__.py +0 -0
  90. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/kernels/base.py +0 -0
  91. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/kernels/categorical.py +0 -0
  92. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/kernels/changepoints.py +0 -0
  93. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/kernels/convolutional.py +0 -0
  94. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/kernels/linears.py +0 -0
  95. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/kernels/misc.py +0 -0
  96. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/kernels/multioutput/__init__.py +0 -0
  97. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/kernels/multioutput/kernels.py +0 -0
  98. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/kernels/periodic.py +0 -0
  99. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/kernels/statics.py +0 -0
  100. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/kernels/stationaries.py +0 -0
  101. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/kullback_leiblers.py +0 -0
  102. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/likelihoods/__init__.py +0 -0
  103. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/likelihoods/base.py +0 -0
  104. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/likelihoods/misc.py +0 -0
  105. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/likelihoods/multiclass.py +0 -0
  106. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/likelihoods/multilatent.py +0 -0
  107. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/likelihoods/scalar_continuous.py +0 -0
  108. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/likelihoods/scalar_discrete.py +0 -0
  109. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/likelihoods/utils.py +0 -0
  110. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/logdensities.py +0 -0
  111. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/mean_functions.py +0 -0
  112. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/models/__init__.py +0 -0
  113. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/models/cglb.py +0 -0
  114. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/models/gplvm.py +0 -0
  115. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/models/gpmc.py +0 -0
  116. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/models/gpr.py +0 -0
  117. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/models/model.py +0 -0
  118. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/models/sgpmc.py +0 -0
  119. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/models/sgpr.py +0 -0
  120. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/models/svgp.py +0 -0
  121. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/models/util.py +0 -0
  122. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/models/vgp.py +0 -0
  123. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/monitor/__init__.py +0 -0
  124. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/monitor/base.py +0 -0
  125. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/monitor/tensorboard.py +0 -0
  126. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/mypy_flags.py +0 -0
  127. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/optimizers/__init__.py +0 -0
  128. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/optimizers/mcmc.py +0 -0
  129. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/optimizers/scipy.py +0 -0
  130. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/posteriors.py +0 -0
  131. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/probability_distributions.py +0 -0
  132. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/py.typed +0 -0
  133. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/quadrature/__init__.py +0 -0
  134. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/quadrature/base.py +0 -0
  135. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/quadrature/deprecated.py +0 -0
  136. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/quadrature/gauss_hermite.py +0 -0
  137. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/type_flags.py +0 -0
  138. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/utilities/__init__.py +0 -0
  139. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/utilities/bijectors.py +0 -0
  140. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/utilities/model_utils.py +0 -0
  141. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/utilities/multipledispatch.py +0 -0
  142. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/utilities/ops.py +0 -0
  143. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/utilities/parameter_or_function.py +0 -0
  144. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/utilities/traversal.py +0 -0
  145. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow/versions.py +0 -0
  146. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow.egg-info/dependency_links.txt +0 -0
  147. {gpflow-2.9.1 → gpflow-2.9.2}/gpflow.egg-info/top_level.txt +0 -0
  148. {gpflow-2.9.1 → gpflow-2.9.2}/setup.cfg +0 -0
  149. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/__init__.py +0 -0
  150. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/conditionals/__init__.py +0 -0
  151. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/conditionals/test_broadcasted_conditionals.py +0 -0
  152. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/conditionals/test_conditionals.py +0 -0
  153. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/conditionals/test_multioutput.py +0 -0
  154. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/conditionals/test_util.py +0 -0
  155. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/config/__init__.py +0 -0
  156. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/config/test_config.py +0 -0
  157. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/conftest.py +0 -0
  158. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/covariances/__init__.py +0 -0
  159. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/covariances/test_base_covariances.py +0 -0
  160. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/covariances/test_multioutput.py +0 -0
  161. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/expectations/__init__.py +0 -0
  162. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/expectations/test_expectations.py +0 -0
  163. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/experimental/__init__.py +0 -0
  164. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/experimental/test_utils.py +0 -0
  165. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/kernels/__init__.py +0 -0
  166. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/kernels/reference.py +0 -0
  167. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/kernels/test_broadcasting.py +0 -0
  168. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/kernels/test_changepoints.py +0 -0
  169. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/kernels/test_coregion.py +0 -0
  170. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/kernels/test_kernels.py +0 -0
  171. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/kernels/test_positive_semidefinite.py +0 -0
  172. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/kernels/test_scaled_euclid_dist.py +0 -0
  173. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/likelihoods/__init__.py +0 -0
  174. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/likelihoods/test_function_params.py +0 -0
  175. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/likelihoods/test_heteroskedastic.py +0 -0
  176. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/likelihoods/test_heteroskedastic_constant_variance.py +0 -0
  177. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/likelihoods/test_likelihoods.py +0 -0
  178. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/likelihoods/test_multiclass.py +0 -0
  179. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/likelihoods/test_switched_likelihood.py +0 -0
  180. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/models/__init__.py +0 -0
  181. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/models/test_cglb.py +0 -0
  182. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/models/test_gplvm.py +0 -0
  183. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/models/test_gpr.py +0 -0
  184. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/models/test_gpr_posterior.py +0 -0
  185. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/models/test_mcmc.py +0 -0
  186. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/models/test_methods.py +0 -0
  187. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/models/test_model_predict.py +0 -0
  188. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/models/test_sgpr.py +0 -0
  189. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/models/test_sgpr_posterior.py +0 -0
  190. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/models/test_svgp_posterior.py +0 -0
  191. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/models/test_training_mixins.py +0 -0
  192. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/models/test_variational.py +0 -0
  193. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/models/test_vgp.py +0 -0
  194. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/models/test_vgp_posterior.py +0 -0
  195. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/optimizers/__init__.py +0 -0
  196. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/optimizers/test_mcmc.py +0 -0
  197. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/optimizers/test_natural_gradient.py +0 -0
  198. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/optimizers/test_scipy.py +0 -0
  199. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/posteriors/__init__.py +0 -0
  200. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/posteriors/conftest.py +0 -0
  201. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/posteriors/test_bo_integration.py +0 -0
  202. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/posteriors/test_posteriors.py +0 -0
  203. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/test_base.py +0 -0
  204. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/test_base_prior.py +0 -0
  205. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/test_base_training.py +0 -0
  206. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/test_functions.py +0 -0
  207. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/test_initial_value.py +0 -0
  208. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/test_kullback_leiblers.py +0 -0
  209. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/test_logdensities.py +0 -0
  210. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/utilities/__init__.py +0 -0
  211. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/utilities/test_bijectors.py +0 -0
  212. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/utilities/test_deepcopy.py +0 -0
  213. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/utilities/test_misc.py +0 -0
  214. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/utilities/test_model_utils.py +0 -0
  215. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/utilities/test_multipledispatch.py +0 -0
  216. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/utilities/test_ops.py +0 -0
  217. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/utilities/test_parameter_or_function.py +0 -0
  218. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/utilities/test_set_trainable.py +0 -0
  219. {gpflow-2.9.1 → gpflow-2.9.2}/tests/gpflow/utilities/test_utilities.py +0 -0
  220. {gpflow-2.9.1 → gpflow-2.9.2}/tests/integration/__init__.py +0 -0
  221. {gpflow-2.9.1 → gpflow-2.9.2}/tests/integration/test_benchmark.py +0 -0
  222. {gpflow-2.9.1 → gpflow-2.9.2}/tests/integration/test_docs.py +0 -0
  223. {gpflow-2.9.1 → gpflow-2.9.2}/tests/integration/test_dynamic_shapes.py +0 -0
  224. {gpflow-2.9.1 → gpflow-2.9.2}/tests/integration/test_linear_noise.py +0 -0
  225. {gpflow-2.9.1 → gpflow-2.9.2}/tests/integration/test_method_equivalence.py +0 -0
  226. {gpflow-2.9.1 → gpflow-2.9.2}/tests/integration/test_model_serialization.py +0 -0
  227. {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.1
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
- ax.boxplot(values, labels=labels)
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.1"
27
+ release = "2.9.2"
28
28
 
29
29
  # -- General configuration ---------------------------------------------------
30
30
 
@@ -56,6 +56,7 @@ __all__ = [
56
56
  "experimental",
57
57
  "functions",
58
58
  "inducing_variables",
59
+ "keras",
59
60
  "kernels",
60
61
  "kullback_leiblers",
61
62
  "likelihoods",
@@ -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
- `tf.optimizers.Optimizer`.
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
- `tf.optimizers.Optimizer`.
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
- `tf.optimizers.Optimizer`.
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(tf.optimizers.Optimizer):
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
- tf.optimizers.Optimizer. Its only public method is minimize(), which has
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[tf.optimizers.Optimizer] = None,
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 = tf.optimizers.Adam() if optimizer is None else 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.1
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
+
@@ -34,6 +34,7 @@ gpflow/__init__.py
34
34
  gpflow/base.py
35
35
  gpflow/ci_utils.py
36
36
  gpflow/functions.py
37
+ gpflow/keras.py
37
38
  gpflow/kullback_leiblers.py
38
39
  gpflow/logdensities.py
39
40
  gpflow/mean_functions.py
@@ -6,7 +6,7 @@ packaging
6
6
  scipy
7
7
  setuptools>=41.0.0
8
8
  tabulate
9
- tensorflow-probability>=0.12.0
9
+ tensorflow-probability[tf]>=0.12.0
10
10
  typing_extensions
11
11
 
12
12
  [:platform_system != "Darwin" or platform_machine != "arm64"]
@@ -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=tf.optimizers.Adam(),
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=tf.optimizers.Adam(),
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=tf.optimizers.Adam(),
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 = tf.optimizers.SGD(learning_rate=0.001)
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
- imported_sorted = sorted(attr for attr in dir(package) if not is_dunder(attr))
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
- all_sorted = sorted(attr for attr in all_list if not is_dunder(attr))
65
- assert imported_sorted == all_sorted, (
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 = tf.optimizers.Adam()
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 = tf.optimizers.Adam()
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 = tf.optimizers.Adam()
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, tf.optimizers.Adam(), m1.trainable_variables, maxiter=50, compile=True
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, tf.optimizers.Adam(), m2.trainable_variables, maxiter=50, compile=False
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
- tf.optimizers.Adam(learning_rate=0.01),
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(tf.keras.Model):
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 = tf.keras.layers.Dense(5)
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 `tf.keras.Model` printing
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