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 CHANGED
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: returnn
3
- Version: 1.20250226.132109
3
+ Version: 1.20250226.183415
4
4
  Summary: The RWTH extensible training framework for universal recurrent neural networks
5
5
  Home-page: https://github.com/rwth-i6/returnn/
6
6
  Author: Albert Zeyer
@@ -1,2 +1,2 @@
1
- version = '1.20250226.132109'
2
- long_version = '1.20250226.132109+git.7dbfd3a'
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
  """
@@ -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
  """
@@ -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.logical_and(mask, mask_) if mask is not None else mask_
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:
@@ -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,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: returnn
3
- Version: 1.20250226.132109
3
+ Version: 1.20250226.183415
4
4
  Summary: The RWTH extensible training framework for universal recurrent neural networks
5
5
  Home-page: https://github.com/rwth-i6/returnn/
6
6
  Author: Albert Zeyer
@@ -1,9 +1,9 @@
1
- returnn/PKG-INFO,sha256=1tdi71kdx2tM5iCiEhtBkyM0jO74aiySG7bvbniZgz0,5215
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=GFgn-7LeKnvijLbLCBASDWIfBb96hZ17jlTud_Q9xAM,77
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=2oCtG0YCWL_89v4cD_jDj8em1O_Fp-_YWl5EblGi_yo,7858
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=kL_nnGNaRpKIQLlvCo6TJ35WynS_jIssNZusFmtOAE0,122551
158
- returnn/tensor/_tensor_extra.py,sha256=v8oacDyrNMlDTRF0XR0LcU04snr5I1D9_yidw1ZWKk4,164859
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=WTqMefemeHQG381MVUjvHMmYVd2TV9IQ0qU4i_XJi3c,7146
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.132109.dist-info/LICENSE,sha256=ywBD_U2aD4vpuoIgNAsjIGBYydl0tVKll3De0Z8s77c,11041
257
- returnn-1.20250226.132109.dist-info/METADATA,sha256=1tdi71kdx2tM5iCiEhtBkyM0jO74aiySG7bvbniZgz0,5215
258
- returnn-1.20250226.132109.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
259
- returnn-1.20250226.132109.dist-info/top_level.txt,sha256=Lsn4WZc5Pbfk0-xDQOgnFCxOoqxL4CyeM3N1TFbJncw,8
260
- returnn-1.20250226.132109.dist-info/RECORD,,
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,,