Felsök
Den här sidan samlar in några av de vanligaste fallgroparna som användare stöter på.
Under träningen av min binära klassificerare ser jag alltid en ClassificationError på 0 även från den första minibatch
ClassificationError fungerar bara korrekt för problem med flera klasser. Använd det här enkla receptet för binär klassificering
Även om modellen har tränats med en större uppsättning än utvärderingsuppsättningen får CNTK slut på minne under utvärderingen.
Träning av modellen har vanligtvis en minibatchSize
egenskap som anges i dess CNTK konfigurationsfil. När du utvärderar modellen med hjälp av CNTK.exe kontrollerar du att minibatchSize
är lämpligt. Om du snabbt vill ta reda på om den här egenskapen orsakar problemet anger du egenskapen till ett lågt värde (t.ex. minibatchSize=2
) i konfigurationsfilen för utvärderingskommandot. (cf. Issue #468)
Jag får SegFault på Linux med djupa nätverk (till exempel ResNet152).
Du kanske inte har tillräckligt med stackstorlek. BrainScript kräver mycket stack. Kör kommandot: ulimit -s 65536. Då anges stackstorleken till 64 MB.
Under utvärdering visas följande fel: På väg att utlösa undantaget "cuDNN-fel 8: CUDNN_STATUS_EXECUTION_FAILED ; GPU=0 ; hostname=haha; expr=err'
Ange egenskapen minibatchSize till ett mindre värde (t.ex. minibatchSize=2
).
Vad är fel när jag kompilerar CNTK med VS2013/VS2015?
Du måste uppgradera Visual Studio 2017. Se här: Konfigurera CNTK på Windows
Jag aktiverade bildläsare med zip-stöd och får felet "Plugin hittades inte: "Cntk.Deserializers.Image-.dll" (det gamla namnet "ImageReader.dll")" när du kör enhetstester för bildläsare eller försöker använda läsaren. Vad kan vara fel?
Kontrollera att du har installerat zlib och libzip korrekt.
Jag har precis hämtat och installerat CNTK binärt paket och vill köra ett jobb, men få konstiga fel, som saknade CUDA bibliotek.
Kontrollera noggrant vad du har i din PATH
. Särskilt om det är en delad utvecklingsdator. Detta beror ofta på äldre (tidigare) versioner av CNTK eller CNTK komponenter som kan nås via den konfigurerade PATH.
På Windows jag installerat en ny version av NVIDIA-drivrutinen och nu CNTK bygga misslyckas med fel som ..\Common\BestGpu.cpp(24): fatal error C1083: Cannot open include file: 'nvml.h': No such file or directory
Du har valt Alternativet Utför en ren installation i NVIDIA Driver Installer. Det resulterar i att GPU Deployment Kit (GDK) tas bort. Utför följande steg för att reparera systemet:
- Starta INSTALLATIONsprogrammet för CUDA
- Välj Anpassad (avancerad) installation
- Avmarkera alla installationsalternativ, förutom GPU Deployment Kit
- Detta väljer automatiskt alternativet Grafikdrivrutin – det förväntas. Låt den vara markerad
- Fortsätt med CUDA-installationen
- När CUDA-installationen har slutförts startar du installationen av önskad grafikdrivrutinsversion
- Välj Anpassad (avancerad) installation
- Kontrollera att Utför en ren installationINTE är markerat och fortsätt med installationen
Den första lästiden tar mycket lång tid eller så får jag något av följande undantag: "OS-anropet misslyckades eller åtgärden stöds inte på det här operativsystemet" eller "EXCEPTION occurred: CUSPARSE failure 1" eller en Segfault med AllocationFailureHandler i stacken.
En möjlig orsak här är det överdrivna minnestrycket som orsakas av att hela datauppsättningen läses in i minnet med standardfönstret (t.ex. obegränsat). Försök att köra arbetsbelastningen med ett explicit randomizationWindow
värde, vilket begränsar mängden indata som cachelagras i minnet. Det gör du genom att lägga till reader
följande parametrar i konfigurationsavsnittet (med ett 10000
exempel kan du välja valfritt värde som passar i minnet och säkerställa bra slumpmässighet):
randomize=true
randomizationWindow=10000 #(assuming that 10K samples << total available memory)
Jag får felmeddelanden när jag använder Eval C#-biblioteks Cntk.Eval.Wrapper.dll (gammalt namn EvalWrapper.dll) i Azure-webbappen på följande sätt: "Det gick inte att läsa in filen eller sammansättningen "vissa CNTK DLL:er", eller ett undantagsfel: System.Runtime.InteropServices.SEHException eller "InternalServiceFault: Extern komponent har genererat ett undantag".
Kontrollera först att alla DLL:er för CNTK beroenden distribueras till Azure-webbappen.
Sedan måste du ange att din Azure-webbapp ska använda 64-bitars virtuell dator. För att azure-webbappen ska kunna läsa in CNTK ohanterade DLL:er bör du ändra PATH-variabeln genom att lägga till följande kod i Application_Start()
metoden i global.asax
:
string pathValue = Environment.GetEnvironmentVariable("PATH");
string domainBaseDir = AppDomain.CurrentDomain.BaseDirectory;
string cntkPath = domainBaseDir + @"bin\";
pathValue += ";" + cntkPath;
Environment.SetEnvironmentVariable("PATH", pathValue);
Detaljerade steg finns på sidan Utvärdera en modell i en Azure WebApi.
Jag kan skapa mitt program med Cntk.Eval-.lib/dll, men fick ett undantag som liknar dem nedan när jag körde
Ett ohanterat undantag av typen Microsoft.MSR. CNTK. Extensibility.Managed.CNTKRuntimeException" inträffade i Cntk.Wrapper-.dll
Ytterligare information: configparameters: obligatorisk parameter saknas: unknown:modelPath
Möjliga orsaker är:
- Olika versionskonfigurationer (version eller felsökning) mellan ditt program och
Cntk.Eval-<VERSION>.lib/dll
. Om du skapar ditt program i versionen länkar du till versionsversionen avCntk.Eval-<VERSION>.dll
. Samma sak gäller för felsökningskonfigurationen. Det här felet inträffar vanligtvis för C++-programmet. - Olika GCC kompilatorversioner på Linux: Biblioteket
Cntk.Eval
i Linux har skapats med GCC 5.4. Om du använder en annan GCC version för ditt program kan ovanstående fel visas - ModelPath är felaktig. För närvarande måste modelPath anges som en fullständig sökväg. I EXEMPLET CSEvalClient kombineras den relativa sökvägen med den aktuella arbetskatalogen för att skapa den fullständiga sökvägen. Och CreateNetwork() måste skickas en sträng som innehåller attributet "modelPath=" som anger modellens filsökväg. För närvarande stöds inte mappad enhet för modelpath.
Jag får följande resultat med CNTKTextFormat-Reader -- VARNING: Uttömda alla indata som förväntas för den aktuella sekvensen när jag läser ett flyttalsvärde vid förskjutning
CTF-läsare kräver att Varje välformulerad linje måste sluta med antingen en "radmatning" \n eller "Vagnretur, radmatning" \r\n symboler (inklusive den sista raden i filen).