def from_list( lst, name=None, dtype=None ): # type: (List[Any], Optional[Text], Optional[int]) -> SequenceProto """Converts a list into a sequence def. Inputs: lst: a Python list name: (optional) the name of the sequence. dtype: (optional) type of element in the input list, used for specifying sequence values when converting an empty list. Returns: sequence: the converted sequence def. """ sequence = SequenceProto() if name: sequence.name = name if dtype: elem_type = dtype elif len(lst) > 0: first_elem = lst[0] if isinstance(first_elem, dict): elem_type = SequenceProto.MAP elif isinstance(first_elem, list): elem_type = SequenceProto.SEQUENCE else: elem_type = SequenceProto.TENSOR else: # if empty input list and no dtype specified # choose sequence of tensors on default elem_type = SequenceProto.TENSOR sequence.elem_type = elem_type if (len(lst) > 0) and not all( isinstance(elem, type(lst[0])) for elem in lst): raise TypeError( "The element type in the input list is not the same " "for all elements and therefore is not supported as a sequence.") if elem_type == SequenceProto.TENSOR: for tensor in lst: sequence.tensor_values.extend([from_array(tensor)]) elif elem_type == SequenceProto.SEQUENCE: for seq in lst: sequence.sequence_values.extend([from_list(seq)]) elif elem_type == SequenceProto.MAP: for map in lst: sequence.map_values.extend([from_dict(map)]) else: raise TypeError("The element type in the input list is not a tensor, " "sequence, or map and is not supported.") return sequence
def make_sequence( name, # type: Text elem_type, # type: int values, # type: Sequence[Any] ): # type: (...) -> SequenceProto ''' Make a Sequence with specified value arguments. ''' sequence = SequenceProto() sequence.name = name sequence.elem_type = elem_type values_field = mapping.STORAGE_ELEMENT_TYPE_TO_FIELD[elem_type] getattr(sequence, values_field).CopyFrom(values) return sequence
def make_sequence( name: Text, elem_type: SequenceProto.DataType, values: Sequence[Any], ) -> SequenceProto: ''' Make a Sequence with specified value arguments. ''' sequence = SequenceProto() sequence.name = name sequence.elem_type = elem_type values_field = mapping.STORAGE_ELEMENT_TYPE_TO_FIELD[elem_type] getattr(sequence, values_field).extend(values) return sequence