returnn 1.20250922.113348__py3-none-any.whl → 1.20251006.114241__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.20250922.113348
3
+ Version: 1.20251006.114241
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.20250922.113348'
2
- long_version = '1.20250922.113348+git.58aca86'
1
+ version = '1.20251006.114241'
2
+ long_version = '1.20251006.114241+git.7745ba7'
@@ -7,14 +7,13 @@ from __future__ import annotations
7
7
  from typing import Optional, Union, Any, Sequence, List, Tuple, Dict
8
8
  import numpy
9
9
  import sys
10
- import typing
11
10
 
12
11
  from returnn.util.basic import class_idx_seq_to_1_of_k, CollectionReadCheckCovered
13
12
  from returnn.log import log
14
13
  from returnn.tensor import Tensor, Dim, TensorDict
15
14
 
16
15
  from .util.feature_extraction import ExtractAudioFeatures
17
- from .util.vocabulary import *
16
+ from .util.vocabulary import Vocabulary, BytePairEncoding, CharacterTargets
18
17
  from .audio import OggZipDataset # noqa # for API compatibility
19
18
  from .basic import Dataset, DatasetSeq, convert_data_dims
20
19
  from .cached2 import CachedDataset2
@@ -1280,12 +1279,6 @@ class CopyTaskDataset(GeneratingDataset):
1280
1279
  return DatasetSeq(seq_idx=seq_idx, features=seq_np, targets={"classes": seq_np})
1281
1280
 
1282
1281
 
1283
- # Multiple external sources where we could write automatic wrappers:
1284
- # * https://github.com/tensorflow/datasets
1285
- # * tf.contrib.keras.datasets, https://www.tensorflow.org/api_docs/python/tf/keras/datasets
1286
- # * nltk.corpus
1287
-
1288
-
1289
1282
  class TimitDataset(CachedDataset2):
1290
1283
  """
1291
1284
  DARPA TIMIT Acoustic-Phonetic Continuous Speech Corpus.
@@ -1553,7 +1546,7 @@ class TimitDataset(CachedDataset2):
1553
1546
 
1554
1547
  self._random_permute_audio = CollectionReadCheckCovered.from_bool_or_dict(random_permute_audio)
1555
1548
 
1556
- self._seq_order = None # type: typing.Optional[typing.Sequence[int]]
1549
+ self._seq_order: Optional[Sequence[int]] = None
1557
1550
  self._init_timit()
1558
1551
 
1559
1552
  self._audio_data = {} # seq_tag -> (audio, sample_rate). loaded by self._reader_thread_main
@@ -1927,8 +1920,8 @@ class BlissDataset(CachedDataset2):
1927
1920
  self._with_delta = with_delta
1928
1921
  self.num_inputs *= 1 + with_delta
1929
1922
  self._bpe_file = open(bpe_file, "r")
1930
- self._seqs = [] # type: typing.List[BlissDataset.SeqInfo]
1931
- self._vocab = {} # type: typing.Dict[str,int] # set in self._parse_vocab
1923
+ self._seqs: List[BlissDataset.SeqInfo] = []
1924
+ self._vocab: Dict[str, int] = {} # set in self._parse_vocab
1932
1925
  self._parse_bliss_xml(filename=path)
1933
1926
  # TODO: loading audio like in TimitDataset, and in parallel
1934
1927
  self._bpe = BytePairEncoding(vocab_file=vocab_file, bpe_file=bpe_file)
@@ -2100,7 +2093,7 @@ class LibriSpeechCorpus(CachedDataset2):
2100
2093
  self.targets = CharacterTargets(**chars)
2101
2094
  elif targets is None:
2102
2095
  assert bpe is None and chars is None
2103
- self.targets = None # type: typing.Optional[Vocabulary]
2096
+ self.targets: Optional[Vocabulary] = None
2104
2097
  else:
2105
2098
  raise Exception("invalid targets %r. provide bpe or chars" % targets)
2106
2099
  if self.targets:
@@ -2128,7 +2121,7 @@ class LibriSpeechCorpus(CachedDataset2):
2128
2121
  self._reference_seq_order = seqs
2129
2122
  self.transs = {s: self.transs[s] for s in seqs}
2130
2123
  self.epoch_wise_filter = epoch_wise_filter
2131
- self._seq_order = None # type: typing.Optional[typing.Sequence[int]]
2124
+ self._seq_order: Optional[Sequence[int]] = None
2132
2125
  self.init_seq_order()
2133
2126
 
2134
2127
  def _collect_trans(self):
@@ -2294,9 +2287,9 @@ class LibriSpeechCorpus(CachedDataset2):
2294
2287
  """:return: whether this dataset supports sharding"""
2295
2288
  return True
2296
2289
 
2297
- def get_current_seq_order(self):
2290
+ def get_current_seq_order(self) -> Sequence[int]:
2298
2291
  """
2299
- :rtype: typing.Sequence[int]
2292
+ :return: seq order of current epoch
2300
2293
  """
2301
2294
  assert self._seq_order is not None
2302
2295
  return self._seq_order
@@ -2446,7 +2439,7 @@ class Enwik8Corpus(CachedDataset2):
2446
2439
  self._batch_num_seqs = batch_num_seqs
2447
2440
  self._random = numpy.random.RandomState(1) # seed will be set in init_seq_order
2448
2441
  self._seq_starts = numpy.arange(0, len(self._data) - 1, seq_len)
2449
- self._seq_order = None # type: typing.Optional[typing.Sequence[int]]
2442
+ self._seq_order: Optional[Sequence[int]] = None
2450
2443
 
2451
2444
  def get_data_dtype(self, key):
2452
2445
  """
@@ -66,6 +66,13 @@ class Backend(Generic[T]):
66
66
  """
67
67
  raise NotImplementedError
68
68
 
69
+ @staticmethod
70
+ def should_pickle_tensor(raw_tensor: T) -> bool:
71
+ """
72
+ :return: whether the tensor should be included in a pickle or set to `None`.
73
+ """
74
+ return True
75
+
69
76
  @staticmethod
70
77
  def cond(pred: Tensor, true_fn: Callable, false_fn: Callable):
71
78
  """
@@ -588,7 +588,12 @@ class _TensorMixin(_TensorMixinBase):
588
588
 
589
589
  def __getstate__(self):
590
590
  d = {k: getattr(self, k) for k in self.__slots__}
591
- d["_raw_tensor"] = None # do not store the TF tensors
591
+ if (
592
+ self._raw_tensor is not None
593
+ and self._raw_backend is not None
594
+ and not self._raw_backend.should_pickle_tensor(self._raw_tensor)
595
+ ):
596
+ d["_raw_tensor"] = None
592
597
  return d
593
598
 
594
599
  def __setstate__(self, state):
@@ -45,6 +45,13 @@ class ReturnnLayersBackend(Backend[Layer]):
45
45
  """executing eagerly"""
46
46
  return False
47
47
 
48
+ @staticmethod
49
+ def should_pickle_tensor(raw_tensor: Layer) -> bool:
50
+ """
51
+ :return: whether the tensor should be included in a pickle or set to `None`.
52
+ """
53
+ return False
54
+
48
55
  @staticmethod
49
56
  def get_tensor_dependencies(x: Tensor[Layer]) -> Sequence[Tensor]:
50
57
  """get tensor inputs"""
@@ -38,6 +38,21 @@ class TFBackend(Backend[tf.Tensor]):
38
38
  """
39
39
  return tf.executing_eagerly()
40
40
 
41
+ @staticmethod
42
+ def should_pickle_tensor(raw_tensor: tf.Tensor) -> bool:
43
+ """
44
+ :return: whether the tensor should be included in a pickle or set to `None`.
45
+ """
46
+
47
+ from tensorflow.python.framework.ops import EagerTensor
48
+
49
+ # Can not pickle symbolic TF tensors.
50
+ #
51
+ # See for discussion:
52
+ # - https://github.com/rwth-i6/returnn/issues/1541
53
+ # - https://github.com/rwth-i6/returnn/issues/1763
54
+ return isinstance(raw_tensor, EagerTensor)
55
+
41
56
  @staticmethod
42
57
  def get_dtype_name_raw(raw_tensor: tf.Tensor) -> str:
43
58
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: returnn
3
- Version: 1.20250922.113348
3
+ Version: 1.20251006.114241
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=yjd51TVi0Vvo8Lo1bBB-F7W0hCfoxTh1i0v99AvZXNA,5215
1
+ returnn/PKG-INFO,sha256=khjeqHtAYC68kPEh0ltnHLB14E2_UOObt3MGLvgeMTY,5215
2
2
  returnn/__init__.py,sha256=biBtRsM0WZ406vShaeH-9WFoqJ8XwTbn6g0EeFJ7l8E,1012
3
3
  returnn/__main__.py,sha256=lHyZcu_0yc9f7Vf_Kfdy9PmeU0T76XVXnpalHi5WKro,31740
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=6M0SlSD1yybvdTWNxhdgFMkjax6-M7S_y0SlOJpHQy4,77
6
+ returnn/_setup_info_generated.py,sha256=MFwUI_cce-3opoV_eKfpRd891cRwBo6RMbTGriz-HTg,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
@@ -18,7 +18,7 @@ returnn/datasets/bundle_file.py,sha256=KQNrS1MSf-4_idlK0c0KFwON-f5sEK0sWU15WpoMY
18
18
  returnn/datasets/cached.py,sha256=RyefRjSDdp-HveK-2vLy2C6BIHcpqQ_lNvUKlIa4QAI,25412
19
19
  returnn/datasets/cached2.py,sha256=oJOq2lWRQpxm6kyUKW1w5qZBd4kdKEpwM7KY_QnXbq4,11922
20
20
  returnn/datasets/distrib_files.py,sha256=-WNVhtvdJFP3L9Meh33oTSYc0FJSvF40mJ5UI_vJbSE,30233
21
- returnn/datasets/generating.py,sha256=9U_w6URIrv-Rb-hDbPOzYW9qYXzJbw32N6G268IKyoM,99833
21
+ returnn/datasets/generating.py,sha256=Qb7V94N_GfL2pZPxWS5PmzszoVXXKzuUmsHuW3dmVbc,99556
22
22
  returnn/datasets/hdf.py,sha256=v5sjBenURR9Z-g7AQ9tsL84yDSye5RtbLpym3M6HSDE,67833
23
23
  returnn/datasets/lm.py,sha256=rQ3jV43lSnlGkKu7m5jTTH7aK0BOMXQocsHfJ8OGec8,99950
24
24
  returnn/datasets/map.py,sha256=kOBJVZmwDhLsOplzDNByIfa0NRSUaMo2Lsy36lBvxrM,10907
@@ -75,7 +75,7 @@ returnn/extern/graph_editor/subgraph.py,sha256=q9o0zVBLDrTIidaXg5WG5daDW0mLbwv2J
75
75
  returnn/extern/graph_editor/transform.py,sha256=qMGSenpbAnGqdG6QP6iWjlm6_ccySYJaZKOoAj1dbOM,29348
76
76
  returnn/extern/graph_editor/util.py,sha256=HfRbyQPmQ6_n5-O-096n0KeJtllQXFtaurpeJS_URZ0,18706
77
77
  returnn/frontend/__init__.py,sha256=2aS7nbxXniIrBp2DODl0xN0f3IJ_dX4Bi9ZlR7W5_DE,1472
78
- returnn/frontend/_backend.py,sha256=39l5MC1DaT0MPklMM8HXAW9nqisIIZQ9g2QSHOOtPQE,50741
78
+ returnn/frontend/_backend.py,sha256=MVZn2HSkF3tsqchYvy2QM9pA4ILdKq07kj-_AAHGUy0,50942
79
79
  returnn/frontend/_cache.py,sha256=Uao2xzfvVaKABk1fkxcpXzxKIGJaI9FwwlTvvoNUstk,8550
80
80
  returnn/frontend/_numpy_backend.py,sha256=fZjks7p3dgxVZ6tSDazTTgBxNjJqXjfqgw_7mA7rDEE,9066
81
81
  returnn/frontend/_random_journal.py,sha256=_ktP_mjgx8vtQQGX_DofdhewJj0aPiczefTWeemPkmo,5457
@@ -155,7 +155,7 @@ returnn/sprint/interface.py,sha256=1j5SB0V8hSW8A5song9ciZtcBnZoKKfNipk9ezOIMuA,3
155
155
  returnn/tensor/README.md,sha256=X6BqcRLrPLPnwF9yR69uqIFrMnNluj9pBkOPHwNgzuo,501
156
156
  returnn/tensor/__init__.py,sha256=on6j5PEOQpck50UcsR4nJzJSDmoVy34z1Oq4efv6Ax0,154
157
157
  returnn/tensor/_dim_extra.py,sha256=N9qkz-1WZZY0XbpFjLg4aaNie3NfadvmanHcTOFoKeg,116154
158
- returnn/tensor/_tensor_extra.py,sha256=gbSl6HMtn8WFYloanew_RaNNwx3eCpnKv3UfCkntJiQ,164923
158
+ returnn/tensor/_tensor_extra.py,sha256=1UPNisRAbljkvfMcrEXaPAF-2Dz7AdgC3jAKVVAnAO8,165084
159
159
  returnn/tensor/_tensor_mixin_base.py,sha256=H5z86I0NejxrSgMH1c5oXQzBqS6L9HpvP4y7oegBaSc,643
160
160
  returnn/tensor/_tensor_op_overloads.py,sha256=HklwuTBjy7mH_665VKaCUdu-oC3aa7Uz1ZQiCz4jeZc,5448
161
161
  returnn/tensor/control_flow_ctx.py,sha256=L9e32AfYDUDgsEDHL07thSFyYFqwhyVSqzE_bM03Y4M,5252
@@ -177,7 +177,7 @@ returnn/tf/sprint.py,sha256=Yqjh0-6sCWHpdDPQCzHKx7TwQCOjJyjfd0KHtnYdd-8,5471
177
177
  returnn/tf/updater.py,sha256=RcvoGnjBcObbLfLHH_mDRSY2lTeLyNoAFsZpHUiIgRY,72036
178
178
  returnn/tf/frontend_layers/README.md,sha256=P4vVl_EK-4jT55m40mq-K4Nr9yFY0tJR5fmDzTHSDFE,1096
179
179
  returnn/tf/frontend_layers/__init__.py,sha256=MGUn7rv6fOefbtkX-5pq6fC1T6Y5h0oh1uOPSEcv1_I,506
180
- returnn/tf/frontend_layers/_backend.py,sha256=pxeX7g4nbGXot5gyqp32ajhOfVmBdaUNlSq4ZQsV9xM,47331
180
+ returnn/tf/frontend_layers/_backend.py,sha256=ZHfmVD8uN0yeyqXFPxYxpnfBbjIpGQl9ykKKW9hxdD0,47537
181
181
  returnn/tf/frontend_layers/_utils.py,sha256=ijByaDOqPDod5mZC9EoTkt8PHBEODXHsWbkwDOF9XW4,4205
182
182
  returnn/tf/frontend_layers/cond.py,sha256=bGd_g2tzpKXO218Xk-so59vFPJF-jF_ZvoZIU-1qBzw,14832
183
183
  returnn/tf/frontend_layers/config_entry_points.py,sha256=t01RWOiaZohzuqPXX-MLV0P5yCOfE0dz-9dZ77_pK4c,5751
@@ -190,7 +190,7 @@ returnn/tf/frontend_layers/masked_computation.py,sha256=I_TW0Qm4Yl_wPZ6TkuK7a-wB
190
190
  returnn/tf/frontend_layers/parameter_assign.py,sha256=B_7kgobRyFtExiuSy2MsVGpAR36-jdG-xKABGc6EUGM,5103
191
191
  returnn/tf/frontend_layers/prev_tensor_ref.py,sha256=EqTAanOgYAhl8o2fMylN52mfReH9heAQFdzn9CwqAX4,2282
192
192
  returnn/tf/frontend_low_level/__init__.py,sha256=34469k3KzMUIGowxReOZnbf6WdTjxY73Gp1a4WqDN1M,62
193
- returnn/tf/frontend_low_level/_backend.py,sha256=JwwRRIGnElqBC4bTImdB7w3U1u_SJESeZHYLmq86wog,24479
193
+ returnn/tf/frontend_low_level/_backend.py,sha256=Hv838I2eyOP2qVNWs5DJxseyxUbAET2lm0ZZcbW_CsE,24991
194
194
  returnn/tf/layers/__init__.py,sha256=Ngu-X84nWFgz7ndDu88DqoZ-5lUMMTQWH4g7N8pSoCg,72
195
195
  returnn/tf/layers/base.py,sha256=sUxEfh6WxaHWHG7O3cfxB6gG6YpEHkFKUJVayKvTBSI,152968
196
196
  returnn/tf/layers/basic.py,sha256=PMYNoMq8qH41QhWhJPg5Uc409GZHkcnecouorg9sqJY,615466
@@ -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.20250922.113348.dist-info/LICENSE,sha256=ywBD_U2aD4vpuoIgNAsjIGBYydl0tVKll3De0Z8s77c,11041
257
- returnn-1.20250922.113348.dist-info/METADATA,sha256=yjd51TVi0Vvo8Lo1bBB-F7W0hCfoxTh1i0v99AvZXNA,5215
258
- returnn-1.20250922.113348.dist-info/WHEEL,sha256=iAkIy5fosb7FzIOwONchHf19Qu7_1wCWyFNR5gu9nU0,91
259
- returnn-1.20250922.113348.dist-info/top_level.txt,sha256=Lsn4WZc5Pbfk0-xDQOgnFCxOoqxL4CyeM3N1TFbJncw,8
260
- returnn-1.20250922.113348.dist-info/RECORD,,
256
+ returnn-1.20251006.114241.dist-info/LICENSE,sha256=ywBD_U2aD4vpuoIgNAsjIGBYydl0tVKll3De0Z8s77c,11041
257
+ returnn-1.20251006.114241.dist-info/METADATA,sha256=khjeqHtAYC68kPEh0ltnHLB14E2_UOObt3MGLvgeMTY,5215
258
+ returnn-1.20251006.114241.dist-info/WHEEL,sha256=iAkIy5fosb7FzIOwONchHf19Qu7_1wCWyFNR5gu9nU0,91
259
+ returnn-1.20251006.114241.dist-info/top_level.txt,sha256=Lsn4WZc5Pbfk0-xDQOgnFCxOoqxL4CyeM3N1TFbJncw,8
260
+ returnn-1.20251006.114241.dist-info/RECORD,,