returnn 1.20250226.132109__py3-none-any.whl → 1.20250226.183415__py3-none-any.whl
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.
Potentially problematic release.
This version of returnn might be problematic. Click here for more details.
- returnn/PKG-INFO +1 -1
- returnn/_setup_info_generated.py +2 -2
- returnn/frontend/_numpy_backend.py +29 -0
- returnn/tensor/_dim_extra.py +0 -4
- returnn/tensor/_tensor_extra.py +1 -1
- returnn/tensor/tensor_dict.py +15 -1
- {returnn-1.20250226.132109.dist-info → returnn-1.20250226.183415.dist-info}/METADATA +1 -1
- {returnn-1.20250226.132109.dist-info → returnn-1.20250226.183415.dist-info}/RECORD +11 -11
- {returnn-1.20250226.132109.dist-info → returnn-1.20250226.183415.dist-info}/LICENSE +0 -0
- {returnn-1.20250226.132109.dist-info → returnn-1.20250226.183415.dist-info}/WHEEL +0 -0
- {returnn-1.20250226.132109.dist-info → returnn-1.20250226.183415.dist-info}/top_level.txt +0 -0
returnn/PKG-INFO
CHANGED
returnn/_setup_info_generated.py
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
version = '1.20250226.
|
|
2
|
-
long_version = '1.20250226.
|
|
1
|
+
version = '1.20250226.183415'
|
|
2
|
+
long_version = '1.20250226.183415+git.ba9d72e'
|
|
@@ -159,6 +159,35 @@ class NumpyBackend(Backend[numpy.ndarray]):
|
|
|
159
159
|
res = numpy.array(res)
|
|
160
160
|
return res
|
|
161
161
|
|
|
162
|
+
@staticmethod
|
|
163
|
+
def where(
|
|
164
|
+
cond: Tensor,
|
|
165
|
+
true_: Union[Tensor, rf.RawTensorTypes],
|
|
166
|
+
false_: Union[Tensor, rf.RawTensorTypes],
|
|
167
|
+
*,
|
|
168
|
+
allow_broadcast_all_sources: bool = False,
|
|
169
|
+
) -> Tensor:
|
|
170
|
+
"""where"""
|
|
171
|
+
if isinstance(true_, Tensor):
|
|
172
|
+
dtype = true_.dtype
|
|
173
|
+
elif isinstance(false_, Tensor):
|
|
174
|
+
dtype = false_.dtype
|
|
175
|
+
else:
|
|
176
|
+
dtype = None
|
|
177
|
+
true_ = rf.convert_to_tensor(true_, _backend=NumpyBackend, dtype=dtype)
|
|
178
|
+
false_ = rf.convert_to_tensor(false_, _backend=NumpyBackend, dtype=dtype)
|
|
179
|
+
out = Tensor.get_common_data(
|
|
180
|
+
[true_, false_, cond], allow_broadcast_all_sources=allow_broadcast_all_sources, name="where"
|
|
181
|
+
)
|
|
182
|
+
out.dtype = true_.dtype
|
|
183
|
+
out.sparse_dim = true_.sparse_dim or false_.sparse_dim
|
|
184
|
+
out.feature_dim = true_.feature_dim or false_.feature_dim
|
|
185
|
+
cond_bc_raw = cond.copy_compatible_to_dims_raw(out.dims)
|
|
186
|
+
true_bc_raw = true_.copy_compatible_to_dims_raw(out.dims)
|
|
187
|
+
false_bc_raw = false_.copy_compatible_to_dims_raw(out.dims)
|
|
188
|
+
out.raw_tensor = numpy.where(cond_bc_raw, true_bc_raw, false_bc_raw)
|
|
189
|
+
return out
|
|
190
|
+
|
|
162
191
|
@staticmethod
|
|
163
192
|
def range_over_dim(dim: Dim, *, dtype: Optional[str] = None, device: Optional[str] = None) -> Tensor[numpy.ndarray]:
|
|
164
193
|
"""
|
returnn/tensor/_dim_extra.py
CHANGED
|
@@ -422,14 +422,10 @@ class _DimMixin:
|
|
|
422
422
|
:param func: operates inplace
|
|
423
423
|
"""
|
|
424
424
|
dyn_size_ext = self.dyn_size_ext.copy() if self.dyn_size_ext is not None else None
|
|
425
|
-
dyn_size_ext_max = self._dyn_size_max_value if self._dyn_size_max_value is not None else None
|
|
426
425
|
self.reset_raw(only_self=True)
|
|
427
426
|
if dyn_size_ext is not None:
|
|
428
427
|
func(dyn_size_ext)
|
|
429
|
-
if dyn_size_ext_max is not None:
|
|
430
|
-
func(dyn_size_ext_max)
|
|
431
428
|
self.dyn_size_ext = dyn_size_ext
|
|
432
|
-
self._dyn_size_max_value = dyn_size_ext_max
|
|
433
429
|
|
|
434
430
|
def _can_use_in_ctx(self, ctx):
|
|
435
431
|
"""
|
returnn/tensor/_tensor_extra.py
CHANGED
|
@@ -2966,7 +2966,7 @@ class _TensorMixin(_TensorMixinBase):
|
|
|
2966
2966
|
mask = None
|
|
2967
2967
|
for axis in axes:
|
|
2968
2968
|
mask_ = self._dims[axis].get_mask(dim_order=self.dims, device=self.device)
|
|
2969
|
-
mask = rf.
|
|
2969
|
+
mask = rf.combine_bc(mask, "logical_and", mask_) if mask is not None else mask_
|
|
2970
2970
|
assert isinstance(mask, _t.Tensor)
|
|
2971
2971
|
res = rf.where(mask, self, mask_value)
|
|
2972
2972
|
if use_padding_info:
|
returnn/tensor/tensor_dict.py
CHANGED
|
@@ -9,7 +9,7 @@ We also might have model_outputs in the user config.
|
|
|
9
9
|
"""
|
|
10
10
|
|
|
11
11
|
from __future__ import annotations
|
|
12
|
-
from typing import Optional, Union, Any, Type, Dict, Sequence
|
|
12
|
+
from typing import Optional, Union, Any, Type, Dict, Sequence, List
|
|
13
13
|
from .tensor import Tensor
|
|
14
14
|
from .dim import Dim
|
|
15
15
|
|
|
@@ -160,6 +160,20 @@ class TensorDict:
|
|
|
160
160
|
assert dim.size == raw_tensor_dict[key_]
|
|
161
161
|
visited_dims.add(dim)
|
|
162
162
|
|
|
163
|
+
def all_dims(self) -> List[Dim]:
|
|
164
|
+
"""
|
|
165
|
+
:return: list of dims
|
|
166
|
+
"""
|
|
167
|
+
visited_dims = set()
|
|
168
|
+
out = []
|
|
169
|
+
for key, value in self.data.items():
|
|
170
|
+
for dim in value.dims:
|
|
171
|
+
if dim in visited_dims:
|
|
172
|
+
continue
|
|
173
|
+
out.append(dim)
|
|
174
|
+
visited_dims.add(dim)
|
|
175
|
+
return out
|
|
176
|
+
|
|
163
177
|
|
|
164
178
|
def _convert_to_tensor(opts: _TensorT, *, name: Optional[str] = None) -> Tensor:
|
|
165
179
|
"""
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
returnn/PKG-INFO,sha256=
|
|
1
|
+
returnn/PKG-INFO,sha256=tasZ4y9DTXOoBq1n6RhxHj7GEEim3NIV3shYE_6qnzs,5215
|
|
2
2
|
returnn/__init__.py,sha256=biBtRsM0WZ406vShaeH-9WFoqJ8XwTbn6g0EeFJ7l8E,1012
|
|
3
3
|
returnn/__main__.py,sha256=qBFbuB1yN3adgVM5pXt2-Yq9vorjRNchNPL8kDKx44M,31752
|
|
4
4
|
returnn/__old_mod_loader__.py,sha256=nvsNY-xELdS_IPNkv66Q9Rmvg4dbGW0-EBRDcCmctos,7654
|
|
5
5
|
returnn/__setup__.py,sha256=22kQn2fh11iPM0hLb2Fy5sLmoU1JGvmDxXRYuRgQkwU,4659
|
|
6
|
-
returnn/_setup_info_generated.py,sha256=
|
|
6
|
+
returnn/_setup_info_generated.py,sha256=i9lO16SJCJurcbJrmKJjUX_VLD7LAXplYmS6TPYAzTI,77
|
|
7
7
|
returnn/config.py,sha256=3tmKhB6FnQZaNdtcYsiB61JnEY--iZ2qmJ4yq0b6tE0,29140
|
|
8
8
|
returnn/forward_iface.py,sha256=A_OJiaXsX4MlXQRzST86ylyxSUZbC402PQL1REcqHjM,911
|
|
9
9
|
returnn/learning_rate_control.py,sha256=ZvWryAn_tv9DhV8sh1LV3eE34Yltl3On3mYZAG4hR9s,34684
|
|
@@ -77,7 +77,7 @@ returnn/extern/graph_editor/util.py,sha256=QMrQeQZ7lJwsrNQub9tof0h3quEaoHiGJaZmo
|
|
|
77
77
|
returnn/frontend/__init__.py,sha256=2aS7nbxXniIrBp2DODl0xN0f3IJ_dX4Bi9ZlR7W5_DE,1472
|
|
78
78
|
returnn/frontend/_backend.py,sha256=TNkEdj9GKxJfSM1ZMQ_SdAQzn2TU7SQbG6JGdaWhUeI,50374
|
|
79
79
|
returnn/frontend/_cache.py,sha256=JAhi7L-raQ3A-NC3JUYDtdRTwT3BGJJGGZxrZ8MfEWQ,8403
|
|
80
|
-
returnn/frontend/_numpy_backend.py,sha256=
|
|
80
|
+
returnn/frontend/_numpy_backend.py,sha256=fZjks7p3dgxVZ6tSDazTTgBxNjJqXjfqgw_7mA7rDEE,9066
|
|
81
81
|
returnn/frontend/_random_journal.py,sha256=_ktP_mjgx8vtQQGX_DofdhewJj0aPiczefTWeemPkmo,5457
|
|
82
82
|
returnn/frontend/_utils.py,sha256=4A3MSRM0i86J77550uR_AjcBEPu6nymLUZ9Xd1V3Fkc,12073
|
|
83
83
|
returnn/frontend/array_.py,sha256=eYwH-NVAoHpVrFdJv08lCqh3jvfoZV_ZBEoWHjsBz0o,50090
|
|
@@ -154,15 +154,15 @@ returnn/sprint/extern_interface.py,sha256=l-v1X-Yg0UpTFe7Y3c4FwWOqpSNuv9Oy5EzqlK
|
|
|
154
154
|
returnn/sprint/interface.py,sha256=_IGNQlOFcJcwsSeVkKcM-y8g2NDJv07jFhii47KfWtg,36490
|
|
155
155
|
returnn/tensor/README.md,sha256=X6BqcRLrPLPnwF9yR69uqIFrMnNluj9pBkOPHwNgzuo,501
|
|
156
156
|
returnn/tensor/__init__.py,sha256=on6j5PEOQpck50UcsR4nJzJSDmoVy34z1Oq4efv6Ax0,154
|
|
157
|
-
returnn/tensor/_dim_extra.py,sha256=
|
|
158
|
-
returnn/tensor/_tensor_extra.py,sha256=
|
|
157
|
+
returnn/tensor/_dim_extra.py,sha256=pMrzlD8LqlhV9VdBuYSzl38VC3O71HJ1rlJaH8JFxUo,122321
|
|
158
|
+
returnn/tensor/_tensor_extra.py,sha256=DYJ6Dv3AdHcqFeiS_8fFsJG8ewu0dvFiXYT_TG1U1sI,164873
|
|
159
159
|
returnn/tensor/_tensor_mixin_base.py,sha256=H5z86I0NejxrSgMH1c5oXQzBqS6L9HpvP4y7oegBaSc,643
|
|
160
160
|
returnn/tensor/_tensor_op_overloads.py,sha256=kVVcnYtcZdW7Vjj78V1Im_yVX2M2r6dUTgeiAQZ37X0,5449
|
|
161
161
|
returnn/tensor/control_flow_ctx.py,sha256=L9e32AfYDUDgsEDHL07thSFyYFqwhyVSqzE_bM03Y4M,5252
|
|
162
162
|
returnn/tensor/dim.py,sha256=652DlcSe6o6l5OyY5xt9Yigij_Xry-ToG9AemMX3roY,4208
|
|
163
163
|
returnn/tensor/marked_dim.py,sha256=Ae2hQIb5QixRU2gDhQEm0tmYt8TmomWoGERB414jR8o,1884
|
|
164
164
|
returnn/tensor/tensor.py,sha256=bisF7j3rU5Rvx8C8S57C9hGo2jgWwTaQ6wc_Db7Mwpw,9087
|
|
165
|
-
returnn/tensor/tensor_dict.py,sha256=
|
|
165
|
+
returnn/tensor/tensor_dict.py,sha256=3UN2be-Jj-7zQAML-fq-DjnYJd2PasU1GUn4jvRxMIQ,7528
|
|
166
166
|
returnn/tensor/utils.py,sha256=B6_XyNTXPIyLxWk061Qo-Md8_DnINGdVwpXJF6pahBk,9772
|
|
167
167
|
returnn/tf/__init__.py,sha256=X4g2LFCFTl0uiybMRkfBY8AYkgMa6HX0vVxxTk0nMiE,88
|
|
168
168
|
returnn/tf/compat.py,sha256=NkAkdlR37m2d9qh3i33sIfEGilOaFBeCofAQpQwnZpY,1632
|
|
@@ -253,8 +253,8 @@ returnn/util/sig_proc.py,sha256=Tjz0VOAVyqu2qDCF5HZ1JjALjcFsHcNkcd96WgZeKfE,7265
|
|
|
253
253
|
returnn/util/task_system.py,sha256=y4sMVXQ25Qd2z0rx03uOlXlkE-jbCYC1Sjfn-XlraVU,26003
|
|
254
254
|
returnn/util/train_proc_manager.py,sha256=Pjht28k6uz6BNQ47uW6Gf880iyq5q4wx7P_K2tmoAM8,3266
|
|
255
255
|
returnn/util/watch_memory.py,sha256=BR5P2kvBN6UI81cE0_1WAA6Hd1SByLbBaiDxvLhPOew,4213
|
|
256
|
-
returnn-1.20250226.
|
|
257
|
-
returnn-1.20250226.
|
|
258
|
-
returnn-1.20250226.
|
|
259
|
-
returnn-1.20250226.
|
|
260
|
-
returnn-1.20250226.
|
|
256
|
+
returnn-1.20250226.183415.dist-info/LICENSE,sha256=ywBD_U2aD4vpuoIgNAsjIGBYydl0tVKll3De0Z8s77c,11041
|
|
257
|
+
returnn-1.20250226.183415.dist-info/METADATA,sha256=tasZ4y9DTXOoBq1n6RhxHj7GEEim3NIV3shYE_6qnzs,5215
|
|
258
|
+
returnn-1.20250226.183415.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
|
|
259
|
+
returnn-1.20250226.183415.dist-info/top_level.txt,sha256=Lsn4WZc5Pbfk0-xDQOgnFCxOoqxL4CyeM3N1TFbJncw,8
|
|
260
|
+
returnn-1.20250226.183415.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|