Поделиться через


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 хранящейся в значении, и rowIndicescolStartsnonZeroValues содержит данные начальных индексов столбцов, индексов строк и ненулевых значений, а 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 для оценки. В примерах также показано, как параллельно выполнять несколько вычислений с помощью нескольких потоков и совместного использования параметров модели между потоками.