slide2vec 5.9.0__tar.gz → 5.9.1__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 (162) hide show
  1. {slide2vec-5.9.0 → slide2vec-5.9.1}/PKG-INFO +1 -1
  2. {slide2vec-5.9.0 → slide2vec-5.9.1}/pyproject.toml +2 -2
  3. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/__init__.py +1 -1
  4. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/prism.py +2 -0
  5. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec.egg-info/PKG-INFO +1 -1
  6. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec.egg-info/SOURCES.txt +1 -0
  7. slide2vec-5.9.1/tests/test_prism.py +52 -0
  8. {slide2vec-5.9.0 → slide2vec-5.9.1}/LICENSE +0 -0
  9. {slide2vec-5.9.0 → slide2vec-5.9.1}/README.md +0 -0
  10. {slide2vec-5.9.0 → slide2vec-5.9.1}/setup.cfg +0 -0
  11. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/__main__.py +0 -0
  12. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/api.py +0 -0
  13. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/artifacts.py +0 -0
  14. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/cli.py +0 -0
  15. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/configs/__init__.py +0 -0
  16. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/configs/default.yaml +0 -0
  17. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/configs/resources.py +0 -0
  18. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/data/__init__.py +0 -0
  19. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/data/dataset.py +0 -0
  20. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/data/tile_reader.py +0 -0
  21. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/data/tile_store.py +0 -0
  22. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/distributed/__init__.py +0 -0
  23. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/distributed/dense_image_worker.py +0 -0
  24. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/distributed/dense_worker.py +0 -0
  25. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/distributed/direct_embed_worker.py +0 -0
  26. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/distributed/image_worker.py +0 -0
  27. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/distributed/pipeline_worker.py +0 -0
  28. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/distributed/worker_entry.py +0 -0
  29. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/__init__.py +0 -0
  30. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/base.py +0 -0
  31. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/__init__.py +0 -0
  32. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/conch.py +0 -0
  33. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/dinov2.py +0 -0
  34. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/genbio.py +0 -0
  35. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/gigapath.py +0 -0
  36. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/gpfm.py +0 -0
  37. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/hibou.py +0 -0
  38. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/hoptimus.py +0 -0
  39. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/isight.py +0 -0
  40. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/lunit.py +0 -0
  41. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/midnight.py +0 -0
  42. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/moozy/__init__.py +0 -0
  43. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/moozy/blocks.py +0 -0
  44. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/moozy/case.py +0 -0
  45. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/moozy/loading.py +0 -0
  46. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/moozy/slide.py +0 -0
  47. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/moozy/types.py +0 -0
  48. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/mstar.py +0 -0
  49. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/musk.py +0 -0
  50. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/phikon.py +0 -0
  51. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/prism2.py +0 -0
  52. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/prost40m.py +0 -0
  53. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/rudolfv2.py +0 -0
  54. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/titan.py +0 -0
  55. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/uni.py +0 -0
  56. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/virchow.py +0 -0
  57. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/waiv.py +0 -0
  58. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/registry.py +0 -0
  59. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/validation.py +0 -0
  60. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/inference.py +0 -0
  61. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/progress.py +0 -0
  62. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/__init__.py +0 -0
  63. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/artifacts_collect.py +0 -0
  64. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/batching.py +0 -0
  65. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/cpu_budget.py +0 -0
  66. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/dense_encode.py +0 -0
  67. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/dense_encoder_input.py +0 -0
  68. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/dense_image_reading.py +0 -0
  69. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/dense_image_recipe.py +0 -0
  70. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/dense_image_shard.py +0 -0
  71. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/dense_image_stage.py +0 -0
  72. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/dense_regions.py +0 -0
  73. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/dense_shard.py +0 -0
  74. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/dense_sliding.py +0 -0
  75. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/dense_stage.py +0 -0
  76. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/distributed.py +0 -0
  77. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/distributed_stage.py +0 -0
  78. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/effective_encoder_input.py +0 -0
  79. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/embedding.py +0 -0
  80. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/embedding_persist.py +0 -0
  81. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/embedding_pipeline.py +0 -0
  82. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/encoder_input_contract.py +0 -0
  83. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/hierarchical.py +0 -0
  84. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/image_shard.py +0 -0
  85. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/image_specs.py +0 -0
  86. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/image_stage.py +0 -0
  87. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/manifest.py +0 -0
  88. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/model_settings.py +0 -0
  89. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/patient_pipeline.py +0 -0
  90. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/persist_callbacks.py +0 -0
  91. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/persistence.py +0 -0
  92. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/pooled_encoder_input.py +0 -0
  93. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/preprocessing.py +0 -0
  94. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/process_list.py +0 -0
  95. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/progress_bridge.py +0 -0
  96. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/registry.py +0 -0
  97. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/serialization.py +0 -0
  98. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/sharding.py +0 -0
  99. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/slide_encode.py +0 -0
  100. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/tiling.py +0 -0
  101. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/tiling_pipeline.py +0 -0
  102. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/types.py +0 -0
  103. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/worker_io.py +0 -0
  104. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/utils/__init__.py +0 -0
  105. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/utils/config.py +0 -0
  106. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/utils/coordinates.py +0 -0
  107. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/utils/log_utils.py +0 -0
  108. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/utils/tiling_io.py +0 -0
  109. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/utils/utils.py +0 -0
  110. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec.egg-info/dependency_links.txt +0 -0
  111. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec.egg-info/entry_points.txt +0 -0
  112. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec.egg-info/not-zip-safe +0 -0
  113. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec.egg-info/requires.txt +0 -0
  114. {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec.egg-info/top_level.txt +0 -0
  115. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_architecture_runtime_split.py +0 -0
  116. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_attention_extraction.py +0 -0
  117. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_dense_encode_kit.py +0 -0
  118. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_dense_encoder_input.py +0 -0
  119. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_dense_extraction.py +0 -0
  120. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_dense_image_reading.py +0 -0
  121. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_dense_image_resume.py +0 -0
  122. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_dense_image_shard.py +0 -0
  123. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_dense_image_stage.py +0 -0
  124. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_dense_regions.py +0 -0
  125. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_dense_shard.py +0 -0
  126. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_dense_sliding.py +0 -0
  127. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_dense_source_spacing.py +0 -0
  128. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_dense_stage.py +0 -0
  129. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_dense_worker.py +0 -0
  130. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_dinov2_natimage.py +0 -0
  131. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_encoder_capabilities.py +0 -0
  132. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_encoder_input_contract.py +0 -0
  133. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_encoder_plugins.py +0 -0
  134. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_encoder_provider_failures.py +0 -0
  135. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_encoder_registry.py +0 -0
  136. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_gpfm_genbio_heavy.py +0 -0
  137. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_hs2p_package_cutover.py +0 -0
  138. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_image_shard.py +0 -0
  139. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_image_stage.py +0 -0
  140. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_isight.py +0 -0
  141. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_load_model_hf_auth.py +0 -0
  142. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_mascaret.py +0 -0
  143. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_on_slide_persisted.py +0 -0
  144. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_output_consistency.py +0 -0
  145. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_patch_size_metadata.py +0 -0
  146. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_patient_manifest.py +0 -0
  147. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_phaet.py +0 -0
  148. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_pooled_encoder_input.py +0 -0
  149. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_pooled_geometry.py +0 -0
  150. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_prism2.py +0 -0
  151. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_progress.py +0 -0
  152. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_regression_core.py +0 -0
  153. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_regression_inference.py +0 -0
  154. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_regression_models.py +0 -0
  155. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_rudolfv2.py +0 -0
  156. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_runtime_batching.py +0 -0
  157. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_sharding.py +0 -0
  158. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_slide_coordinate_preparation.py +0 -0
  159. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_soma_migration.py +0 -0
  160. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_tile_store.py +0 -0
  161. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_tiling_pipeline.py +0 -0
  162. {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_titan.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: slide2vec
3
- Version: 5.9.0
3
+ Version: 5.9.1
4
4
  Summary: Embedding of whole slide images with Foundation Models
5
5
  Author-email: Clément Grisi <clement.grisi@radboudumc.nl>
6
6
  License-Expression: Apache-2.0
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "slide2vec"
7
- version = "5.9.0"
7
+ version = "5.9.1"
8
8
  description = "Embedding of whole slide images with Foundation Models"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -180,7 +180,7 @@ no_implicit_reexport = true
180
180
  max-line-length = 160
181
181
 
182
182
  [tool.bumpver]
183
- current_version = "5.9.0"
183
+ current_version = "5.9.1"
184
184
  version_pattern = "MAJOR.MINOR.PATCH"
185
185
  commit = false
186
186
  tag = false
@@ -27,7 +27,7 @@ from slide2vec.encoders import (
27
27
  )
28
28
 
29
29
 
30
- __version__ = "5.9.0"
30
+ __version__ = "5.9.1"
31
31
 
32
32
  __all__ = [
33
33
  "Model",
@@ -46,5 +46,7 @@ class PrismSlideEncoder(SlideEncoder):
46
46
  ) -> torch.Tensor:
47
47
  if tile_features.ndim == 2:
48
48
  tile_features = tile_features.unsqueeze(0)
49
+ # Stored feature precision can differ from PRISM's weights; CPU has no autocast.
50
+ tile_features = tile_features.to(dtype=self._model.dtype)
49
51
  reprs = self._model.slide_representations(tile_features)
50
52
  return reprs["image_embedding"].squeeze(0)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: slide2vec
3
- Version: 5.9.0
3
+ Version: 5.9.1
4
4
  Summary: Embedding of whole slide images with Foundation Models
5
5
  Author-email: Clément Grisi <clement.grisi@radboudumc.nl>
6
6
  License-Expression: Apache-2.0
@@ -144,6 +144,7 @@ tests/test_patient_manifest.py
144
144
  tests/test_phaet.py
145
145
  tests/test_pooled_encoder_input.py
146
146
  tests/test_pooled_geometry.py
147
+ tests/test_prism.py
147
148
  tests/test_prism2.py
148
149
  tests/test_progress.py
149
150
  tests/test_regression_core.py
@@ -0,0 +1,52 @@
1
+ """PRISM accepts persisted features independently of their storage dtype."""
2
+
3
+ from types import SimpleNamespace
4
+
5
+ import pytest
6
+
7
+ torch = pytest.importorskip("torch")
8
+ pytest.importorskip("transformers")
9
+
10
+
11
+ class _TinyPrism(torch.nn.Module):
12
+ def __init__(self, dtype):
13
+ super().__init__()
14
+ self.weight = torch.nn.Parameter(
15
+ torch.tensor([[1.0, 2.0], [3.0, 4.0]], dtype=dtype)
16
+ )
17
+
18
+ @property
19
+ def dtype(self):
20
+ return self.weight.dtype
21
+
22
+ def slide_representations(self, tile_features):
23
+ projected = torch.nn.functional.linear(tile_features, self.weight)
24
+ return {"image_embedding": projected.sum(dim=1)}
25
+
26
+
27
+ @pytest.mark.parametrize(
28
+ ("stored_dtype", "model_dtype"),
29
+ [
30
+ (torch.float16, torch.float32),
31
+ (torch.bfloat16, torch.float32),
32
+ (torch.float32, torch.float32),
33
+ (torch.float32, torch.float16),
34
+ ],
35
+ )
36
+ def test_prism_aggregates_features_in_model_dtype(monkeypatch, stored_dtype, model_dtype):
37
+ import slide2vec.encoders.models.prism as prism
38
+
39
+ monkeypatch.setattr(
40
+ prism,
41
+ "AutoModel",
42
+ SimpleNamespace(from_pretrained=lambda *args, **kwargs: _TinyPrism(model_dtype)),
43
+ )
44
+ encoder = prism.PrismSlideEncoder().to("cpu")
45
+ features = torch.tensor([[1.0, 2.0], [3.0, 4.0]], dtype=stored_dtype)
46
+
47
+ embedding = encoder.encode_slide(features)
48
+
49
+ torch.testing.assert_close(
50
+ embedding, torch.tensor([16.0, 36.0], dtype=model_dtype), rtol=0, atol=0,
51
+ )
52
+ assert features.dtype == stored_dtype
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes