onnx2tf 1.29.17__py3-none-any.whl → 1.29.18__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.
@@ -0,0 +1,223 @@
1
+ import sys
2
+ import random
3
+ random.seed(0)
4
+ import numpy as np
5
+ np.random.seed(0)
6
+ import tensorflow as tf
7
+ import onnx_graphsurgeon as gs
8
+ from onnx2tf.utils.common_functions import (
9
+ get_constant_or_variable,
10
+ print_node_info,
11
+ inverted_operation_enable_disable,
12
+ make_tf_node_info,
13
+ convert_axis,
14
+ get_replacement_parameter,
15
+ pre_process_transpose,
16
+ post_process_transpose,
17
+ )
18
+ from onnx2tf.utils.enums import NUMPY_DTYPES_TO_TF_DTYPES
19
+ from onnx2tf.utils.logging import *
20
+
21
+
22
+ def _as_tensor(value):
23
+ if isinstance(value, np.ndarray):
24
+ return tf.convert_to_tensor(value)
25
+ if isinstance(value, (np.generic, int, float, bool, str, bytes)):
26
+ return tf.convert_to_tensor(value)
27
+ return value
28
+
29
+
30
+ @print_node_info
31
+ @inverted_operation_enable_disable
32
+ @get_replacement_parameter
33
+ def make_node(
34
+ *,
35
+ graph_node: gs.Node,
36
+ tf_layers_dict: dict,
37
+ **kwargs: dict,
38
+ ):
39
+ """TensorScatter
40
+
41
+ Parameters
42
+ ----------
43
+ graph_node: gs.Node
44
+ graph_surgeon Node
45
+
46
+ tf_layers_dict: dict
47
+ optype, shape, dtype, tensorflow graph
48
+ """
49
+ before_op_output_shape_trans_1 = \
50
+ tf_layers_dict.get(graph_node.inputs[0].name, {}).get('before_op_output_shape_trans', True)
51
+ before_op_output_shape_trans_2 = \
52
+ tf_layers_dict.get(graph_node.inputs[1].name, {}).get('before_op_output_shape_trans', True)
53
+ before_op_output_shape_trans = \
54
+ before_op_output_shape_trans_1 \
55
+ and before_op_output_shape_trans_2
56
+ if len(graph_node.inputs) >= 3:
57
+ before_op_output_shape_trans_3 = \
58
+ tf_layers_dict.get(graph_node.inputs[2].name, {}).get('before_op_output_shape_trans', True)
59
+ before_op_output_shape_trans = \
60
+ before_op_output_shape_trans \
61
+ and before_op_output_shape_trans_3
62
+
63
+ graph_node_input_1 = get_constant_or_variable(
64
+ graph_node.inputs[0],
65
+ before_op_output_shape_trans,
66
+ )
67
+ graph_node_input_2 = get_constant_or_variable(
68
+ graph_node.inputs[1],
69
+ before_op_output_shape_trans,
70
+ )
71
+ graph_node_input_3 = None
72
+ if len(graph_node.inputs) >= 3:
73
+ graph_node_input_3 = get_constant_or_variable(
74
+ graph_node.inputs[2],
75
+ before_op_output_shape_trans=False,
76
+ )
77
+
78
+ graph_node_output: gs.Variable = graph_node.outputs[0]
79
+ shape = graph_node_output.shape
80
+ dtype = graph_node_output.dtype
81
+
82
+ past_cache = tf_layers_dict[graph_node_input_1.name]['tf_node'] \
83
+ if isinstance(graph_node_input_1, gs.Variable) else graph_node_input_1
84
+ update = tf_layers_dict[graph_node_input_2.name]['tf_node'] \
85
+ if isinstance(graph_node_input_2, gs.Variable) else graph_node_input_2
86
+ write_indices = None
87
+ if graph_node_input_3 is not None:
88
+ write_indices = tf_layers_dict[graph_node_input_3.name]['tf_node'] \
89
+ if isinstance(graph_node_input_3, gs.Variable) else graph_node_input_3
90
+
91
+ # Preserving Graph Structure (Dict)
92
+ tf_layers_dict[graph_node_output.name] = {
93
+ 'optype': graph_node.op,
94
+ 'shape': shape,
95
+ 'dtype': dtype,
96
+ 'nhwc': tf_layers_dict[graph_node_input_1.name]['nhwc'] \
97
+ if isinstance(graph_node_input_1, gs.Variable) \
98
+ and 'nhwc' in tf_layers_dict[graph_node_input_1.name].keys() else False
99
+ }
100
+
101
+ # Pre-process transpose
102
+ past_cache = pre_process_transpose(
103
+ value_before_transpose=past_cache,
104
+ param_target='inputs',
105
+ param_name=graph_node.inputs[0].name,
106
+ **kwargs,
107
+ )
108
+ update = pre_process_transpose(
109
+ value_before_transpose=update,
110
+ param_target='inputs',
111
+ param_name=graph_node.inputs[1].name,
112
+ **kwargs,
113
+ )
114
+ if write_indices is not None:
115
+ write_indices = pre_process_transpose(
116
+ value_before_transpose=write_indices,
117
+ param_target='inputs',
118
+ param_name=graph_node.inputs[2].name,
119
+ **kwargs,
120
+ )
121
+
122
+ # Generation of TF OP
123
+ past_cache = _as_tensor(past_cache)
124
+ update = _as_tensor(update)
125
+ if write_indices is not None:
126
+ write_indices = _as_tensor(write_indices)
127
+
128
+ cache_rank = past_cache.shape.rank
129
+ if cache_rank is None and graph_node.inputs[0].shape is not None:
130
+ cache_rank = len(graph_node.inputs[0].shape)
131
+ if cache_rank is None:
132
+ error(
133
+ f'TensorScatter requires known input rank.\n' +
134
+ f'graph_node.name: {graph_node.name}'
135
+ )
136
+ sys.exit(1)
137
+ axis = graph_node.attrs.get('axis', -2)
138
+ axis = convert_axis(
139
+ axis=axis,
140
+ tensor_rank=cache_rank,
141
+ before_op_output_shape_trans=before_op_output_shape_trans,
142
+ )
143
+ mode = graph_node.attrs.get('mode', 'linear')
144
+ if mode not in ['linear', 'circular']:
145
+ error(
146
+ f'TensorScatter supports mode=linear or mode=circular only. mode={mode}\n' +
147
+ f'graph_node.name: {graph_node.name}'
148
+ )
149
+ sys.exit(1)
150
+
151
+ past_shape = tf.shape(past_cache)
152
+ update_shape = tf.shape(update)
153
+
154
+ if write_indices is None:
155
+ write_indices = tf.zeros(
156
+ [past_shape[0]],
157
+ dtype=tf.int64,
158
+ )
159
+ else:
160
+ write_indices = tf.cast(write_indices, tf.int64)
161
+
162
+ max_sequence_length = past_shape[axis]
163
+ sequence_length = update_shape[axis]
164
+
165
+ idx_tensors_per_axis = [
166
+ tf.range(update_shape[i]) for i in range(cache_rank)
167
+ ]
168
+ idx_tensors_per_axis = tf.meshgrid(*idx_tensors_per_axis, indexing='ij')
169
+
170
+ axis_idx = idx_tensors_per_axis[axis]
171
+ batch_idx = idx_tensors_per_axis[0]
172
+ write_offsets = tf.gather(write_indices, batch_idx)
173
+ axis_idx = axis_idx + tf.cast(write_offsets, axis_idx.dtype)
174
+ if mode == 'circular':
175
+ axis_idx = tf.math.floormod(
176
+ axis_idx,
177
+ tf.cast(max_sequence_length, axis_idx.dtype),
178
+ )
179
+ idx_tensors_per_axis[axis] = axis_idx
180
+
181
+ coordinate = tf.stack(idx_tensors_per_axis, axis=-1)
182
+ indices = tf.reshape(coordinate, [-1, cache_rank])
183
+ indices = tf.cast(indices, tf.int64)
184
+ updates = tf.reshape(update, [-1])
185
+
186
+ output = tf.tensor_scatter_nd_update(
187
+ tensor=past_cache,
188
+ indices=indices,
189
+ updates=updates,
190
+ name=graph_node.name,
191
+ )
192
+ output_dtype = NUMPY_DTYPES_TO_TF_DTYPES[past_cache.dtype] \
193
+ if isinstance(past_cache.dtype, np.dtype) else past_cache.dtype
194
+ output = tf.cast(output, output_dtype)
195
+
196
+ tf_layers_dict[graph_node_output.name]['tf_node'] = output
197
+
198
+ # Post-process transpose
199
+ tf_layers_dict[graph_node_output.name]['tf_node'] = post_process_transpose(
200
+ value_before_transpose=tf_layers_dict[graph_node_output.name]['tf_node'],
201
+ param_target='outputs',
202
+ param_name=graph_node.outputs[0].name,
203
+ **kwargs,
204
+ )
205
+
206
+ # Generation of Debug Info
207
+ tf_layers_dict[graph_node_output.name]['tf_node_info'] = \
208
+ make_tf_node_info(
209
+ node_info={
210
+ 'tf_op_type': tf.tensor_scatter_nd_update,
211
+ 'tf_inputs': {
212
+ 'tensor': past_cache,
213
+ 'indices': indices,
214
+ 'updates': update,
215
+ 'axis': axis,
216
+ 'mode': mode,
217
+ 'write_indices': write_indices,
218
+ },
219
+ 'tf_outputs': {
220
+ 'output': tf_layers_dict[graph_node_output.name]['tf_node'],
221
+ },
222
+ }
223
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: onnx2tf
3
- Version: 1.29.17
3
+ Version: 1.29.18
4
4
  Summary: Self-Created Tools to convert ONNX files (NCHW) to TensorFlow/TFLite/Keras format (NHWC). The purpose of this tool is to solve the massive Transpose extrapolation problem in onnx-tensorflow (onnx-tf).
5
5
  Keywords: onnx,tensorflow,tflite,keras,deep-learning,machine-learning
6
6
  Author: Katsuya Hyodo
@@ -175,7 +175,7 @@ https://github.com/PINTO0309/onnx2tf/wiki/model_status
175
175
  |HardSwish|:heavy_check_mark:|
176
176
  |Identity|:heavy_check_mark:|
177
177
  |If|:heavy_check_mark:|
178
- |ImageDecoder|**Help wanted**|
178
+ |ImageDecoder|:white_check_mark:|
179
179
  |Input|:heavy_check_mark:|
180
180
  |InstanceNormalization|:heavy_check_mark:|
181
181
  |Inverse|:heavy_check_mark:|
@@ -207,7 +207,7 @@ https://github.com/PINTO0309/onnx2tf/wiki/model_status
207
207
  |Mul|:heavy_check_mark:|
208
208
  |Multinomial|:heavy_check_mark:|
209
209
  |Neg|:heavy_check_mark:|
210
- |NegativeLogLikelihoodLoss|**Help wanted**|
210
+ |NegativeLogLikelihoodLoss|:heavy_check_mark:|
211
211
  |NonMaxSuppression|:heavy_check_mark:|
212
212
  |NonZero|:heavy_check_mark:|
213
213
  |Optional|**Help wanted**|
@@ -244,19 +244,20 @@ https://github.com/PINTO0309/onnx2tf/wiki/model_status
244
244
  |ReduceProd|:heavy_check_mark:|
245
245
  |ReduceSum|:heavy_check_mark:|
246
246
  |ReduceSumSquare|:heavy_check_mark:|
247
+ |RegexFullMatch|:heavy_check_mark:|
247
248
  |Relu|:heavy_check_mark:|
248
249
  |Reshape|:heavy_check_mark:|
249
250
  |Resize|:heavy_check_mark:|
250
251
  |ReverseSequence|:heavy_check_mark:|
251
252
  |RNN|:heavy_check_mark:|
252
253
  |RoiAlign|:heavy_check_mark:|
253
- |RotaryEmbedding|**Help wanted**|
254
+ |RotaryEmbedding|:heavy_check_mark:|
254
255
  |Round|:heavy_check_mark:|
255
256
  |ScaleAndTranslate|:heavy_check_mark:|
256
257
  |Scatter|:heavy_check_mark:|
257
258
  |ScatterElements|:heavy_check_mark:|
258
259
  |ScatterND|:heavy_check_mark:|
259
- |Scan|**Help wanted**|
260
+ |Scan|:heavy_check_mark:|
260
261
  |Selu|:heavy_check_mark:|
261
262
  |SequenceAt|:heavy_check_mark:|
262
263
  |SequenceConstruct|:heavy_check_mark:|
@@ -273,7 +274,7 @@ https://github.com/PINTO0309/onnx2tf/wiki/model_status
273
274
  |Size|:heavy_check_mark:|
274
275
  |Slice|:heavy_check_mark:|
275
276
  |Softmax|:heavy_check_mark:|
276
- |SoftmaxCrossEntropyLoss|**Help wanted**|
277
+ |SoftmaxCrossEntropyLoss|:heavy_check_mark:|
277
278
  |Softplus|:heavy_check_mark:|
278
279
  |Softsign|:heavy_check_mark:|
279
280
  |SpaceToDepth|:heavy_check_mark:|
@@ -282,14 +283,14 @@ https://github.com/PINTO0309/onnx2tf/wiki/model_status
282
283
  |Sqrt|:heavy_check_mark:|
283
284
  |Squeeze|:heavy_check_mark:|
284
285
  |STFT|:white_check_mark:|
285
- |StringConcat|**Help wanted**|
286
- |StringNormalizer|:white_check_mark:|
287
- |StringSplit|**Help wanted**|
286
+ |StringConcat|:heavy_check_mark:|
287
+ |StringNormalizer|:heavy_check_mark:|
288
+ |StringSplit|:heavy_check_mark:|
288
289
  |Sub|:heavy_check_mark:|
289
290
  |Sum|:heavy_check_mark:|
290
291
  |Tan|:heavy_check_mark:|
291
292
  |Tanh|:heavy_check_mark:|
292
- |TensorScatter|**Help wanted**|
293
+ |TensorScatter|:heavy_check_mark:|
293
294
  |TfIdfVectorizer|**Help wanted**|
294
295
  |ThresholdedRelu|:heavy_check_mark:|
295
296
  |Tile|:heavy_check_mark:|
@@ -364,7 +365,7 @@ Video speed is adjusted approximately 50 times slower than actual speed.
364
365
  docker run --rm -it \
365
366
  -v `pwd`:/workdir \
366
367
  -w /workdir \
367
- ghcr.io/pinto0309/onnx2tf:1.29.17
368
+ ghcr.io/pinto0309/onnx2tf:1.29.18
368
369
 
369
370
  or
370
371
 
@@ -372,7 +373,7 @@ Video speed is adjusted approximately 50 times slower than actual speed.
372
373
  docker run --rm -it \
373
374
  -v `pwd`:/workdir \
374
375
  -w /workdir \
375
- docker.io/pinto0309/onnx2tf:1.29.17
376
+ docker.io/pinto0309/onnx2tf:1.29.18
376
377
 
377
378
  or
378
379
 
@@ -1,4 +1,4 @@
1
- onnx2tf/__init__.py,sha256=lBriMyNyUvk8PZzSUDHztzVxIWdVqefvM7BTdwwGAGU,67
1
+ onnx2tf/__init__.py,sha256=GJI-T9Q6ftbR-PwGyLk5t5_Iv3hvUC3prwy56yvn7vA,67
2
2
  onnx2tf/__main__.py,sha256=2RSCQ7d4lc6CwD-rlGn9UicPFg-P5du7ZD_yh-kuBEU,57
3
3
  onnx2tf/onnx2tf.py,sha256=y8FewjpNYAFnUs0cjq6JzdYkiXQSm1o_sZ3PXLJzK64,161921
4
4
  onnx2tf/ops/Abs.py,sha256=V7btmCG_ZvK_qJovUsguq0ZMJ349mhNQ4FHSgzP_Yuo,4029
@@ -76,6 +76,7 @@ onnx2tf/ops/HardSwish.py,sha256=nEng3LCDQYMZ4XhFZ7pXKGyRsM2_waowi8PlZt_f6Ck,3994
76
76
  onnx2tf/ops/Hardmax.py,sha256=tiMch3Tuc8Rvy52hgGSfqfOVyXaEsnxYplRMy7vtpyA,4398
77
77
  onnx2tf/ops/Identity.py,sha256=egudADqdhe4BiunYHUTh-AlDAkPpRESRT2eG0Q4rBts,2425
78
78
  onnx2tf/ops/If.py,sha256=Z3VEMm1mOKomYl1Mw58shc83kNPZsYs-wvhse7PlfTY,7062
79
+ onnx2tf/ops/ImageDecoder.py,sha256=HlIvsYOnSuxmreFSS6nlIXsMlDMsTGkag260d1lSiLc,4635
79
80
  onnx2tf/ops/Input.py,sha256=aRZQ4uLWmMS3q317wZO68qqks8p3QDOINhTEObAhvvY,16225
80
81
  onnx2tf/ops/InstanceNormalization.py,sha256=gUixsJ1105tt8UGwoLLdZ4V95GiZwzHm_jJMugqQ1yQ,11997
81
82
  onnx2tf/ops/Inverse.py,sha256=YsRs0mpZg6dXWXnM1-UU5PcaUvrUqLmDDCNFpirXqp4,4595
@@ -107,6 +108,7 @@ onnx2tf/ops/Mod.py,sha256=Y7kqCEOLqof4zVszJslQayt6COyU-MS5qKLHAYOyxmc,10023
107
108
  onnx2tf/ops/Mul.py,sha256=0hOf2O8ktRpIi4eOMfLGdwKl-yACFyGO3nU_s_XXUIE,15986
108
109
  onnx2tf/ops/Multinomial.py,sha256=0HQC76IA3AvRsUx9RS0S__nIfEmPuvIaDfSt8bns4FU,3158
109
110
  onnx2tf/ops/Neg.py,sha256=vu2ExVXyGpggAM_DNPeZj9QFeUyqhn5XmJnDlPJFsQU,4219
111
+ onnx2tf/ops/NegativeLogLikelihoodLoss.py,sha256=WMhNzV60PFmtY19KrYHw9MP7BA1DzjrAGGVyXLSW_7Q,7967
110
112
  onnx2tf/ops/NonMaxSuppression.py,sha256=nHeiX5eMGQAq_51KoljNZGlZddJ89Oe7Yfe33xLhl6M,15763
111
113
  onnx2tf/ops/NonZero.py,sha256=2EYZFMNIejeqR2azHw0CT2mthiKuRPQepUafzeVE8Nk,2788
112
114
  onnx2tf/ops/Not.py,sha256=wn3nThGf4gtpQdHjP7OX2xlhyaNQGeHifjZ18O5shhg,3599
@@ -126,6 +128,7 @@ onnx2tf/ops/QLinearMul.py,sha256=QUqevMwVcDlSqAWlQ9ZTpNcvRlDXO1j3wWzEQZGEdq8,505
126
128
  onnx2tf/ops/QLinearSigmoid.py,sha256=pV18RrqC64ADQQMaxJIO1iwrjbf2hpUVcvBQfntiBJ0,3931
127
129
  onnx2tf/ops/QLinearSoftmax.py,sha256=GtfT2gVH-V2j4NRqBbDFFfZWygp7TIjP662vo8k6dbU,4256
128
130
  onnx2tf/ops/QuantizeLinear.py,sha256=g_kZy7Ei4Ey_rGQWiSKDPaY9TOONegLxV1Jyt_gTP0k,7255
131
+ onnx2tf/ops/RMSNormalization.py,sha256=MJkJ_nWmybwOGPTqymPtZawPq4cY28HKm_PNartBeNk,5719
129
132
  onnx2tf/ops/RNN.py,sha256=55G5muM0BmJU9xIUU7hWsxhz5npisTfLJipR1w83ZDk,28143
130
133
  onnx2tf/ops/RandomNormal.py,sha256=g1HvpScrHBOffqPT6yhSV1y2fNx7klruD6Vkolfl0to,2013
131
134
  onnx2tf/ops/RandomNormalLike.py,sha256=BKguRxj48JhJ68Hce6xO8eE0OE-mTwnpymxBlV81ofw,2772
@@ -143,14 +146,17 @@ onnx2tf/ops/ReduceMin.py,sha256=uVhoE6gz2_6vrirqYvikMGx4k7DTsyGk6mkBn-dMX-A,1243
143
146
  onnx2tf/ops/ReduceProd.py,sha256=I4qqmdfr4t8i1sinuDqZrvndpw6KrpN1B7sFcjRUI9g,12438
144
147
  onnx2tf/ops/ReduceSum.py,sha256=8vdqR5Qv8ui783ywa0xVuiMm3MNwRzGOD_GYFpsgPmc,12393
145
148
  onnx2tf/ops/ReduceSumSquare.py,sha256=X8OFxb5YRl6VU12i35f7Gwzegvf4mXO56dp69n2TZPs,12336
149
+ onnx2tf/ops/RegexFullMatch.py,sha256=wbevjWnmJXPbLpOG2a2eBcxHF72lrV7PSW24o82MxAw,3084
146
150
  onnx2tf/ops/Relu.py,sha256=FoCRlHmG-xI3YCPbR_7UlRDbk0Juw6N722iULONkwW0,5627
147
151
  onnx2tf/ops/Reshape.py,sha256=_oPKYi1uSwt_aVsuAt9v127lt0aR5jnhHTzxKNEKdx0,25626
148
152
  onnx2tf/ops/Resize.py,sha256=nvcp8X7daMapWgmpCsjg4ajt8EdTQCzB6xbHCqmEQ9M,20053
149
153
  onnx2tf/ops/ReverseSequence.py,sha256=W2w_fBCiUXsD28grIz4AHNIoMjYXx6b6HkgwJTVRxf8,3308
150
154
  onnx2tf/ops/RoiAlign.py,sha256=XgLdaJgsI6KX0u8tnQlVsvbpZECZp_TSnEuGR7LTaeM,8360
155
+ onnx2tf/ops/RotaryEmbedding.py,sha256=6V6FmPbNCX_M5KEs2wg-sKrzdOMvXNuuJOulBAdAGhI,9517
151
156
  onnx2tf/ops/Round.py,sha256=OHdh1G2qgZe5OWlRc-OEOM4eYaA63LAoQ6hPmmUmR6o,3588
152
157
  onnx2tf/ops/STFT.py,sha256=LDKN309_dBu4v9AYpz70uMJbNjRFiOte9O3wUL4bIJw,4463
153
158
  onnx2tf/ops/ScaleAndTranslate.py,sha256=VQDDhSs9TyMLQy0mF7n8pZ2TuvoKY-Lhlzd7Inf4UdI,11989
159
+ onnx2tf/ops/Scan.py,sha256=hfN-DX6Gp-dG5158WMoHRrDWZAra3VSbsjsiphNqRIQ,16293
154
160
  onnx2tf/ops/Scatter.py,sha256=5_rTM60FPCq8unyNPDO-BZXcuz6w9Uyl2Xqx-zJTpgg,746
155
161
  onnx2tf/ops/ScatterElements.py,sha256=7u9-_pjS_x3JQsBCVnQyu6sPfuGx2o9qAW_RSZszOTs,7585
156
162
  onnx2tf/ops/ScatterND.py,sha256=Y949fYKSAvkPW1s-58P7suafnna9hDLoTg0UA8cs2Ag,9087
@@ -170,6 +176,7 @@ onnx2tf/ops/Sinh.py,sha256=9zXIQWcZiZmu3RnQuQpW-PEgBLOKY51SY0OBu1B5eh8,3706
170
176
  onnx2tf/ops/Size.py,sha256=vFD5eae9Jko3tHbBtydj2d3T3tbb4r0xua7OIH40p9M,2665
171
177
  onnx2tf/ops/Slice.py,sha256=ChqpC_l-c32aZzI7o2GP7SyRz142Gwo0ctc75nkXFvE,26788
172
178
  onnx2tf/ops/Softmax.py,sha256=CEnHcSm25v1QC4QVDg4fz1NooYY1v-Uq4GORd8dnnr8,14773
179
+ onnx2tf/ops/SoftmaxCrossEntropyLoss.py,sha256=F7EKMOyYRoz1gGPvmOB9B8u4WZbguKCjdlf3Y54BEg0,10364
173
180
  onnx2tf/ops/Softplus.py,sha256=R44YMo8G2Ig15jBO6T2VOI6RhpUmjD70qvSCXFylU-Q,3605
174
181
  onnx2tf/ops/Softsign.py,sha256=2ZdKH3KVHZXDzyO7S8f-O_aqRugurbRxd1i2g_fwCos,3600
175
182
  onnx2tf/ops/SpaceToDepth.py,sha256=rWtPQNm2rErYs20gQyz-tFYsImAIUBGtdvfMVkJg5bo,2809
@@ -177,11 +184,14 @@ onnx2tf/ops/Split.py,sha256=Z2UwbEBnG8nY3fED__ijgD9KikTuqPBv5ZjHEeoNURU,12103
177
184
  onnx2tf/ops/SplitToSequence.py,sha256=BS_JEd7DC7vuPfs5oRRW774mtlK--kqf9DJUalv-Agk,5062
178
185
  onnx2tf/ops/Sqrt.py,sha256=-xE8Tk_6unSR56k9g3R46lML4Nht5kQwqJT0JYkn5ko,3585
179
186
  onnx2tf/ops/Squeeze.py,sha256=FLIt2qjWh1IJyti1c4YHuepH2Fkxt40rnEKszzmwsnE,7980
180
- onnx2tf/ops/StringNormalizer.py,sha256=lyjUfhvZiIUZhLptI0rW_xwpFBJ6XuhDCyvCKNh-ogA,5214
187
+ onnx2tf/ops/StringConcat.py,sha256=J0tlZ8f-DZEXsgLC8LrScSt2r5ibaVmg9jSpR4cEGUE,4006
188
+ onnx2tf/ops/StringNormalizer.py,sha256=N_E6lCwlDgIZNNKqK6Z8cOJ3DBI-jEyMBjxsZPPyASo,5914
189
+ onnx2tf/ops/StringSplit.py,sha256=YSATXLQtjQVzAY0Qp6GAFzkfgWNA7ywn13VdWu9a_zg,4866
181
190
  onnx2tf/ops/Sub.py,sha256=JCUWNmRLrwJEB8_0MPRTzmZ4KAV_HLXNivUd_jNqPQI,11012
182
191
  onnx2tf/ops/Sum.py,sha256=wtI0SbGuNFxkLskBk68ZhOAg3XyrIx-9xGYy1GZCVSo,3073
183
192
  onnx2tf/ops/Tan.py,sha256=Ncig8clGvY7GWshqxRDRdcxjcbf_HTKGdpDw5ValrKI,3582
184
193
  onnx2tf/ops/Tanh.py,sha256=PIQUvxS_AIDufblC2vc573nse2UCRA9z5yWd7kB-51s,3585
194
+ onnx2tf/ops/TensorScatter.py,sha256=xOB1HVeHXFUUTmKJfZuUBEyPSLpJYjzUf0cAMqblsnc,7413
185
195
  onnx2tf/ops/ThresholdedRelu.py,sha256=ArF3uRH7jN8kdYYDNcivJgv9UTFl5aqqSH2Qu79j4sY,3769
186
196
  onnx2tf/ops/Tile.py,sha256=xkprg6yTaykivcHFJ644opzVPctaeplu-Ed-OpS98Gg,12720
187
197
  onnx2tf/ops/TopK.py,sha256=f6OG-DcMWneXwSjIkmY935SPyOMD5tMteHnlQHoJwQo,6348
@@ -199,7 +209,7 @@ onnx2tf/utils/enums.py,sha256=7c5TqetqB07VjyHoxJHfLgtqBqk9ZRyUF33fPOJR1IM,1649
199
209
  onnx2tf/utils/iterative_json_optimizer.py,sha256=qqeIxWGxrhcCYk8-ebWnblnOkzDCwi-nseipHzHR_bk,10436
200
210
  onnx2tf/utils/json_auto_generator.py,sha256=OC-SfKtUg7zUxaXTAg6kT0ShzIc3ByjDa3FNp173DtA,60302
201
211
  onnx2tf/utils/logging.py,sha256=yUCmPuJ_XiUItM3sZMcaMO24JErkQy7zZwVTYWAuiKg,1982
202
- onnx2tf-1.29.17.dist-info/WHEEL,sha256=e_m4S054HL0hyR3CpOk-b7Q7fDX6BuFkgL5OjAExXas,80
203
- onnx2tf-1.29.17.dist-info/entry_points.txt,sha256=GuhvLu7ZlYECumbmoiFlKX0mFPtFi_Ti9L-E5yuQqKs,42
204
- onnx2tf-1.29.17.dist-info/METADATA,sha256=1KG30m7PWIXRFCyU9xrvlttJLm4kZmZCj0BOrf-f_gw,154244
205
- onnx2tf-1.29.17.dist-info/RECORD,,
212
+ onnx2tf-1.29.18.dist-info/WHEEL,sha256=fAguSjoiATBe7TNBkJwOjyL1Tt4wwiaQGtNtjRPNMQA,80
213
+ onnx2tf-1.29.18.dist-info/entry_points.txt,sha256=GuhvLu7ZlYECumbmoiFlKX0mFPtFi_Ti9L-E5yuQqKs,42
214
+ onnx2tf-1.29.18.dist-info/METADATA,sha256=9JTkd8SawqhrnG2GYMLaI8rvpkmiUJMRUdGvEhbGSBE,154306
215
+ onnx2tf-1.29.18.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: uv 0.9.27
2
+ Generator: uv 0.9.28
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any