API CNTK библиотеки Eval C++
Библиотека CNTK C++ для оценки основана на API библиотеки CNTK. Для оценки модели используются следующие методы.
Загрузка модели
static FunctionPtr CNTK::Function::Load(const std::wstring& modelFile, const DeviceDescriptor& computeDevice = DeviceDescriptor::UseDefaultDevice()
Этот метод загружает файл модели и возвращает указатель на функцию, представляющую загруженную модель. Функция в CNTK обозначает граф вычислений, состоящий из примитивных функций или составных функций с нулевым или несколькими входными аргументами и одним или несколькими выходными данными. Это modelFile
путь к файлу модели. Указывает computeDevice
устройство для запуска оценки.
static FunctionPtr CNTK::Function::Load(char *modelBuffer, size_t modelBufferLength, const DeviceDescriptor& computeDevice = DeviceDescriptor::UseDefaultDevice()
Этот метод загружает модель из буфера памяти и возвращает указатель на функцию, представляющую загруженную модель. Указывает modelBuffer
на буфер, содержащий содержимое сериализованной модели, и modelBufferLength
это длина буфера. Указывает computeDevice
устройство для запуска оценки.
Оценка функции
void CNTK::Function::Evaluate(const std::unordered_map<Variable, ValuePtr>& arguments, std::unordered_map<Variable, ValuePtr>& outputs, const DeviceDescriptor& computeDevice = DeviceDescriptor::UseDefaultDevice()
Этот метод запускает вычисление this
функции, представляющей модель с указанными параметрами. Содержит arguments
значения всех входных переменных, необходимых для оценки, и outputs
сохраняет значения выходных переменных. Хранилище выходных значений может быть предварительно выделено вызывающим объектом или системой, если сопоставление ValuePtr передается как null вызывающей стороны. Указывает computeDevice
устройство для запуска оценки.
Создание значения с использованием плотного ввода
template <typename ElementType> static ValuePtr CNTK::Value::CreateBatch(const NDShape& sampleShape, const std::vector<ElementType>& batchData, const DeviceDescriptor& device, bool readOnly = false
Создает новый объект Value, содержащий пакет примеров. Количество выборок в пакете — это количество элементов, batchData
разделенных на размер sampleShape
(ошибка среды выполнения возникает, если остаток не равен нулю). Созданный объект Value содержит копию указанных данных в batchData
. ElementType
— это тип данных созданного объекта Value. В настоящее float
время и double
поддерживаются.
Параметры
sampleShape
: тензорная форма объекта Value.batchData
: данные, содержащиеся в объекте Value.device
: на каком устройстве следует создать объект Value.readOnly
: объект Value доступен только для чтения, если этот флаг имеет значениеtrue
.
template <typename ElementType> static ValuePtr CNTK::Value::CreateSequence(const NDShape& sampleShape, const std::vector<ElementType>& sequenceData, const DeviceDescriptor& device, bool readOnly = false
Создает объект Value, содержащий последовательность примеров. Созданный объект Value содержит копию указанных данных в sequenceData
. Длина последовательности — это количество элементов, разделенных на размер sampleShape
(ошибка времени выполнения возникает, sequenceData
если остаток не равен нулю). Созданная последовательность — это новая последовательность. ElementType
— это тип данных созданного объекта Value. В настоящее float
время и double
поддерживаются.
Параметры
sampleShape
: тензорная форма значения.sequenceData
: данные, содержащиеся в значении.device
: на каком устройстве следует создать объект Value.readOnly
: значение доступно только для чтения, если этот флаг имеет значениеtrue
.
template <typename ElementType> static ValuePtr CNTK::Value::CreateSequence(const NDShape& sampleShape, const std::vector<ElementType>& sequenceData, bool sequenceStartFlag, const DeviceDescriptor& device, bool readOnly = false
Создает объект Value, содержащий последовательность примеров. Созданный объект Value содержит копию указанных данных в sequenceData
. Длина последовательности — это количество элементов, разделенных на размер sampleShape
(ошибка времени выполнения возникает, sequenceData
если остаток не равен нулю). SequenceStartFlag указывает, является ли эта последовательность новой или продолжением предыдущей последовательности с тем же индексом в списке последовательностей из предыдущего вызова этого метода. ElementType
— это тип данных созданного объекта Value. В настоящее float
время и double
поддерживаются.
Параметры
sampleShape
: тензорная форма значения.sequenceData
: данные, содержащиеся в значении.sequenceStartFlag
:true
указывает, что это новая последовательность.false
означает продолжение предыдущей последовательности.device
: на каком устройстве следует создать объект Value.readOnly
: значение доступно только для чтения, если этот флаг имеет значениеtrue
.
template <typename ElementType> static ValuePtr CNTK::Value::CreateBatchOfSequences(const NDShape& sampleShape, const std::vector<std::vector<ElementType>>& batchOfSequences, const DeviceDescriptor& device, bool readOnly = false
Создает объект Value, содержащий пакет последовательностей переменной длины. Созданный объект Value содержит копию указанных данных в batchOfSequences
. Количество последовательностей в пакете — это размер batchOfSequences
. Длина каждой последовательности — это количество элементов в соответствующей последовательности batchOfSequences
, разделенной на размер sampleShape
(ошибка среды выполнения возникает, если остаток не равен нулю). Каждая последовательность в batchOfSequences
ней представляет собой новую последовательность. ElementType
— это тип данных созданного объекта Value. В настоящее float
время и double
поддерживаются.
Параметры
sampleShape
: тензорная форма значения.batchOfSequences
: данные, хранящиеся в значении. Внешнийvector
представляет коллекцию последовательностей с переменной длиной, а внутреннийvector
представляет каждую отдельную последовательность.device
: на каком устройстве должно быть создано значение.readOnly
: значение доступно только для чтения, если этот флаг имеет значениеtrue
.
template <typename ElementType> static ValuePtr CNTK::Value::CreateBatchOfSequences(const NDShape& sampleShape, const std::vector<std::vector<ElementType>>& batchOfSequences, const std::vector<bool>& sequenceStartFlags, const DeviceDescriptor& device, bool readOnly = false
Создает объект Value, содержащий пакет последовательностей переменной длины. Созданный объект Value содержит копию указанных данных в batchOfSequences
. Количество последовательностей в пакете — это размер batchOfSequences
. Длина каждой последовательности — это количество элементов в соответствующей последовательности batchOfSequences
, разделенной на размер sampleShape
(ошибка среды выполнения возникает, если остаток не равен нулю). ElementType
— это тип данных созданного объекта Value. В настоящее float
время и double
поддерживаются.
Параметры
sampleShape
: тензорная форма значения.batchOfSequences
: данные, хранящиеся в значении. Внешнийvector
представляет коллекцию последовательностей с переменной длиной, а внутреннийvector
представляет каждую отдельную последовательность.sequenceStartFlags
: коллекция логических значений. Каждый элемент представляет, является ли соответствующая последовательность новой (в случаеtrue
) или продолжением предыдущей последовательностиbatchOfSequences
(в случаеfalse
).device
: на каком устройстве должно быть создано значение.readOnly
: значение доступно только для чтения, если этот флаг имеет значениеtrue
.
Создание значения с помощью входных векторов с одним горячим вектором
template <typename ElementType> static ValuePtr CNTK::Value::CreateBatch(size_t dimension, const std::vector<size_t>& batchData, const DeviceDescriptor& device, bool readOnly = false)
Создает новый объект Value, содержащий пакет примеров. Каждый образец представлен значением индекса, которое указывает на ненулевое значение в одном горячем векторе dimension
элементов. Количество выборок в пакете — это количество элементов в batchData
. ElementType
— это тип данных созданного объекта Value. В настоящее float
время и double
поддерживаются.
Параметры
dimension
: размер измерения одного горячего вектора.batchData
: коллекция индексов, представляющих пакет образцов.device
: на каком устройстве следует создать объект Value.readOnly
: значение доступно только для чтения, если этот флаг имеет значениеtrue
.
template <typename ElementType> static ValuePtr CNTK::Value::CreateSequence(size_t dimension, const std::vector<size_t>& sequenceData, const DeviceDescriptor& device, bool readOnly = false)
Создает объект Value, содержащий последовательность примеров. Каждый образец представлен значением индекса, которое указывает на ненулевое значение в одном горячем векторе dimension
элементов. Длина последовательности — это количество элементов в sequenceData
. Каждая последовательность является новой последовательностью. ElementType
— это тип данных созданного объекта Value. В настоящее float
время и double
поддерживаются.
Параметры
dimension
: размер измерения одного горячего вектора.sequenceData
: коллекция индексов, представляющих последовательность выборок.device
: на каком устройстве следует создать объект Value.readOnly
: значение доступно только для чтения, если этот флаг имеет значениеtrue
.
template <typename ElementType> static ValuePtr CNTK::Value::CreateSequence(size_t dimension, const std::vector<size_t>& sequenceData, bool sequenceStartFlag, const DeviceDescriptor& device, bool readOnly = false)
Создает объект Value, содержащий последовательность примеров. Каждый образец представлен значением индекса, которое указывает на ненулевое значение в одном горячем векторе dimension
элементов. SeqStartFlag указывает, является ли эта последовательность новой или продолжением предыдущей последовательности в том же индексе в списке последовательностей из предыдущего вызова этого метода. Длина последовательности — это количество элементов в sequenceData
. ElementType
— это тип данных созданного объекта Value. В настоящее float
время и double
поддерживаются.
Параметры
dimension
: размер измерения одного горячего вектора.sequenceData
: коллекция индексов, представляющих последовательность выборок.sequenceStartFlag
:true
указывает, что это новая последовательность.false
означает продолжение предыдущей последовательности.device
: на каком устройстве следует создать объект Value.readOnly
: значение доступно только для чтения, если этот флаг имеет значениеtrue
.
template <typename ElementType> static ValuePtr CNTK::Value::CreateBatchOfSequences(size_t dimension, const std::vector<std::vector<size_t>>& batchOfSequences, const DeviceDescriptor& device, bool readOnly = false
Создает объект Value, содержащий пакет последовательностей переменной длины. Каждый образец представлен значением индекса, которое указывает на ненулевое значение в одном горячем векторе dimension
элементов. Число последовательностей — это количество элементов во внешнем списке batchOfSequences
. Длина каждой последовательности — это количество элементов соответствующей последовательности во внутреннем списке batchOfSequences
. Каждая последовательность в batchOfSequences
ней представляет собой новую последовательность. ElementType
— это тип данных созданного объекта Value. В настоящее float
время и double
поддерживаются.
Параметры
dimension
: размер измерения одного горячего вектора.batchOfSequences
: коллекция индексов, представляющих последовательности выборок. Внешнийvector
представляет коллекцию последовательностей с переменной длиной, а внутреннийvector
представляет каждую отдельную последовательность.device
: на каком устройстве следует создать объект Value.readOnly
: значение доступно только для чтения, если этот флаг имеет значениеtrue
.
template <typename ElementType> static ValuePtr CNTK::Value::CreateBatchOfSequences(size_t dimension, const std::vector<std::vector<size_t>>& batchOfSequences, const std::vector<bool>& sequenceStartFlags, const DeviceDescriptor& device, bool readOnly = false
Создает объект Value, содержащий пакет последовательностей переменной длины. Каждый образец представлен значением индекса, которое указывает на ненулевое значение в одном горячем векторе dimension
элементов. Число последовательностей — это количество элементов во внешнем списке batchOfSequences
. Длина каждой последовательности — это количество элементов соответствующей последовательности во внутреннем списке batchOfSequences
. ElementType
— это тип данных созданного объекта Value. В настоящее float
время и double
поддерживаются.
Параметры
dimension
: размер измерения одного горячего вектора.batchOfSequences
: коллекция индексов, представляющих последовательности выборок. Внешнийvector
представляет коллекцию последовательностей с переменной длиной, а внутреннийvector
представляет каждую отдельную последовательность.sequenceStartFlags
: коллекция логических значений. Каждый элемент представляет, является ли соответствующая последовательность новой (в случаеtrue
) или продолжением предыдущей последовательностиbatchOfSequences
(в случаеfalse
).device
: на каком устройстве следует создать объект Value.readOnly
: значение доступно только для чтения, если этот флаг имеет значениеtrue
.
Создание значения с помощью разреженных входных данных CSC
В настоящее время поддерживается формат сжатых разреженных столбцов (CSC). Формат CSC сохраняет матрицу в основном формате столбца, а массив, содержащий индексы столбцов, сжимается. Матрица в формате CSC представлена следующими параметрами:
nonZeroValues
: массив данных, содержащий все ненулевое значение матрицы в основном формате.rowIndices
: массив, содержащий индексы строк соответствующих элементов в массивеnonZeroValues
.colStarts
: массив, содержащий индексы в массивахrowIndices
иnonZeroValues
.
Подробное описание формата CSC можно найти здесь.
template <typename ElementType> static ValuePtr CNTK::Value::CreateSequence(const NDShape& sampleShape, size_t sequenceLength, const SparseIndexType* colStarts, const SparseIndexType* rowIndices, const ElementType* nonZeroValues, size_t numNonZeroValues, const DeviceDescriptor& device, bool readOnly = false
Создает новый объект Value, содержащий последовательность примеров с использованием разреженного формата входных данных CSC. Длина последовательности — это количество строк разреженной матрицы. Созданная последовательность — это новая последовательность. ElementType
— это тип данных созданного объекта Value. В настоящее float
время и double
поддерживаются.
Параметры
sampleShape
: тензорная форма значения. Для разреженных входных данных тензорная фигура должна совпадать с общим размером тензорной фигуры.sequenceLength
: длина последовательности, которая также является числом строк в разреженной матрице.colStarts
: массив содержит индексы для каждого столбца в массивахrowIndices
иnonZeroValues
.rowIndices
: массив, содержащий индексы строк соответствующих элементов в массивеnonZeroValues
.nonZeroValues
: массив, содержащий все ненулевое значение в разреженной матрице.numNonZeroValues
: число ненулевого значения в разреженной матрице.device
: на каком устройстве следует создать объект Value.readOnly
: значение доступно только для чтения, если этот флаг имеет значениеtrue
.
template <typename ElementType> static ValuePtr CNTK::Value::CreateSequence(const NDShape& sampleShape, size_t sequenceLength, const SparseIndexType* colStarts, const SparseIndexType* rowIndices, const ElementType* nonZeroValues, size_t numNonZeroValues, bool sequenceStartFlag, const DeviceDescriptor& device, bool readOnly = false
Создает новый объект Value, содержащий последовательность примеров с использованием разреженного формата входных данных CSC. Длина последовательности — это количество строк разреженной матрицы. SequenceStartFlag указывает, является ли эта последовательность новой или продолжением предыдущей последовательности из предыдущего вызова этого метода. ElementType
— это тип данных созданного объекта Value. В настоящее float
время и double
поддерживаются.
Параметры
sampleShape
: тензорная форма значения. Для разреженных входных данных тензорная фигура должна совпадать с общим размером тензорной фигуры.sequenceLength
: длина последовательности, которая также является числом строк в разреженной матрице.colStarts
: массив содержит индексы для каждого столбца в массивахrowIndices
иnonZeroValues
.rowIndices
: массив, содержащий индексы строк соответствующих элементов в массивеnonZeroValues
.nonZeroValues
: массив, содержащий все ненулевое значение в разреженной матрице.numNonZeroValues
: число ненулевого значения в разреженной матрице.sequenceStartFlag
:true
указывает, что это новая последовательность.false
означает продолжение предыдущей последовательности.device
: на каком устройстве следует создать объект Value.readOnly
: значение доступно только для чтения, если этот флаг имеет значениеtrue
.
template <typename ElementType> static ValuePtr CNTK::Value::CreateSequence(size_t dimension, size_t sequenceLength, const SparseIndexType* colStarts, const SparseIndexType* rowIndices, const ElementType* nonZeroValues, size_t numNonZeroValues, const DeviceDescriptor& device, bool readOnly = false
Создает новый объект Value, содержащий последовательность примеров с использованием разреженного формата входных данных CSC. Длина последовательности — это количество строк разреженной матрицы. Созданная последовательность — это новая последовательность. ElementType
— это тип данных созданного объекта Value. В настоящее float
время и double
поддерживаются.
Параметры
dimension
: размер измерения одного горячего вектора.sequenceLength
: длина последовательности, которая также является числом строк в разреженной матрице.colStarts
: массив содержит индексы для каждого столбца в массивахrowIndices
иnonZeroValues
.rowIndices
: массив, содержащий индексы строк соответствующих элементов в массивеnonZeroValues
.nonZeroValues
: массив, содержащий все ненулевое значение в разреженной матрице.numNonZeroValues
: число ненулевого значения в разреженной матрице.device
: на каком устройстве следует создать объект Value.readOnly
: значение доступно только для чтения, если этот флаг имеет значениеtrue
.
template <typename ElementType> static ValuePtr CNTK::Value::CreateSequence(size_t dimension, size_t sequenceLength, const SparseIndexType* colStarts, const SparseIndexType* rowIndices, const ElementType* nonZeroValues, size_t numNonZeroValues, bool sequenceStartFlag, const DeviceDescriptor& device, bool readOnly = false
Создает новый объект Value, содержащий последовательность примеров с использованием разреженного формата входных данных CSC. Длина последовательности — это количество строк разреженной матрицы. SequenceStartFlag указывает, является ли эта последовательность новой или продолжением предыдущей последовательности. ElementType
— это тип данных созданного объекта Value. В настоящее float
время и double
поддерживаются.
Параметры
dimension
: размер измерения одного горячего вектора.sequenceLength
: длина последовательности, которая также является числом строк в разреженной матрице.colStarts
: массив содержит индексы для каждого столбца в массивахrowIndices
иnonZeroValues
.rowIndices
: массив, содержащий индексы строк соответствующих элементов в массивеnonZeroValues
.nonZeroValues
: массив, содержащий все ненулевое значение в разреженной матрице.numNonZeroValues
: число ненулевого значения в разреженной матрице.sequenceStartFlag
:true
указывает, что это новая последовательность.false
означает продолжение предыдущей последовательности.device
: на каком устройстве следует создать объект Value.readOnly
: значение доступно только для чтения, если этот флаг имеет значениеtrue
.
Создание значения из NDArrayView
static ValuePtr CNTK::Value::Create(const NDShape& sampleShape, const std::vector<NDArrayViewPtr>& sequences, const DeviceDescriptor& device, bool readOnly = false
Создает объект Value на основе коллекции NDArrayViews. Каждая последовательность в sequences
ней представляет собой новую последовательность.
Параметры
sampleShape
: тензорная форма создаваемого значения.sequences
: коллекция последовательностей, представленных NDArrayView. Каждый NDArrayView представляет последовательность.device
: на каком устройстве следует создать объект Value.readOnly
: значение доступно только для чтения, если этот флаг имеет значениеtrue
.
static ValuePtr CNTK::Value::Create(const NDShape& sampleShape, const std::vector<NDArrayViewPtr>& sequences, const std::vector<bool>& sequenceStartFlags, const DeviceDescriptor& device, bool readOnly, bool createNewCopy
Создает объект Value на основе коллекции NDArrayViews. SequenceStartFlags указывает, является ли последовательность новой последовательностью или продолжением предыдущей последовательности.
Параметры
sampleShape
: тензорная форма создаваемого значения.sequences
: коллекция последовательностей, представленных NDArrayView. Каждый NDArrayView представляет последовательность.sequenceStartFlags
: коллекция логических значений. Каждый элемент представляет, является ли соответствующая последовательность новой (в случаеtrue
) или продолжением предыдущей последовательностиsequences
(в случаеfalse
).device
: на каком устройстве следует создать объект Value.readOnly
: значение доступно только для чтения, если этот флаг имеет значениеtrue
.
Копирование данных из объекта Value
template <typename ElementType> void CNTK::Value::CopyVariableValueTo(const Variable& outputVariable, std::vector<std::vector<ElementType>>& sequences
Копирует данные, хранящиеся в значении, в буфер, предоставленный sequences
. Список sequences
последовательностей с переменной длиной. Количество элементов, содержащихся во внешнем списке sequences
, — это количество последовательностей в значении. Каждый элемент внешнего списка представляет последовательность. Каждая последовательность, представленная vector<ElementType>
, содержит переменное число выборок. Каждый пример состоит из фиксированного числа элементов с типом ElementType
. Количество элементов образца определяется формой outputVariable
. Форма переменной должна соответствовать форме значения. ElementType
— это тип данных созданного объекта Value. В настоящее float
время и double
поддерживаются.
Параметры
outputVariable
: обозначает фигуру и динамические оси при копировании данных из этого значения вsequences
.sequences
: выходной буфер, используемый для хранения данных, скопированных из значения.
void CNTK::Value::CopyVariableValueTo(const Variable& outputVariable, std::vector<std::vector<size_t>>& sequences
Копирует данные, хранящиеся в объекте Value, в буфер, предоставленный sequences
. Список sequences
последовательностей с переменной длиной. Количество элементов, содержащихся во внешнем списке sequences
, — это количество последовательностей в значении. Каждый элемент внешнего списка представляет последовательность. Каждая последовательность, представленная vector<size_t>
, содержит переменное число выборок. Каждый пример представлен индексом, указывающим на ненулевое значение в одном горячем векторе. Размер измерения одного горячего вектора должен соответствовать размеру, определенному в параметре outputVariable
.
Параметры
outputVariable
: обозначает фигуру и динамические оси при копировании данных из этого значения вsequences
.sequences
: выходной буфер, используемый для хранения данных, скопированных из значения.
template <typename ElementType> void CopyVariableValueTo(const Variable& outputVariable, size_t& sequenceLength, std::vector<SparseIndexType>& colStarts, std::vector<SparseIndexType>& rowIndices, std::vector<ElementType>& nonZeroValues, size_t& numNonZeroValues)
Скопируйте данные, хранящиеся в объекте Value, в буферы, представляющие последовательность в разреженном формате CSC. При необходимости размер буфера последовательности будет изменен. Значение должно иметь ту же форму тензора, что и outputVariable. При возврате задается длина последовательности, sequenceLength
хранящейся в значении, и rowIndices
colStarts
nonZeroValues
содержит данные начальных индексов столбцов, индексов строк и ненулевых значений, а numNonZeroValues
также устанавливается число ненулевых значений, содержащихся в this
значении.
Параметры
outputVariable
: обозначает фигуру и динамические оси при копировании данных из этого значения в буферы.sequenceLength
: при возврате устанавливается длина последовательности, хранящейся в значении.colStarts
: при возврате он содержит индексы вnonZeorValues
первом ненулевых элементах каждого столбца матрицы.rowIndices
: при возврате он содержит индексы строк каждого элемента матрицы, отличного от нуля.nonZeroValues
: при возврате он содержит значения всех ненулевых элементов матрицы.numNonZeroValues
: при возврате возвращается число ненулевых элементов матрицы.
Вспомогательные функции для управления функцией для оценки
FunctionPtr CNTK::Function::Clone(ParameterCloningMethod parameterCloneMethod = ParameterCloningMethod::Clone, const std::unordered_map<Variable, Variable>& replacements = {}) const
Для оценки этот метод вызывается для создания клонированного функции, которая затем может использоваться другим потоком для оценки той же модели. Для этой цели parameterCloneMethod
необходимо задать значение ParameterCloningMethod::Share
по умолчанию. Параметр replacements
указывает любые замены переменных, применяемые в клонированного экземпляра функции, и обычно не требуется для оценки.
FunctionPtr CNTK::Function::FindByName(const std::wstring& name, bool nestedSearchInsideBlockFunction = false
Найдите функцию с заданным name
в графе функции, базовой функцией this. Если существует несколько функций с одинаковым именем, возникает исключение. Если nestedSearchInsideBlockFunction
значение равно true, поиск выполняется и во всех функциях внутри блоков.
std::vector<FunctionPtr> CNTK::Function::FindAllWithName(const std::wstring& name, bool nestedSearchInsideBlockFunction = false
Найдите список функций с заданным name
в графе функций, лежащим в основе функции "this". Если nestedSearchInsideBlockFunction
значение равно true, поиск выполняется и во всех функциях внутри блоков.
FunctionPtr CNTK::Combine(const std::vector<Variable>& operands, const std::wstring& name = L""
Создайте новый экземпляр функции, объединяющий выходные данные указанного списка операндов функций. "Выходные данные" новой функции являются объединением "Выходные данные" каждого из указанных "операндов". Например, при создании модели классификации обычно функция перекрестной потери и функция ClassificationError состоят из корней графа вычислений, который может быть "Combine"d, чтобы создать одну функцию с 2 выходными данными; Viz. Выходные данные CrossEntropy и ClassificationError.
FunctionPtr CNTK::AsComposite(const FunctionPtr& rootFunction, const std::wstring& name = L""
Создает составную функцию, которая имеет указанный rootFunction
в качестве корневого элемента. Составной элемент обозначает функцию более высокого уровня, инкапсулируя весь граф функций, лежащих в основе указанного rootFunction
.
FunctionPtr CNTK::Alias(const Variable& operand, const std::wstring& name = L""
Создает новый экземпляр функции, который является только псевдонимом указанного.operand
Дополнительные сведения о типах данных, используемых функциями выше, см. в разделе CNTKLibrary.h .
Примеры
Примеры C++ CNTKLibraryCPPEvalCPUOnlyExamples и CNTKLibraryCPPEvalGPUExamples демонстрируют использование библиотеки CNTK для оценки. В примерах также показано, как параллельно выполнять несколько вычислений с помощью нескольких потоков и совместного использования параметров модели между потоками.