Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dostępny jest interfejs zarządzany do oceny modeli bez konieczności odczytywania danych ani plików danych. Ten interfejs jest implementowany w kodzie zarządzanym interfejsu EvalWrapper wiersza polecenia wewnątrz biblioteki. Ta biblioteka z kolei używa Evaldll biblioteki do przeprowadzania rzeczywistych ocen sieci (w natywnym języku C++).
Nazwa interfejsu zarządzanego (w języku C#) jest następująca:
public interface IEvaluateModelManaged<T> : IDisposable
Gdzie T jest typem elementu (float lub double)
Ten interfejs udostępnia następujące metody:
void Init(string config)
Ta metoda inicjuje aparat oceny przy użyciu określonego pliku konfiguracji. Wpisy z pliku konfiguracji są analizowane i przypisywane do aparatu oceny, jednak sieć nie jest tworzona wewnątrz tego wywołania. Ponadto ta metoda domyślnie numCPUThreads ustawi właściwość na 1wartość , chyba że plik konfiguracji zawiera inną wartość dla tej właściwości.
void CreateNetwork(string networkDescription)
Ta metoda kompiluje sieć z opisu sieci w pliku konfiguracji lub jeśli modelPath określono atrybut, ładuje model z dysku.
networkDescription: zawiera opis sieci za pośrednictwem wpisu NetworkBuilder atrybutu modelPath.
void CreateNetwork(string networkDescription, List<string> outputNodeNames)
Ta metoda kompiluje sieć z opisu sieci w pliku konfiguracji lub jeśli modelPath określono atrybut, ładuje model z dysku. Ponadto zastępuje listę węzłów wyjściowych z pliku konfiguracji, a lista przekazana jako argument. Dzięki temu obiekt wywołujący może pobierać wartości wyjściowe innych węzłów, takich jak te w ukrytych warstwach.
networkDescription: zawiera opis sieci za pośrednictwem wpisu NetworkBuilder atrybutu modelPath.outputNodeNames: lista węzłów, które mają być oznaczone jako dane wyjściowe, aby można je było ocenić.
void CreateNetwork(string networkDescription, int deviceId)
Ta metoda tworzy sieć z opisu sieci w pliku konfiguracji. Jest to tylko metoda wygody, która poprzedza deviceId=<deviceId>networkDescription tekst.
networkDescription: zawiera opis sieci za pośrednictwemNetworkBuilderwłaściwości lub atrybutumodelPath.deviceId: określa wartość identyfikatora urządzenia, która ma poprzedzać właściwość opisudeviceIdsieci.
void CreateNetwork(string networkDescription, int deviceId, List<string> outputNodeNames)
Ta metoda tworzy sieć z opisu sieci w pliku konfiguracji. Jest to tylko metoda wygody, która poprzedza deviceId=<deviceId>networkDescription tekst.
networkDescription: zawiera opis sieci za pośrednictwem wpisu NetworkBuilder atrybutu modelPath.deviceId: określa wartość identyfikatora urządzenia, która ma poprzedzać właściwość opisudeviceIdsieci.outputNodeNames: lista węzłów, które mają być oznaczone jako dane wyjściowe, aby można je było ocenić.
List<T> Evaluate(string outputKey, int outputSize)
Ta metoda ocenia sieć za pomocą pojedynczego przekazywania do przodu (bez danych wejściowych) i zwraca wartości skojarzone z określoną warstwą outputKey.
outputKey: nazwa warstwy, z których mają być zwracane wartości.outputSize: liczba wartości w warstwie wyjściowej.
Ta metoda jest przestarzała. Zamiast tego należy użyćList<T> Evaluate(string outputKey)metody .
List<T> Evaluate(string outputKey)
Ta metoda ocenia sieć za pomocą pojedynczego przekazywania do przodu (bez danych wejściowych) i zwraca wartości skojarzone z określoną warstwą outputKey.
outputKey: nazwa warstwy, z których mają być zwracane wartości. Wewnętrznie metoda określa wymagany rozmiar buforu danych dla danych wyjściowych i przydziela niezbędny bufor.
void Evaluate(Dictionary<string, List<T>> inputs, Dictionary<string, List<T>> outputs)
Ta metoda ocenia sieć przy użyciu podanych danych wejściowych i pobiera wiele warstw wyjściowych.
inputs: słownik mapuje nazwy warstw wejściowych na wartości, które mają być używane jako dane wejściowe w sieci.outputs: słownik mapowania nazw warstw wyjściowych na wartości do pobrania z sieci.
List<T> Evaluate(Dictionary<string, List<T>> inputs, string outputKey, int outputSize)
Ta metoda ocenia sieć z podanymi danymi wejściowymi i pobiera pojedynczą warstwę danych wyjściowych
inputs: słownik mapuje nazwy warstw wejściowych na wartości, które mają być używane jako dane wejściowe w sieci.outputKey: nazwa żądanej warstwy wyjściowej.outputSize: liczba wartości w warstwie wyjściowej.
Ta metoda jest przestarzała. Zamiast tego należy użyćList<T> Evaluate(Dictionary<string, List<T>> inputs, string outputKey)metody .
List<T> Evaluate(Dictionary<string, List<T>> inputs, string outputKey)
Ta metoda ocenia sieć z podanymi danymi wejściowymi i pobiera pojedynczą warstwę danych wyjściowych
inputs: słownik mapuje nazwy warstw wejściowych na wartości, które mają być używane jako dane wejściowe w sieci.outputKey: nazwa żądanej warstwy wyjściowej.
Wewnętrznie metoda określa wymagany rozmiar buforu danych dla danych wyjściowych i przydziela niezbędny bufor.
List<T> EvaluateRgbImage(Bitmap image, string outputKey)
Ta metoda ocenia obraz mapy bitowej i pobiera pojedynczą warstwę wyjściową
image: dane wejściowe obrazu mapy bitowej w formacie RGB. Rozmiar musi być już zmieniany, aby był zgodny z rozmiarem oczekiwanym przez sieć.outputKey: nazwa żądanej warstwy wyjściowej.
Metoda najpierw wyodrębnia wektor funkcji zawierający 3 kanały, a następnie przekaże go jako dane wejściowe do sieci. Przydziela również niezbędny bufor dla danych wyjściowych.
Dictionary<string, int> GetNodeDimensions(NodeGroup nodeGroup)
Ta metoda zwraca słownik elementów, a każdy element mapuje nazwę warstwy (klucz) na rozmiar wymiaru. Grupa węzłów jest definiowana NodeGroup za pomocą wyliczenia:
public enum class NodeGroup
{
nodeInput, // an input node
nodeOutput, // an output node
nodeSpecified
};
Istnieją dwie implementacje tego interfejsu dostępne dla zarządzanego klienta:
class IEvaluateModelManagedF : IEvaluateModelManaged<float> // Assumes data elements of type float
oraz
class IEvaluateModelManagedD : IEvaluateModelManaged<double> // Assumes data elements of type double
Przykład
Program CSEvalClient znajdujący się tutaj demonstruje użycie tego interfejsu oceny.