Odstranit potíže
Tato stránka shromažďuje některé z nejčastějších úskalí uživatelů.
Během trénování binárního klasifikátoru se vždy zobrazuje chyba klasifikace 0 i od prvního minibatchu.
Klasifikační chyba funguje správně jenom u problémů s více třídami. Pro binární klasifikaci použijte tento jednoduchý recept.
Přestože byl model natrénován s větší sadou, než je testovací sada, CNTK během vyhodnocení nedostatek paměti.
Trénování modelu obvykle obsahuje vlastnost nastavenou v konfiguračním minibatchSize
souboru CNTK. Při vyhodnocování modelu pomocí CNTK.exe se ujistěte, že je to minibatchSize
vhodné. Chcete-li rychle zjistit, jestli tato vlastnost způsobuje problém, nastavte vlastnost na nízkou hodnotu (např minibatchSize=2
. ) v konfiguračním souboru pro příkaz vyhodnocení. (cf. Problém č. 468)
Dostávám SegFault v Linuxu s hlubokými sítěmi (například ResNet152).
Možná nemáte dostatečnou velikost zásobníku. BrainScript vyžaduje hodně zásobníku. Spusťte příkaz: ulimit -s 65536. Tím se nastaví velikost zásobníku na 64 MB.
Během hodnocení se zobrazí následující chyba: O vyvolání výjimky cuDNN selhání 8: CUDNN_STATUS_EXECUTION_FAILED ; GPU=0 ; název hostitele=haha; výraz=err'
Vlastnost minibatchSize nastavte na menší hodnotu (např. minibatchSize=2
).
Při kompilaci CNTK pomocí VS2013/VS2015 se zobrazí chyba kompilátoru, co je špatně?
Musíte upgradovat Visual Studio 2017. Podívejte se tady: Nastavení CNTK na Windows
Povolil(a) jsem čtečku obrázků s podporou zip a při spuštění testů jednotek čtečky obrázků nebo pokusu o použití čtečky obrázků se zobrazila chyba Plugin se nenašla: "Cntk.Deserializers.Image-.dll" (starý název ImageReader.dll). Co se může pokazit?
Zkontrolujte, jestli jste správně nainstalovali zlib a libzip.
Právě jsem stáhl a nainstaloval CNTK binární balíček a chci spustit úlohu, ale zobrazí se divné chyby, jako jsou chybějící knihovny CUDA.
Prosím, pečlivě zkontrolujte, co máte ve svém PATH
. Zvláště pokud se jedná o sdílený vývojový počítač. Často to způsobuje starší (předchozí) verze CNTK nebo CNTK komponent, které jsou dostupné prostřednictvím nakonfigurované cesty.
Na Windows jsem nainstaloval novou verzi ovladače NVIDIA a teď CNTK sestavení selže s chybami, jako je ..\Common\BestGpu.cpp(24): fatal error C1083: Cannot open include file: 'nvml.h': No such file or directory
V instalačním programu ovladače NVIDIA jste vybrali možnost Provést čistou instalaci . Výsledkem je odebrání sady GPU Deployment Kit (GDK). Pokud chcete systém opravit, proveďte následující kroky:
- Spuštění instalačního programu CUDA
- Výběr vlastní (rozšířené) instalace
- Zrušit výběr všech možností instalace kromě sady GPU Deployment Kit
- Tím se automaticky vybere možnost Grafický ovladač – očekává se. Ponechte ho vybranou.
- Pokračovat v instalaci CUDA
- Po úspěšné instalaci CUDA spusťte instalaci požadované verze grafického ovladače.
- Výběr vlastní (rozšířené) instalace
- Ujistěte se, že není vybraná možnost Provést čistou instalaci, a pokračujte v instalaci.
Počáteční doba čtení trvá velmi dlouho nebo dochází k jedné z následujících výjimek: "Volání operačního systému selhalo nebo operace není v tomto operačním systému podporována" nebo "VÝJIMKA došlo k chybě CUSPARSE 1" nebo segfault s AllocationFailureHandler v zásobníku.
Jedním z možných důvodů je nadměrné zatížení paměti způsobené načtením celé datové sady do paměti s výchozím (tj. neomezeným) oknem náhodného náhodného výběru. Zkuste spustit úlohu s explicitní randomizationWindow
hodnotou, která omezí množství vstupních dat uložených v paměti. Uděláte to tak, že do oddílu konfigurace přidáte následující parametry reader
(jako 10000
příklad můžete zvolit libovolnou hodnotu, která odpovídá paměti a zajistí dobrou náhodnost):
randomize=true
randomizationWindow=10000 #(assuming that 10K samples << total available memory)
Při použití knihovny Eval C# Cntk.Eval.Wrapper.dll (starý název EvalWrapper.dll) ve webové aplikaci Azure dochází k chybám takto: "Nepodařilo se načíst soubor nebo sestavení "některé knihovny DLL CNTK" nebo výjimku System.Runtime.InteropServices.SEHException nebo "InternalServiceFault: Externí komponenta vyvolala výjimku".
Nejprve se ujistěte, že jsou všechny knihovny DLL závislostí CNTK nasazené do webové aplikace Azure.
Pak musíte nastavit webovou aplikaci Azure tak, aby používala 64bitový virtuální počítač. Pokud chcete webové aplikaci Azure povolit načtení CNTK nespravovaných knihoven DLL, měli byste proměnnou PATH změnit přidáním následujícího kódu do metody v Application_Start()
global.asax
:
string pathValue = Environment.GetEnvironmentVariable("PATH");
string domainBaseDir = AppDomain.CurrentDomain.BaseDirectory;
string cntkPath = domainBaseDir + @"bin\";
pathValue += ";" + cntkPath;
Environment.SetEnvironmentVariable("PATH", pathValue);
Podrobné kroky najdete na stránce Vyhodnocení modelu na webu Azure WebApi.
Můžu vytvořit aplikaci pomocí cntk.Eval-.lib/dll, ale při spuštění došlo k výjimce podobné níže.
Neošetřená výjimka typu Microsoft.MSR. CNTK. V Cntk.Wrapper-.dll došlo k rozšíření.Managed.CNTKRuntimeException
Další informace: configparameters: požadovaný parametr chybí: unknown:modelPath
Možné důvody jsou:
- Různá konfigurace sestavení (verze nebo ladění) mezi vaší aplikací a
Cntk.Eval-<VERSION>.lib/dll
aplikací . Pokud sestavíte aplikaci ve verzi, propojte prosím verzi verzeCntk.Eval-<VERSION>.dll
. To samé platí pro konfiguraci ladění. K této chybě obvykle dochází u aplikace C++. - Různé verze kompilátoru GCC v Linuxu: Knihovna v Linuxu
Cntk.Eval
je vytvořená s GCC 5.4. Pokud pro aplikaci používáte jinou verzi GCC, může se zobrazit výše uvedená chyba. - ModelPath je nesprávný. V současné době musí být modelPath zadán jako úplná cesta. V příkladu CSEvalClient se relativní cesta zkombinuje s aktuálním pracovním adresářem a vytvoří úplnou cestu. A createNetwork() musí být předán řetězec obsahující atribut "modelPath=" určující cestu k souboru modelu. V současné době není mapovaná jednotka pro modelpath podporovaná.
Získám následující výsledek s CNTKTextFormat-Reader - UPOZORNĚNÍ: Vyčerpání všech vstupů očekávaných pro aktuální posloupnost při čtení hodnoty s plovoucí desetinnou čárkou při posunu
Čtečka CTF vyžaduje, aby každý správně vytvořený řádek měl končit buď "Kanál řádků" \n nebo "Návrat řádku, spojnicový informační kanál" \r\n symboly (včetně posledního řádku souboru).