Udostępnij za pośrednictwem


interfejs API języka C++ biblioteki CNTK

Biblioteka CNTK języka C++ do oceny jest oparta na interfejsie API biblioteki CNTK. Poniższe metody służą do oceny modelu.


Ładowanie modelu


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

Ta metoda ładuje plik modelu i zwraca wskaźnik do funkcji reprezentującej załadowany model. Funkcja w CNTK określa graf obliczeniowy składający się z pierwotnych funkcji lub funkcji złożonych z zerowymi lub większą częścią argumentów wejściowych i co najmniej jednym wyjściem. Jest modelFile to ścieżka pliku modelu. Określa computeDevice urządzenie do uruchomienia oceny.


static FunctionPtr CNTK::Function::Load(char *modelBuffer, size_t modelBufferLength, const DeviceDescriptor& computeDevice = DeviceDescriptor::UseDefaultDevice()

Ta metoda ładuje model z buforu pamięci i zwraca wskaźnik do funkcji reprezentującej załadowany model. Wskazuje modelBuffer bufor zawierający zawartość modelu serializowanego, a modelBufferLength wartość to długość buforu. Określa computeDevice urządzenie do uruchomienia oceny.


Ocena funkcji


void CNTK::Function::Evaluate(const std::unordered_map<Variable, ValuePtr>& arguments, std::unordered_map<Variable, ValuePtr>& outputs, const DeviceDescriptor& computeDevice = DeviceDescriptor::UseDefaultDevice()

Ta metoda rozpoczyna ocenę funkcji reprezentującej this model z określonymi parametrami. Zawiera arguments wartości wszystkich zmiennych wejściowych wymaganych do oceny i outputs przechowują wartości zmiennych wyjściowych. Magazyn wartości wyjściowych może być wstępnie przydzielony przez obiekt wywołujący lub przez system, jeśli mapowanie ValuePtr jest przekazywane jako null przez obiekt wywołujący. Określa computeDevice urządzenie do uruchomienia oceny.


Tworzenie wartości przy użyciu gęstych danych wejściowych


template <typename ElementType> static ValuePtr CNTK::Value::CreateBatch(const NDShape& sampleShape, const std::vector<ElementType>& batchData, const DeviceDescriptor& device, bool readOnly = false

Tworzy nowy obiekt Value zawierający partię przykładów. Liczba próbek w partii jest liczbą elementów batchData podzielonych przez rozmiar sampleShape (błąd środowiska uruchomieniowego występuje, jeśli reszta nie jest równa zero). Utworzony obiekt Value zawiera kopię określonych danych w pliku batchData. ElementType to typ danych utworzonego obiektu Value. float Obecnie i double są obsługiwane.

Parametry:

  • sampleShape: kształt tensor obiektu Value.
  • batchData: dane, które mają być zawarte w obiekcie Value.
  • device: na którym urządzeniu powinien zostać utworzony obiekt Value.
  • readOnly: obiekt Value jest tylko do odczytu, jeśli ta flaga to true.

template <typename ElementType> static ValuePtr CNTK::Value::CreateSequence(const NDShape& sampleShape, const std::vector<ElementType>& sequenceData, const DeviceDescriptor& device, bool readOnly = false

Tworzy nowy obiekt Value zawierający sekwencję przykładów. Utworzony obiekt Value zawiera kopię określonych danych w pliku sequenceData. Długość sekwencji to liczba elementów sequenceData podzielonych przez rozmiar sampleShape (błąd środowiska uruchomieniowego występuje, jeśli pozostała część nie jest równa zero). Utworzona sekwencja jest nową sekwencją. ElementType to typ danych utworzonego obiektu Value. float Obecnie i double są obsługiwane.

Parametry:

  • sampleShape: kształt tensoru wartości.
  • sequenceData: dane, które mają być zawarte w wartości.
  • device: na którym urządzeniu powinien zostać utworzony obiekt Value.
  • readOnly: wartość jest tylko do odczytu, jeśli ta flaga to 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

Tworzy nowy obiekt Value zawierający sekwencję przykładów. Utworzony obiekt Value zawiera kopię określonych danych w pliku sequenceData. Długość sekwencji to liczba elementów sequenceData podzielonych przez rozmiar sampleShape (błąd środowiska uruchomieniowego występuje, jeśli pozostała część nie jest równa zero). SekwencjaStartFlag określa, czy ta sekwencja jest nową sekwencją, czy kontynuacją poprzedniej sekwencji w tym samym indeksie na liście sekwencji z poprzedniego wywołania do tej metody. ElementType to typ danych utworzonego obiektu Value. float Obecnie i double są obsługiwane.

Parametry:

  • sampleShape: kształt tensoru wartości.
  • sequenceData: dane, które mają być zawarte w wartości.
  • sequenceStartFlag: true wskazuje, że jest to nowa sekwencja. false oznacza kontynuację poprzedniej sekwencji.
  • device: na którym urządzeniu powinien zostać utworzony obiekt Value.
  • readOnly: wartość jest tylko do odczytu, jeśli ta flaga to 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

Tworzy nowy obiekt Value zawierający partię sekwencji o zmiennej długości. Utworzony obiekt Value zawiera kopię określonych danych w pliku batchOfSequences. Liczba sekwencji w partii to rozmiar batchOfSequences. Długość każdej sekwencji to liczba elementów w odpowiedniej sekwencji batchOfSequences podzielonej przez rozmiar sampleShape (błąd środowiska uruchomieniowego występuje, jeśli reszta nie jest równa zero). Każda sekwencja w programie batchOfSequences jest nową sekwencją. ElementType to typ danych utworzonego obiektu Value. float Obecnie i double są obsługiwane.

Parametry:

  • sampleShape: kształt tensoru wartości.
  • batchOfSequences: dane, które mają być przechowywane w wartości. Zewnętrzny vector reprezentuje kolekcję sekwencji o zmiennej długości, a wewnętrzna vector reprezentuje każdą pojedynczą sekwencję.
  • device: na którym urządzeniu ma zostać utworzona wartość.
  • readOnly: wartość jest tylko do odczytu, jeśli ta flaga to 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

Tworzy nowy obiekt Value zawierający partię sekwencji o zmiennej długości. Utworzony obiekt Value zawiera kopię określonych danych w pliku batchOfSequences. Liczba sekwencji w partii to rozmiar batchOfSequences. Długość każdej sekwencji to liczba elementów w odpowiedniej sekwencji batchOfSequences podzielonej przez rozmiar sampleShape (błąd środowiska uruchomieniowego występuje, jeśli reszta nie jest równa zero). ElementType to typ danych utworzonego obiektu Value. float Obecnie i double są obsługiwane.

Parametry:

  • sampleShape: kształt tensoru wartości.
  • batchOfSequences: dane, które mają być przechowywane w wartości. Zewnętrzny vector reprezentuje kolekcję sekwencji o zmiennej długości, a wewnętrzna vector reprezentuje każdą pojedynczą sekwencję.
  • sequenceStartFlags: kolekcja wartości logicznych. Każdy element reprezentuje, czy odpowiednia sekwencja jest batchOfSequences nową sekwencją (w przypadku true) lub kontynuacją poprzedniej sekwencji (w przypadku false).
  • device: na którym urządzeniu ma zostać utworzona wartość.
  • readOnly: wartość jest tylko do odczytu, jeśli ta flaga to true.

Tworzenie wartości przy użyciu danych wejściowych z jednym gorącym wektorem


template <typename ElementType> static ValuePtr CNTK::Value::CreateBatch(size_t dimension, const std::vector<size_t>& batchData, const DeviceDescriptor& device, bool readOnly = false)

Tworzy nowy obiekt Value zawierający partię przykładów. Każda próbka jest reprezentowana przez wartość indeksu wskazującą wartość niezerową w wektorze jednego gorącego dimension elementów. Liczba próbek w partii to liczba elementów w batchDataelemecie . ElementType to typ danych utworzonego obiektu Value. float Obecnie i double są obsługiwane.

Parametry:

  • dimension: rozmiar wymiaru wektora jedno-gorącego.
  • batchData: kolekcja indeksów reprezentujących partię przykładów.
  • device: na którym urządzeniu powinien zostać utworzony obiekt Value.
  • readOnly: wartość jest tylko do odczytu, jeśli ta flaga to true.

template <typename ElementType> static ValuePtr CNTK::Value::CreateSequence(size_t dimension, const std::vector<size_t>& sequenceData, const DeviceDescriptor& device, bool readOnly = false)

Tworzy nowy obiekt Value zawierający sekwencję przykładów. Każda próbka jest reprezentowana przez wartość indeksu wskazującą wartość niezerową w wektorze jednego gorącego dimension elementów. Długość sekwencji to liczba elementów w sequenceDataelemecie . Każda sekwencja jest nową sekwencją. ElementType to typ danych utworzonego obiektu Value. float Obecnie i double są obsługiwane.

Parametry:

  • dimension: rozmiar wymiaru wektora jedno-gorącego.
  • sequenceData: kolekcja indeksów reprezentujących sekwencję przykładów.
  • device: na którym urządzeniu powinien zostać utworzony obiekt Value.
  • readOnly: wartość jest tylko do odczytu, jeśli ta flaga to 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)

Tworzy nowy obiekt Value zawierający sekwencję próbek. Każda próbka jest reprezentowana przez wartość indeksu, która wskazuje wartość niezerową w wektorze z gorącą jedyną wartością dimension elementów. SeqStartFlag określa, czy ta sekwencja jest nową sekwencją lub kontynuacją poprzedniej sekwencji w tym samym indeksie na liście sekwencji z poprzedniego wywołania tej metody. Długość sekwencji to liczba elementów w elemecie sequenceData. ElementType to typ danych utworzonego obiektu Value. float Obecnie i double są obsługiwane.

Parametry:

  • dimension: rozmiar wymiaru wektora jednorazowego.
  • sequenceData: kolekcja indeksów reprezentujących sekwencję przykładów.
  • sequenceStartFlag: true wskazuje, że jest to nowa sekwencja. false oznacza kontynuację poprzedniej sekwencji.
  • device: na którym urządzeniu należy utworzyć obiekt Value.
  • readOnly: wartość jest tylko do odczytu, jeśli ta flaga to 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

Tworzy nowy obiekt Value zawierający partię sekwencji o zmiennej długości. Każda próbka jest reprezentowana przez wartość indeksu, która wskazuje wartość niezerową w wektorze z gorącą jedyną wartością dimension elementów. Liczba sekwencji to liczba elementów na zewnętrznej liście .batchOfSequences Długość każdej sekwencji to liczba elementów odpowiedniej sekwencji na wewnętrznej liście .batchOfSequences Każda sekwencja w programie batchOfSequences jest nową sekwencją. ElementType to typ danych utworzonego obiektu Value. float Obecnie i double są obsługiwane.

Parametry:

  • dimension: rozmiar wymiaru wektora jednorazowego.
  • batchOfSequences: kolekcja indeksów reprezentujących sekwencje przykładów. Zewnętrzna vector reprezentuje kolekcję sekwencji o zmiennej długości, a wewnętrzna vector reprezentuje każdą pojedynczą sekwencję.
  • device: na którym urządzeniu należy utworzyć obiekt Value.
  • readOnly: wartość jest tylko do odczytu, jeśli ta flaga to 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

Tworzy nowy obiekt Value zawierający partię sekwencji o zmiennej długości. Każda próbka jest reprezentowana przez wartość indeksu, która wskazuje wartość niezerową w wektorze z gorącą jedyną wartością dimension elementów. Liczba sekwencji to liczba elementów na zewnętrznej liście .batchOfSequences Długość każdej sekwencji to liczba elementów odpowiedniej sekwencji na wewnętrznej liście .batchOfSequences ElementType to typ danych utworzonego obiektu Value. float Obecnie i double są obsługiwane.

Parametry:

  • dimension: rozmiar wymiaru wektora jednorazowego.
  • batchOfSequences: kolekcja indeksów reprezentujących sekwencje przykładów. Zewnętrzna vector reprezentuje kolekcję sekwencji o zmiennej długości, a wewnętrzna vector reprezentuje każdą pojedynczą sekwencję.
  • sequenceStartFlags: kolekcja wartości logicznych. Każdy element reprezentuje, czy odpowiednia sekwencja w batchOfSequences programie jest nową sekwencją (w przypadku ), trueczy kontynuacją poprzedniej sekwencji (w przypadku elementu false).
  • device: na którym urządzeniu należy utworzyć obiekt Value.
  • readOnly: wartość jest tylko do odczytu, jeśli ta flaga to true.

Tworzenie wartości przy użyciu rzadkich danych wejściowych CSC

Obecnie obsługiwany jest skompresowany format kolumny rozrzedzonej (CSC). Format CSC przechowuje macierz w formacie głównym kolumny, a tablica zawierająca indeksy kolumn jest kompresowana. Macierz w formacie CSC jest reprezentowana przez następujące parametry:

  • nonZeroValues: tablica danych, która zawiera wszystkie wartości niezerowe macierzy w formacie głównym kolumny.
  • rowIndices: tablica zawierająca indeksy wierszy odpowiednich elementów w tablicy nonZeroValues.
  • colStarts: tablica zawierająca indeksy w tablicach rowIndices i nonZeroValues.

Szczegółowy opis formatu CSC można znaleźć tutaj.


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

Tworzy nowy obiekt Value zawierający sekwencję próbek przy użyciu formatu wejściowego CSC rozrzedzeniowego. Długość sekwencji to liczba wierszy macierzy rozrzedowej. Utworzona sekwencja jest nową sekwencją. ElementType to typ danych utworzonego obiektu Value. float Obecnie i double są obsługiwane.

Parametry:

  • sampleShape: kształt tensora wartości. W przypadku rzadkich danych wejściowych wymiarowość wiodącego kształtu tensora musi być taka sama jak całkowity rozmiar kształtu tensora.
  • sequenceLength: długość sekwencji, która jest również liczbą wierszy w macierzy rozrzedowej.
  • colStarts: tablica zawiera indeksy dla każdej kolumny w tablicach rowIndices i nonZeroValues.
  • rowIndices: tablica zawierająca indeksy wierszy odpowiednich elementów w tablicy nonZeroValues.
  • nonZeroValues: tablica, która zawiera wszystkie wartości inne niżzerowe w macierzy rozrzedzeniu.
  • numNonZeroValues: liczba wartości niezerowych w macierzy rozrzedzanej.
  • device: na którym urządzeniu należy utworzyć obiekt Value.
  • readOnly: wartość jest tylko do odczytu, jeśli ta flaga to 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

Tworzy nowy obiekt Value zawierający sekwencję próbek przy użyciu formatu wejściowego CSC rozrzedzeniowego. Długość sekwencji to liczba wierszy macierzy rozrzedowej. SekwencjaStartFlag określa, czy ta sekwencja jest nową sekwencją, czy kontynuacją poprzedniej sekwencji z poprzedniego wywołania tej metody. ElementType to typ danych utworzonego obiektu Value. float Obecnie i double są obsługiwane.

Parametry:

  • sampleShape: kształt tensora wartości. W przypadku rzadkich danych wejściowych wymiarowość wiodącego kształtu tensora musi być taka sama jak całkowity rozmiar kształtu tensora.
  • sequenceLength: długość sekwencji, która jest również liczbą wierszy w macierzy rozrzedowej.
  • colStarts: tablica zawiera indeksy dla każdej kolumny w tablicach rowIndices i nonZeroValues.
  • rowIndices: tablica zawierająca indeksy wierszy odpowiednich elementów w tablicy nonZeroValues.
  • nonZeroValues: tablica, która zawiera wszystkie wartości inne niżzerowe w macierzy rozrzedzeniu.
  • numNonZeroValues: liczba wartości niezerowych w macierzy rozrzedzanej.
  • sequenceStartFlag: true wskazuje, że jest to nowa sekwencja. false oznacza kontynuację poprzedniej sekwencji.
  • device: na którym urządzeniu należy utworzyć obiekt Value.
  • readOnly: wartość jest tylko do odczytu, jeśli ta flaga to 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

Tworzy nowy obiekt Value zawierający sekwencję próbek przy użyciu formatu wejściowego CSC rozrzedzeniowego. Długość sekwencji to liczba wierszy macierzy rozrzedowej. Utworzona sekwencja jest nową sekwencją. ElementType to typ danych utworzonego obiektu Value. float Obecnie i double są obsługiwane.

Parametry:

  • dimension: rozmiar wymiaru wektora jednorazowego.
  • sequenceLength: długość sekwencji, która jest również liczbą wierszy w macierzy rozrzedowej.
  • colStarts: tablica zawiera indeksy dla każdej kolumny w tablicach rowIndices i nonZeroValues.
  • rowIndices: tablica zawierająca indeksy wierszy odpowiednich elementów w tablicy nonZeroValues.
  • nonZeroValues: tablica, która zawiera wszystkie wartości inne niżzerowe w macierzy rozrzedzeniu.
  • numNonZeroValues: liczba wartości niezerowych w macierzy rozrzedzanej.
  • device: na którym urządzeniu należy utworzyć obiekt Value.
  • readOnly: wartość jest tylko do odczytu, jeśli ta flaga to 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

Tworzy nowy obiekt Value zawierający sekwencję próbek przy użyciu formatu wejściowego CSC rozrzedzeniowego. Długość sekwencji to liczba wierszy macierzy rozrzedowej. SekwencjaStartFlag określa, czy ta sekwencja jest nową sekwencją, czy kontynuacją poprzedniej sekwencji. ElementType to typ danych utworzonego obiektu Value. float Obecnie i double są obsługiwane.

Parametry:

  • dimension: rozmiar wymiaru wektora jednorazowego.
  • sequenceLength: długość sekwencji, która jest również liczbą wierszy w macierzy rozrzedowej.
  • colStarts: tablica zawiera indeksy dla każdej kolumny w tablicach rowIndices i nonZeroValues.
  • rowIndices: tablica zawierająca indeksy wierszy odpowiednich elementów w tablicy nonZeroValues.
  • nonZeroValues: tablica, która zawiera wszystkie wartości inne niżzerowe w macierzy rozrzedzeniu.
  • numNonZeroValues: liczba wartości niezerowych w macierzy rozrzedzanej.
  • sequenceStartFlag: true wskazuje, że jest to nowa sekwencja. false oznacza kontynuację poprzedniej sekwencji.
  • device: na którym urządzeniu należy utworzyć obiekt Value.
  • readOnly: wartość jest tylko do odczytu, jeśli ta flaga to true.

Tworzenie wartości na podstawie elementu NDArrayView


static ValuePtr CNTK::Value::Create(const NDShape& sampleShape, const std::vector<NDArrayViewPtr>& sequences, const DeviceDescriptor& device, bool readOnly = false

Tworzy nowy obiekt Value na podstawie kolekcji obiektów NDArrayViews. Każda sekwencja w programie sequences jest nową sekwencją.

Parametry:

  • sampleShape: kształt tensora tworzonej wartości.
  • sequences: kolekcja sekwencji reprezentowanych przez element NDArrayView. Każdy element NDArrayView reprezentuje sekwencję.
  • device: na którym urządzeniu należy utworzyć obiekt Value.
  • readOnly: wartość jest tylko do odczytu, jeśli ta flaga to 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

Tworzy nowy obiekt Value na podstawie kolekcji obiektów NDArrayViews. SekwencjaStartFlags określa, czy sekwencja jest nową sekwencją, czy kontynuacją poprzedniej sekwencji.

Parametry:

  • sampleShape: kształt tensora tworzonej wartości.
  • sequences: kolekcja sekwencji reprezentowanych przez element NDArrayView. Każdy element NDArrayView reprezentuje sekwencję.
  • sequenceStartFlags: kolekcja wartości logicznych. Każdy element reprezentuje, czy odpowiednia sekwencja w sequences programie jest nową sekwencją (w przypadku ), trueczy kontynuacją poprzedniej sekwencji (w przypadku elementu false).
  • device: na którym urządzeniu należy utworzyć obiekt Value.
  • readOnly: wartość jest tylko do odczytu, jeśli ta flaga to true.

Kopiowanie danych z obiektu Value


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

Kopiuje dane przechowywane w wartości do buforu dostarczonego przez sequencesprogram . Jest sequences to lista sekwencji o zmiennej długości. Liczba elementów znajdujących się na zewnętrznej liście sequences to liczba sekwencji w wartości. Każdy element listy zewnętrznej reprezentuje sekwencję. Każda sekwencja reprezentowana przez vector<ElementType>element zawiera zmienną liczbę próbek. Każda próbka składa się ze stałej liczby elementów o typie ElementType. Liczba elementów próbki jest określana przez kształt outputVariable. Kształt zmiennej powinien odpowiadać kształtowi wartości. ElementType to typ danych utworzonego obiektu Value. float Obecnie i double są obsługiwane.

Parametry:

  • outputVariable: określa kształt i osie dynamiczne podczas kopiowania danych z tej wartości do .sequences
  • sequences: bufor wyjściowy używany do przechowywania danych skopiowanych z wartości.

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

Kopiuje dane przechowywane w obiekcie Value do buforu dostarczonego przez sequencesprogram . Jest sequences to lista sekwencji o zmiennej długości. Liczba elementów znajdujących się na zewnętrznej liście sequences to liczba sekwencji w wartości. Każdy element listy zewnętrznej reprezentuje sekwencję. Każda sekwencja reprezentowana przez vector<size_t>element zawiera zmienną liczbę próbek. Każda próbka jest reprezentowana przez indeks wskazujący wartość niezerową w wektorze z gorącą jedyną wartością. Rozmiar wymiaru wektora jednorazowego powinien być zgodny z rozmiarem zdefiniowanym w obiekcie outputVariable.

Parametry:

  • outputVariable: określa kształt i osie dynamiczne podczas kopiowania danych z tej wartości do .sequences
  • sequences: bufor wyjściowy używany do przechowywania danych skopiowanych z wartości.

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)

Skopiuj dane przechowywane w obiekcie Value do buforów reprezentujących sekwencję w formacie rozrzedzeniowym CSC. W razie potrzeby rozmiar bufora sekwencji zostanie zmieniony. Wartość powinna mieć ten sam kształt tensor co outputVariable. Po powrocie sequenceLength parametr jest ustawiany na długość sekwencji przechowywanej w wartościach i colStarts, rowIndices i nonZeroValues zawiera dane indeksów początkowych kolumn, indeksów wierszy i wartości innych niż zero, a numNonZeroValues wartość jest ustawiona na liczbę wartości innych niż zero zawartych w kolumnie this Value.

Parametry:

  • outputVariable: określa kształt i osie dynamiczne podczas kopiowania danych z tej wartości do buforów.
  • sequenceLength: po powrocie jest ustawiona na długość sekwencji przechowywanej w wartości.
  • colStarts: po powrocie zawiera indeksy do nonZeorValues pierwszego elementu niezerowego każdej kolumny macierzy.
  • rowIndices: po powrocie zawiera indeksy wierszy każdego elementu niezerowego macierzy.
  • nonZeroValues: po powrocie zawiera wartości wszystkich elementów niezerowych macierzy.
  • numNonZeroValues: po powrocie zwraca liczbę niezerowych elementów macierzy.

Funkcje pomocnicze do manipulowania funkcją do oceny


FunctionPtr CNTK::Function::Clone(ParameterCloningMethod parameterCloneMethod = ParameterCloningMethod::Clone, const std::unordered_map<Variable, Variable>& replacements = {}) const

W celu oceny ta metoda jest wywoływana w celu utworzenia sklonowanej funkcji, która może być następnie używana przez inny wątek do oceny tego samego modelu. W tym celu parameterCloneMethod parametr powinien być ustawiony na wartość ParameterCloningMethod::Sharedomyślną . Parametr replacements określa wszelkie zamiany zmiennych, które są stosowane w sklonowanym wystąpieniu funkcji, i zwykle nie jest wymagane do oceny.


FunctionPtr CNTK::Function::FindByName(const std::wstring& name, bool nestedSearchInsideBlockFunction = false

Znajdź funkcję z daną name wartością na grafie funkcji bazowej "this" Function. Jeśli istnieje więcej niż jedna funkcja o tej samej nazwie, zgłaszany jest wyjątek. Jeśli nestedSearchInsideBlockFunction wartość ma wartość true, przeszukiwane są również wszystkie funkcje wewnątrz funkcji blokowych.


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

Znajdź listę funkcji z wartością name podaną na grafie funkcji bazowej "this". Jeśli nestedSearchInsideBlockFunction wartość ma wartość true, przeszukiwane są również wszystkie funkcje wewnątrz funkcji blokowych.


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

Utwórz nowe wystąpienie funkcji, które łączy dane wyjściowe określonej listy "operandów" funkcji. "Dane wyjściowe" nowej funkcji są częścią "Outputs" każdej z określonych funkcji "operandów". Na przykład podczas tworzenia modelu klasyfikacji zazwyczaj funkcja utraty CrossEntropy i funkcja ClassificationError składają się z korzeni grafu obliczeniowego, który może mieć wartość "Combine"d w celu utworzenia pojedynczej funkcji z 2 danymi wyjściowymi; Viz. Dane wyjściowe funkcji CrossEntropy loss i ClassificationError.


FunctionPtr CNTK::AsComposite(const FunctionPtr& rootFunction, const std::wstring& name = L""

Tworzy funkcję złożoną, która ma określony rootFunction element główny. Złożony oznacza funkcję wyższego poziomu hermetyzując cały graf funkcji będących podstawą określonego elementu rootFunction.


FunctionPtr CNTK::Alias(const Variable& operand, const std::wstring& name = L""

Tworzy nowe wystąpienie funkcji, które jest tylko aliasem określonego operandelementu .


Szczegółowe informacje o typach danych używanych przez powyższe funkcje można znaleźć w pliku CNTKLibrary.h .

Przykłady

Przykłady języka C++ CNTKLibraryCPPEvalCPUOnlyExamples i CNTKLibraryCPPEvalGPUExamples pokazują użycie biblioteki CNTK do oceny. W przykładach pokazano również, jak wykonać wiele ocen równolegle przy użyciu wielu wątków i współużytkować parametry modelu między wątkami.