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]