27 lines
833 B
Python
27 lines
833 B
Python
import tensorflow as tf
|
|
|
|
from onnx_tf.handlers.backend_handler import BackendHandler
|
|
from onnx_tf.handlers.handler import onnx_op
|
|
|
|
|
|
@onnx_op("SequenceConstruct")
|
|
class SequenceConstruct(BackendHandler):
|
|
|
|
@classmethod
|
|
def version_11(cls, node, **kwargs):
|
|
# create an empty sequence first
|
|
tensor_dict = kwargs["tensor_dict"]
|
|
dtype = tensor_dict[node.inputs[0]].dtype
|
|
input_sequence = tf.ragged.constant([], dtype=dtype)
|
|
|
|
# insert tensors at the end of sequence
|
|
for i in range(len(node.inputs)):
|
|
input_tensor = tf.expand_dims(tensor_dict[node.inputs[i]], 0)
|
|
if input_sequence.shape[0] == 0:
|
|
output_seq = tf.RaggedTensor.from_tensor(input_tensor)
|
|
else:
|
|
output_seq = tf.concat([input_sequence, input_tensor], axis=0)
|
|
input_sequence = output_seq
|
|
|
|
return [output_seq]
|