def _get_vi_tensor_type(self, vi_name: str):
        """Get the tensor type of an input/output.

        :param vi_name: name of the input/output.
        :return: tensor type of the input/output.
        """
        proto = self.get_value_info_proto(vi_name)
        if proto is None:
            return None

        tensor_type = proto.type.tensor_type
        if tensor_type.elem_type == 0:
            # sequence type
            # TODO(jambayk): add support for different types
            # refer to https://github.com/lutzroeder/netron/blob/main/source/onnx.js#L1424
            tensor_type = proto.type.sequence_type.elem_type.tensor_type
        return tensor_type
Get the tensor type of an input/output.

        :param vi_name: name of the input/output.
        :return: tensor type of the input/output.
        
olive/passes/onnx/onnx_dag.py