API
#
Base.getindex — Method
getindex(tape::Tape{ONNXCtx}, onnx_name::String)
Возвращает операцию на ленте, используя имя в графе ONNX.
#
ONNX.array — Function
array(p::TensorProto, wrap=Array)
Возвращает p как объект Array правильного типа. С помощью второго аргумента можно изменить тип возвращаемого массива.
#
ONNX.attribute — Method
attribute(p::AttributeProto)
Возвращает атрибут из p в виде пары «имя => значение».
#
ONNX.from_nnlib — Method
from_nnlib(x)
Преобразует аргумент из формата NNlib в формат ONNX. Существует и обратная операция from_onnx.
См. также описание from_onnx_conv, from_onnx_spatial, from_onnx_conv и других подобных методов.
#
ONNX.from_nnlib_spatial — Method
from_nnlib_spatial(x, d)
Преобразует пространственные атрибуты, такие как шаг или растяжение Conv, из формата Julia в формат ONNX.
x — это значения атрибута в формате Julia. d — это количество пространственных измерений.
#
ONNX.graphproto — Method
graphproto()
Возвращает объект ONNX.GraphProto, все поля которого инициализированы пустыми массивами.
#
ONNX.load — Method
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.onnx_gather — Method
onnx_gather(data::AbstractArray, idxs::AbstractArray{Int}; dim=ndims(data))
Реализация операции ONNX Gather с отсчитываемыми от нуля индексами. Привычный для Julia вариант приведен в описании функции take.
#
ONNX.push_call! — Method
push_call!(tape::Tape{ONNXCtx}, fn, args...; kwargs)
Сокращение для push!(tape, mkcall(fn, args..)), также принимающее именованные аргументы и учитывающее параметр ONNXCtx.exec.
#
ONNX.rename_keys — Method
rename_keys(dict::Dict, subs::Dict)
Создает копию dict, заменяя ключи в соответствии с сопоставлением subs.
#
ONNX.save — Method
save(io::IO, tape::Umlaut.Tape{ONNXCtx})
save(filename::String, tape::Umlaut.Tape{ONNXCtx})
Сохраняет ленту как модель ONNX. Способ сериализации определенной операции контролируется методами save_node!.
См. также описание load!.
#
ONNX.save_node! — Method
save_node!(g::GraphProto, op::Umlaut.Call)
save_node!(g::GraphProto, ::OpConfig{:Backend, Fn}, op::Umlaut.Call)
Сериализует отдельную операцию с ленты в граф.
#
ONNX.take — Method
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().
#
ONNX.unpacked_vars — Method
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]