Problemen oplossen
Op deze pagina worden enkele van de meest voorkomende valkuilen verzameld die gebruikers tegenkomen.
Tijdens de training van mijn binaire classificatie zie ik altijd een ClassificationError van 0, zelfs vanaf de eerste minibatch
ClassificationError werkt alleen correct voor problemen met meerdere klassen. Gebruik dit eenvoudige recept voor binaire classificatie
Hoewel het model is getraind met een grotere set dan de evaluatieset, CNTK onvoldoende geheugen tijdens de evaluatie.
Voor het trainen van het model is meestal een minibatchSize
eigenschap ingesteld in het CNTK configuratiebestand. Wanneer u het model evalueert met behulp van CNTK.exe, moet u ervoor zorgen dat het minibatchSize
geschikt is. Als u snel wilt bepalen of deze eigenschap het probleem veroorzaakt, stelt u de eigenschap in op een lage waarde (bijvoorbeeld minibatchSize=2
) in het configuratiebestand voor de evaluatieopdracht. (cf. Probleem 468)
Ik krijg SegFault op Linux met diepe netwerken (zoals ResNet152).
Mogelijk hebt u niet voldoende stapelgrootte. BrainScript vereist veel stack. Voer de opdracht uit: ulimit -s 65536. Hiermee stelt u de stackgrootte in op 64 MB.
Tijdens de evaluatie wordt de volgende fout weergegeven: Over het genereren van uitzondering 'cuDNN-fout 8: CUDNN_STATUS_EXECUTION_FAILED ; GPU=0; hostnaam=haha; expr=err'
Stel de eigenschap minibatchSize in op een kleinere waarde (bijvoorbeeld minibatchSize=2
).
Wanneer ik CNTK compileer met VS2013/VS2015, zie ik een compilerfout. Wat is er mis?
U moet Visual Studio 2017 upgraden. Zie hier: CNTK instellen op Windows
Ik heb Afbeeldingslezer ingeschakeld met zip-ondersteuning en krijg 'Invoegtoepassing niet gevonden: 'Cntk.Deserializers.Image-.dll' (oude naam 'ImageReader.dll')' bij het uitvoeren van eenheidstests voor afbeeldingslezers of het gebruik van de lezer. Wat kan er mis zijn?
Controleer of u zlib en libzip correct hebt geïnstalleerd.
Ik heb zojuist CNTK binair pakket gedownload en geïnstalleerd en wil een taak uitvoeren, maar krijg rare fouten, zoals ontbrekende CUDA-bibliotheken.
Controleer zorgvuldig wat je in je PATH
hebt. Vooral als het een gedeelde ontwikkelcomputer is. Dit wordt vaak veroorzaakt door oudere (vorige) versies van CNTK of CNTK onderdelen die bereikbaar zijn via het geconfigureerde PAD.
Op Windows ik een nieuwe versie van het NVIDIA-stuurprogramma heb geïnstalleerd en nu CNTK build mislukt met de fouten, zoals ..\Common\BestGpu.cpp(24): fatal error C1083: Cannot open include file: 'nvml.h': No such file or directory
U hebt een schone installatieoptie geselecteerd in het NVIDIA-stuurprogramma-installatieprogramma. Dit resulteert in het verwijderen van GPU Deployment Kit (GDK). Voer de volgende stappen uit om het systeem te herstellen:
- CUDA-installatieprogramma starten
- Aangepaste (geavanceerde) installatie selecteren
- Alle installatieopties opheffen, met uitzondering van GPU Deployment Kit
- Hiermee wordt automatisch de optie Grafisch stuurprogramma geselecteerd. Dit wordt verwacht. Laat het geselecteerd
- Doorgaan met CUDA-installatie
- Nadat de CUDA-installatie is geslaagd, start u de installatie van de gewenste grafische stuurprogrammaversie
- Aangepaste (geavanceerde) installatie selecteren
- Zorg ervoor dat een schone installatieniet is geselecteerd en ga verder met de installatie
De initiële leestijd duurt erg lang of ik krijg een van de volgende uitzonderingen: 'Os call failed or operation not supported on this OS' of 'EXCEPTION occurred: CUSPARSE failure 1' of a Segfault with AllocationFailureHandler in the stack.
Een mogelijke reden hier is de overmatige geheugenbelasting die wordt veroorzaakt door het laden van de hele gegevensset in het geheugen met het standaardvenster (dat wil bijvoorbeeld onbeperkt) randomisatievenster. Probeer uw workload uit te voeren met een expliciete randomizationWindow
waarde, waardoor de hoeveelheid invoergegevens in de cache in het geheugen wordt beperkt. Hiervoor voegt u de volgende parameters toe aan uw reader
configuratiesectie (met behulp van 10000
een voorbeeld kunt u elke waarde kiezen die in het geheugen past en zorgt voor een goede randomisatie):
randomize=true
randomizationWindow=10000 #(assuming that 10K samples << total available memory)
Ik krijg fouten bij het gebruik van de Eval C#-bibliotheek Cntk.Eval.Wrapper.dll (oude naam EvalWrapper.dll) in de Azure-web-app, zoals het volgende: 'Kan bestand of assembly 'sommige CNTK DLL's' niet laden, of een uitzondering System.Runtime.InteropServices.SEHException of InternalServiceFault: Extern onderdeel heeft een uitzondering gegenereerd.'
Controleer eerst of alle CNTK afhankelijkheids-DLL's zijn geïmplementeerd in de Azure-web-app.
Vervolgens moet u uw Azure-web-app instellen voor het gebruik van 64-bits VM's. Als u wilt toestaan dat de Azure-web-app CNTK niet-beheerde DLL's laadt, moet u de PATH-variabele wijzigen door de volgende code toe te voegen aan de Application_Start()
methode inglobal.asax
:
string pathValue = Environment.GetEnvironmentVariable("PATH");
string domainBaseDir = AppDomain.CurrentDomain.BaseDirectory;
string cntkPath = domainBaseDir + @"bin\";
pathValue += ";" + cntkPath;
Environment.SetEnvironmentVariable("PATH", pathValue);
Zie de pagina Een model evalueren in een Azure WebApi voor gedetailleerde stappen.
Ik kan mijn toepassing bouwen met cntk.Eval-.lib/dll, maar er is een uitzondering opgetreden die vergelijkbaar is met de onderstaande tijdens het uitvoeren
Een niet-verwerkte uitzondering van het type Microsoft.MSR. CNTK. Extensibility.Managed.CNTKRuntimeException' is opgetreden in Cntk.Wrapper-.dll
Aanvullende informatie: configuratieparameters: vereiste parameter ontbreekt: onbekend:modelPath
Mogelijke redenen zijn:
- Verschillende buildconfiguratie (release of foutopsporing) tussen uw toepassing en de
Cntk.Eval-<VERSION>.lib/dll
. Als u uw toepassing in release bouwt, moet u een koppeling maken naar de releaseversie vanCntk.Eval-<VERSION>.dll
. Hetzelfde voor de foutopsporingsconfiguratie. Deze fout treedt meestal op voor de C++-toepassing. - Verschillende GCC compilerversies in Linux: de
Cntk.Eval
bibliotheek op Linux is gebouwd met GCC 5.4. Als u een andere GCC-versie voor uw toepassing gebruikt, ziet u mogelijk de bovenstaande fout - Het modelPath is onjuist. Op dit moment moet het modelPath worden opgegeven als een volledig pad. In het voorbeeld van CSEvalClient wordt het relatieve pad gecombineerd met de huidige werkmap om het volledige pad te bouwen. En het CreateNetwork() moet worden doorgegeven aan een tekenreeks met het kenmerk 'modelPath=', waarmee het bestandspad van het model wordt opgegeven. Momenteel wordt toegewezen station niet ondersteund voor modelpad.
Ik krijg het volgende resultaat met CNTKTextFormat-Reader -- WAARSCHUWING: alle invoer die wordt verwacht voor de huidige reeks is uitgeput tijdens het lezen van een drijvende-kommawaarde bij verschuiving
CTF-lezer vereist dat elke goed gevormde lijn moet eindigen met een 'Lijnfeed' \n of 'Regelterugloop, regelfeed' \r\n symbolen (inclusief de laatste regel van het bestand).