CNTK 라이브러리 Eval C++ API

평가용 C++ CNTK 라이브러리는 CNTK 라이브러리 API를 기반으로 합니다. 다음 메서드는 모델을 평가하는 데 사용됩니다.


모델 로드


static FunctionPtr CNTK::Function::Load(const std::wstring& modelFile, const DeviceDescriptor& computeDevice = DeviceDescriptor::UseDefaultDevice()

이 메서드는 모델 파일을 로드하고 로드된 모델을 나타내는 함수에 대한 포인터를 반환합니다. CNTK 함수는 0개 이상의 입력 인수와 하나 이상의 출력이 있는 기본 함수 또는 복합 함수로 구성된 계산 그래프를 나타냅니다. 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 사용하여 모델을 나타내는 함수의 평가를 시작합니다. 평가 argumentsoutputs 에 필요한 모든 입력 변수의 값을 포함하고 출력 변수의 값을 저장합니다. 출력 값의 스토리지는 호출자가 미리 할당하거나 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 로 나눈 값입니다(나머지가 0이 아니면 런타임 오류가 발생). 만든 Value 개체에는 지정된 데이터의 복사본이 포함됩니다 batchData. ElementType 는 만든 Value 개체의 데이터 형식입니다. 현재 floatdouble 지원됩니다.

매개 변수

  • 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. 시퀀스 길이는 요소 sequenceData 수를 크기 sampleShape 로 나눈 값입니다(나머지가 0이 아니면 런타임 오류가 발생). 만든 시퀀스는 새 시퀀스입니다. ElementType 는 만든 Value 개체의 데이터 형식입니다. 현재 floatdouble 지원됩니다.

매개 변수

  • 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. 시퀀스 길이는 요소 sequenceData 수를 크기 sampleShape 로 나눈 값입니다(나머지가 0이 아니면 런타임 오류가 발생). sequenceStartFlag는 이 시퀀스가 이전 호출에서 이 메서드에 대한 시퀀스 목록의 동일한 인덱스에 있는 이전 시퀀스의 새 시퀀스인지 또는 연속인지를 지정합니다. ElementType 는 만든 Value 개체의 데이터 형식입니다. 현재 floatdouble 지원됩니다.

매개 변수

  • 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 로 나눈 값입니다(나머지가 0이 아니면 런타임 오류가 발생). 각 batchOfSequences 시퀀스는 새 시퀀스입니다. ElementType 는 만든 Value 개체의 데이터 형식입니다. 현재 floatdouble 지원됩니다.

매개 변수

  • 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 로 나눈 값입니다(나머지가 0이 아니면 런타임 오류가 발생). ElementType 는 만든 Value 개체의 데이터 형식입니다. 현재 floatdouble 지원됩니다.

매개 변수

  • sampleShape: 값의 텐서 모양입니다.
  • batchOfSequences: 값에 저장할 데이터입니다. 외부 vector 는 길이가 가변적인 시퀀스의 컬렉션을 나타내고 내부 vector 는 각 개별 시퀀스를 나타냅니다.
  • sequenceStartFlags: 부울 값의 컬렉션입니다. 각 요소는 해당 시퀀스가 새 시퀀스 batchOfSequences 인지(있는 경우 true) 또는 이전 시퀀스의 연속(예: ) 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 개체를 만듭니다. 각 샘플은 요소의 원 핫 벡터에서 0이 아닌 값을 가리키는 인덱스 dimension 값으로 표시됩니다. 일괄 처리의 샘플 수는 .의 요소 batchData수입니다. ElementType 는 만든 Value 개체의 데이터 형식입니다. 현재 floatdouble 지원됩니다.

매개 변수

  • 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 개체를 만듭니다. 각 샘플은 요소의 원 핫 벡터에서 0이 아닌 값을 가리키는 인덱스 dimension 값으로 표시됩니다. 시퀀스 길이는 .의 sequenceData요소 수입니다. 각 시퀀스는 새 시퀀스입니다. ElementType 는 만든 Value 개체의 데이터 형식입니다. 현재 floatdouble 지원됩니다.

매개 변수

  • 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 개체를 만듭니다. 각 샘플은 요소의 원 핫 벡터에서 0이 아닌 값을 가리키는 인덱스 dimension 값으로 표시됩니다. seqStartFlag는 이 시퀀스가 이 메서드에 대한 이전 호출에서 시퀀스 목록의 동일한 인덱스에 있는 이전 시퀀스의 새 시퀀스인지 또는 연속인지를 지정합니다. 시퀀스 길이는 .의 sequenceData요소 수입니다. ElementType 는 만든 Value 개체의 데이터 형식입니다. 현재 floatdouble 지원됩니다.

매개 변수

  • 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 개체를 만듭니다. 각 샘플은 요소의 원 핫 벡터에서 0이 아닌 값을 가리키는 인덱스 dimension 값으로 표시됩니다. 시퀀스 수는 외부 목록의 요소 수 batchOfSequences입니다. 각 시퀀스의 길이는 내부 목록에 있는 해당 시퀀스의 요소 수 batchOfSequences입니다. 각 batchOfSequences 시퀀스는 새 시퀀스입니다. ElementType 는 만든 Value 개체의 데이터 형식입니다. 현재 floatdouble 지원됩니다.

매개 변수

  • 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 개체를 만듭니다. 각 샘플은 요소의 원 핫 벡터에서 0이 아닌 값을 가리키는 인덱스 dimension 값으로 표시됩니다. 시퀀스 수는 외부 목록의 요소 수 batchOfSequences입니다. 각 시퀀스의 길이는 내부 목록에 있는 해당 시퀀스의 요소 수 batchOfSequences입니다. ElementType 는 만든 Value 개체의 데이터 형식입니다. 현재 floatdouble 지원됩니다.

매개 변수

  • dimension: 원 핫 벡터의 차원 크기입니다.
  • batchOfSequences: 샘플 시퀀스를 나타내는 인덱스의 컬렉션입니다. 외부 vector 는 길이가 가변적인 시퀀스의 컬렉션을 나타내고 내부 vector 는 각 개별 시퀀스를 나타냅니다.
  • sequenceStartFlags: 부울 값의 컬렉션입니다. 각 요소는 해당 시퀀스가 새 시퀀스 batchOfSequences 인지(있는 경우 true) 또는 이전 시퀀스의 연속(예: ) false인지를 나타냅니다.
  • device: Value 개체를 만들어야 하는 디바이스입니다.
  • readOnly: 이 플래그가 .인 경우 값은 읽기 전용입니다 true.

스파스 CSC 입력을 사용하여 값 만들기

현재 압축된 스파스 열 형식(CSC)이 지원됩니다. CSC 형식은 행렬을 열 주 형식으로 저장하고 열 인덱스를 포함하는 배열이 압축됩니다. CSC 형식의 행렬은 다음 매개 변수로 표시됩니다.

  • nonZeroValues: 행렬의 모든 0이 아닌 값을 열 주 형식으로 보유하는 데이터 배열입니다.
  • rowIndices: 배열에 있는 해당 요소의 행 인덱스를 포함하는 배열 nonZeroValues입니다.
  • colStarts: 배열 및 nonZeroValues에 인덱스를 포함하는 배열입니다rowIndices.

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

CSC 스파스 입력 형식을 사용하여 샘플 시퀀스를 포함하는 새 Value 개체를 만듭니다. 시퀀스 길이는 스파스 행렬의 행 수입니다. 만든 시퀀스는 새 시퀀스입니다. ElementType 는 만든 Value 개체의 데이터 형식입니다. 현재 floatdouble 지원됩니다.

매개 변수

  • sampleShape: 값의 텐서 모양입니다. 스파스 입력의 경우 텐서 셰이프 선행 차원은 텐서 셰이프의 총 크기와 동일해야 합니다.
  • sequenceLength: 스파스 행렬의 행 수이기도 한 시퀀스 길이입니다.
  • colStarts: 배열은 배열에 각 열에 대한 인덱스를 보유합니다nonZeroValues.rowIndices
  • rowIndices: 배열에 있는 해당 요소의 행 인덱스를 포함하는 배열 nonZeroValues입니다.
  • nonZeroValues: 스파스 행렬의 모든 0이 아닌 값을 보유하는 배열입니다.
  • numNonZeroValues: 스파스 행렬의 0이 아닌 값 수입니다.
  • 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

CSC 스파스 입력 형식을 사용하여 샘플 시퀀스를 포함하는 새 Value 개체를 만듭니다. 시퀀스 길이는 스파스 행렬의 행 수입니다. sequenceStartFlag는 이 시퀀스가 이 메서드에 대한 이전 호출의 새 시퀀스인지 또는 이전 시퀀스의 연속인지를 지정합니다. ElementType 는 만든 Value 개체의 데이터 형식입니다. 현재 floatdouble 지원됩니다.

매개 변수

  • sampleShape: 값의 텐서 모양입니다. 스파스 입력의 경우 텐서 셰이프 선행 차원은 텐서 셰이프의 총 크기와 동일해야 합니다.
  • sequenceLength: 스파스 행렬의 행 수이기도 한 시퀀스 길이입니다.
  • colStarts: 배열은 배열에 각 열에 대한 인덱스를 보유합니다nonZeroValues.rowIndices
  • rowIndices: 배열에 있는 해당 요소의 행 인덱스를 포함하는 배열 nonZeroValues입니다.
  • nonZeroValues: 스파스 행렬의 모든 0이 아닌 값을 보유하는 배열입니다.
  • numNonZeroValues: 스파스 행렬의 0이 아닌 값 수입니다.
  • 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

CSC 스파스 입력 형식을 사용하여 샘플 시퀀스를 포함하는 새 Value 개체를 만듭니다. 시퀀스 길이는 스파스 행렬의 행 수입니다. 만든 시퀀스는 새 시퀀스입니다. ElementType 는 만든 Value 개체의 데이터 형식입니다. 현재 floatdouble 지원됩니다.

매개 변수

  • dimension: 원 핫 벡터의 차원 크기입니다.
  • sequenceLength: 스파스 행렬의 행 수이기도 한 시퀀스 길이입니다.
  • colStarts: 배열은 배열에 각 열에 대한 인덱스를 보유합니다nonZeroValues.rowIndices
  • rowIndices: 배열에 있는 해당 요소의 행 인덱스를 포함하는 배열 nonZeroValues입니다.
  • nonZeroValues: 스파스 행렬의 모든 0이 아닌 값을 보유하는 배열입니다.
  • numNonZeroValues: 스파스 행렬의 0이 아닌 값 수입니다.
  • 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

CSC 스파스 입력 형식을 사용하여 샘플 시퀀스를 포함하는 새 Value 개체를 만듭니다. 시퀀스 길이는 스파스 행렬의 행 수입니다. sequenceStartFlag는 이 시퀀스가 새 시퀀스인지 아니면 이전 시퀀스의 연속인지를 지정합니다. ElementType 는 만든 Value 개체의 데이터 형식입니다. 현재 floatdouble 지원됩니다.

매개 변수

  • dimension: 원 핫 벡터의 차원 크기입니다.
  • sequenceLength: 스파스 행렬의 행 수이기도 한 시퀀스 길이입니다.
  • colStarts: 배열은 배열에 각 열에 대한 인덱스를 보유하고 있습니다nonZeroValues.rowIndices
  • rowIndices: 배열에 있는 해당 요소의 행 인덱스를 포함하는 배열 nonZeroValues입니다.
  • nonZeroValues: 스파스 행렬의 모든 0이 아닌 값을 보유하는 배열입니다.
  • numNonZeroValues: 스파스 행렬의 0이 아닌 값 수입니다.
  • 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

NDArrayViews 컬렉션을 기반으로 새 Value 개체를 만듭니다. 각각의 시퀀스는 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

NDArrayViews 컬렉션을 기반으로 새 Value 개체를 만듭니다. sequenceStartFlags는 시퀀스가 새 시퀀스인지 아니면 이전 시퀀스의 연속인지를 지정합니다.

매개 변수

  • sampleShape: 생성되는 값의 텐서 모양입니다.
  • sequences: NDArrayView가 나타내는 시퀀스의 컬렉션입니다. 각 NDArrayView는 시퀀스를 나타냅니다.
  • sequenceStartFlags: 부울 값의 컬렉션입니다. 각 요소는 해당 시퀀스가 새 시퀀스 sequences 인지(예: true)인지 또는 이전 시퀀스의 연속(예 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 개체의 데이터 형식입니다. 현재 floatdouble 지원됩니다.

매개 변수

  • outputVariable: 이 값에서 로 데이터를 복사할 때 셰이프 및 동적 축을 sequences표시합니다.
  • sequences: 값에서 복사한 데이터를 저장하는 데 사용되는 출력 버퍼입니다.

void CNTK::Value::CopyVariableValueTo(const Variable& outputVariable, std::vector<std::vector<size_t>>& sequences

Value 개체에 저장된 데이터를 제공된 sequences버퍼에 복사합니다. 가 sequences 변 길이의 시퀀스 목록입니다. 외부 목록에 포함된 항목 수는 sequences 값의 시퀀스 수입니다. 외부 목록의 각 요소는 시퀀스를 나타냅니다. 표시되는 vector<size_t>각 시퀀스에는 다양한 샘플 수가 포함됩니다. 각 샘플은 1 핫 벡터에서 0이 아닌 값을 가리키는 인덱스로 표시됩니다. 1 핫 벡터의 차원 크기는 에 정의된 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 시 값에 저장된 시퀀스의 길이로 설정되고 colStartsrowIndices 열 시작 인덱스, 행 인덱스 및 nonZeroValues 0이 아닌 값의 데이터가 포함되며 numNonZeroValues Value에 this 포함된 0이 아닌 값의 수로 설정됩니다.

매개 변수

  • outputVariable: 이 값에서 버퍼로 데이터를 복사할 때 셰이프 및 동적 축을 표시합니다.
  • sequenceLength: 반환 시 값에 저장된 시퀀스의 길이로 설정됩니다.
  • colStarts: 반환할 때 행렬의 각 열에 있는 0이 nonZeorValues 아닌 첫 번째 요소에 대한 인덱스를 포함합니다.
  • rowIndices: 반환할 때 행렬의 0이 아닌 각 요소의 행 인덱스를 포함합니다.
  • nonZeroValues: 반환할 때 행렬의 0이 아닌 모든 요소의 값을 포함합니다.
  • numNonZeroValues: 반환할 때 행렬의 0이 아닌 요소 수를 반환합니다.

평가할 함수를 조작하는 도우미 함수


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

함수 그래프에서 'this' 함수의 기본으로 지정된 name 함수를 찾습니다. 이름이 같은 함수가 둘 이상 있으면 예외가 throw됩니다. true이면 nestedSearchInsideBlockFunction 블록 함수 내의 모든 함수도 검색됩니다.


std::vector<FunctionPtr> CNTK::Function::FindAllWithName(const std::wstring& name, bool nestedSearchInsideBlockFunction = false

함수 그래프에서 'this' 함수의 기본으로 지정된 name 함수 목록을 찾습니다. true이면 nestedSearchInsideBlockFunction 블록 함수 내의 모든 함수도 검색됩니다.


FunctionPtr CNTK::Combine(const std::vector<Variable>& operands, const std::wstring& name = L""

함수의 지정된 '피연산자' 목록의 출력을 결합하는 새 함수 인스턴스를 만듭니다. 새 '함수'의 '출력'은 지정된 각 '피연산자' 함수의 '출력'의 합합입니다. 예를 들어 분류 모델을 만들 때 일반적으로 CrossEntropy 손실 함수와 ClassificationError 함수는 "Combine"d가 될 수 있는 계산 그래프의 루트를 구성하여 2개의 출력으로 단일 함수를 만듭니다. 즉. 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별칭에 불과한 새 Function 인스턴스를 만듭니다.


위의 함수에서 사용하는 데이터 형식에 대한 자세한 내용은 CNTKLibrary.h 를 참조하세요.

예제

C++ 예제 CNTKLibraryCPPEvalCPUOnlyExamplesCNTKLibraryCPPEvalGPUExamples는 평가를 위해 CNTK 라이브러리를 사용하는 방법을 보여 줍니다. 또한 샘플에서는 여러 스레드를 사용하여 여러 평가를 병렬로 수행하고 스레드 간에 모델 매개 변수를 공유하는 방법을 보여 줍니다.