Документация Engee

API

getindex(tape::Tape{ONNXCtx}, onnx_name::String)

Возвращает операцию на ленте, используя имя в графе ONNX.

array(p::TensorProto, wrap=Array)

Возвращает p как объект Array правильного типа. С помощью второго аргумента можно изменить тип возвращаемого массива.

attribute(p::AttributeProto)

Возвращает атрибут из p в виде пары «имя => значение».

from_nnlib(x)

Преобразует аргумент из формата NNlib в формат ONNX. Существует и обратная операция from_onnx.

См. также описание from_onnx_conv, from_onnx_spatial, from_onnx_conv и других подобных методов.

from_nnlib_spatial(x, d)

Преобразует пространственные атрибуты, такие как шаг или растяжение Conv, из формата Julia в формат ONNX.

x — это значения атрибута в формате Julia. d — это количество пространственных измерений.

from_onnx(x)

Обратный метод для метода from_nnlib.

graphproto()

Возвращает объект ONNX.GraphProto, все поля которого инициализированы пустыми массивами.

load(io::IO, model_args...; backends=[:ONNX], exec::Bool=true)
load(filename::String, model_args...; backends=[:ONNX], exec::Bool=true)

Загружает модель ONNX как объект Umlaut.Tape. Способ десериализации определенного узла ONNX контролируется методами load_node!, которые диспетчеризуются по бэкенду и типу op_type узла.

С помощью параметра backends можно настраивать процесс загрузки.

Параметр exec предписывает загрузчику выполнять каждую операцию сразу после добавления, что упрощает отладку. Значение по умолчанию — true.

См. также описание save!.

onnx_gather(data::AbstractArray, idxs::AbstractArray{Int}; dim=ndims(data))

Реализация операции ONNX Gather с отсчитываемыми от нуля индексами. Привычный для Julia вариант приведен в описании функции take.

push_call!(tape::Tape{ONNXCtx}, fn, args...; kwargs)

Сокращение для push!(tape, mkcall(fn, args..)), также принимающее именованные аргументы и учитывающее параметр ONNXCtx.exec.

rename_keys(dict::Dict, subs::Dict)

Создает копию dict, заменяя ключи в соответствии с сопоставлением subs.

save(io::IO, tape::Umlaut.Tape{ONNXCtx})
save(filename::String, tape::Umlaut.Tape{ONNXCtx})

Сохраняет ленту как модель ONNX. Способ сериализации определенной операции контролируется методами save_node!.

См. также описание load!.

save_node!(g::GraphProto, op::Umlaut.Call)
save_node!(g::GraphProto, ::OpConfig{:Backend, Fn}, op::Umlaut.Call)

Сериализует отдельную операцию с ленты в граф.

take(data, idxs; dim=ndims(data))

Принимает элементы из массива по оси. Например, для четырехмерных данных и dim=3 это примерно соответствует data[:, :, idxs, :], однако допускаются многомерные индексы. В описании numpy.take можно найти более подробное объяснение.

В контексте ONNX метод take используется для реализации операции Gather. Однако во время загрузки эта функция НЕ записывается напрямую на ленту. Вместо этого используется более привычная для ONNX оболочка onnx_gather().

Обратите внимание: в ONNX операция Gather отличается от GatherElements, GatherND и функции Julia NNlib.gather().

unpacked_vars(tape::Umlaut.Tape, op::Umlaut.Call)

Для вызова с несколькими выходными значениями находит на ленте переменные, ссылающиеся на элементы выходных данных. Пример:

import Umlaut: Tape, Input, mkcall

make_tuple(x) = (x, x + 1)

tape = Tape()
x = push!(tape, Input(1.0))
out = push!(tape, mkcall(make_tuple, x))
y1 = push!(tape, mkcall(getfield, out, 1))
y2 = push!(tape, mkcall(getfield, out, 2))

@assert unpacked_vars(tape, tape[out]) == [y1, y2]