Dela via


Utvärdering av EvalDLL på Windows

EvalDll-biblioteket på Windows tillhandahålls både som C++ och C#-bibliotek. Ett NuGet-paket finns också på nuget.org. Observera att Visual Studio uppdatering 3 från 2015 krävs och att målplattformen i projektegenskapen ska vara X64.

Använda EvalDll-biblioteket

EvalDll-biblioteket möjliggör programmeringsmodellutvärdering på CPU (GPU stöds inte).
Användningsmönstret för den här DLL:en är följande:

  1. Cntk.Eval-<VERSION>.lib Länka importbiblioteket till programmet. Se till att du använder rätt filnamn – se början av den här artikeln.
  2. Ta med utvärderingshuvudfilen "Eval.h"
  3. Hämta en instans av utvärderingsmotorn som är specifik för modellens datatyp (float eller double).
  4. Läs in modellen (eller skapa nätverket) i utvärderingsmotorn.
  5. Utvärdera några indata mot modellen och hämta motsvarande utdata.
  6. Ta bort modellen när du är klar.

Mer information om C++-API:et som tillhandahålls av EvalDll finns på sidan EvalDll C++ API .

CPPEvalClient-programmet som finns i mappen Examples/Evaluation/LegacyEvalDll/CPPEvalClient visar användningen av det här utvärderingsgränssnittet. Mer information om hur du skapar och kör exempel finns på sidan EvalDll-exempel .

Använda C#-biblioteket för EvalDll

CNTK innehåller en hanterad (.Net) biblioteksomslutning med namnet Cntk.Eval.Wrapper. Det här biblioteket omsluter det inbyggda EvalDll-biblioteket och visar ett hanterat gränssnitt. Det här gränssnittet ger samma funktioner som det inbyggda gränssnittet, med tillägg av vissa bekvämlighetsmetoder. På samma sätt som den ursprungliga motsvarigheten kan det här biblioteket bara utföra utvärderingar med processorn (ingen GPU används). Biblioteket är skrivet i CLI/C++ och utgör därmed bryggan mellan .Net (t.ex. C#) och den interna C++-sidan.

Mer information om det hanterade API:et som tillhandahålls av EvalWrapper.DLL finns på sidan EvalDll Hanterat API .

Användningsmönstret för den hanterade adaptern är enkelt:

using Microsoft.MSR.CNTK.Extensibility.Managed;
...
try
{
    using (var model = new IEvaluateModelManagedF())
    {
        // Load model
        model.CreateNetwork(...);
        model.Evaluate(...);
    }
}
catch (CNTKException ex)
{
...
}
catch (Exception ex)
{
...
}

Det finns flera exempel på hur du utför en programmatisk CNTK modellutvärdering i C# i CSEvalClient-projektet. Mer information om hur du skapar och kör exempel finns på sidan EvalDll-exempel .

NuGet-paket

Det finns för närvarande ett NuGet-paket på nuget.org (sök efter CNTK) som tillhandahåller både inbyggda och hanterade versioner för felsökning och version för CNTK utvärderingsbibliotek (PROCESSOR endast med MKL). Med NuGet är det möjligt att helt enkelt lägga till CNTK Eval NuGet i ett .Net- eller Win32-projekt och anropa API:erna. Mer information om hur du kommer igång med CNTK och NuGet finns på sidan NuGet-paket.

Om du inte vill använda NuGet-paketet kan du lägga till Cntk.Eval.Wrapper-<VERSION>.dll som referens till projektet. Kontrollera i det här fallet att sökvägen till Cntk.Eval.Wrapper DLL:en och dess beroenden nedan ingår i sökvägen för DLL:er för ditt program.

Skicka EvalDll-bibliotek med ditt Windows-program

EvalDll kräver att Visual C++ Redistributable Package för Visual Studio 2015 installeras på det system där programmet ska köras. Och målplattformen i projektegenskapen ska vara X64.

den här sidan beskrivs hur CNTK binära filer namnges.

Om du äger ett program som använder EvalDll-biblioteket måste du distribuera dessa DLL:er med ditt program:

  • Cntk.Eval-<VERSION>.dll
  • Cntk.Eval.Wrapper-<VERSION>.dll
  • Cntk.Math-<VERSION>.dll
  • libiomp5md.dll
  • mklml.dll

Alla dessa DLL:er finns i CNTK binär version, se sidan CNTK versioner.