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.
Na tej stronie opisano sposób uwidocznienia wartości ukrytej warstwy modelu.
Omówienie
Model CNTK jest oparty na połączonych warstwach. Niektóre z tych warstw można ocenić przy użyciu elementu EvalDll , ponieważ są oznaczone jako "wyjściowe" warstwy. Aby uwidocznić inne warstwy za pośrednictwem EvalDllelementu , te warstwy muszą być oznaczone jako warstwy wyjściowe, dodając je do outputNodes właściwości.
Na przykład 01_OneHidden_ndl_deprecated.cntk plik konfiguracji odwołuje się do 01_OneHidden.ndl pliku definicji sieci. W tym pliku opisu sieci zdefiniowano dwie warstwy:
h1 = DNNSigmoidLayer (featDim, hiddenDim, featScaled, 1)
ol = DNNLayer (hiddenDim, labelDim, h1, 1)
Ale tylko jedna warstwa jest oznaczona jako dane wyjściowe:
outputNodes = (ol)
W związku z tym funkcja EvalDll zwróci tylko wartości odnoszące się do warstwy ol podczas oceny.
Aby móc ocenić ukrytą h1 warstwę, musimy najpierw uwidocznić ją jako węzeł wyjściowy. Istnieją trzy możliwe sposoby:
1. Model trenowania z ukrytymi warstwami uwidocznionych
Aby wygenerować warstwę h1 , wystarczy dodać ją jako dane wyjściowe w opisie sieci (01_OneHidden.bs pliku) podczas trenowania, a ta warstwa będzie dostępna do odczytu podczas oceny:
outputNodes = (h1:ol)
Oznacza to jednak, że model musi być (ponownie) wytrenowany przy użyciu tej konfiguracji.
2. Modyfikowanie już wytrenowanego modelu
Modele można modyfikować na bieżąco podczas ładowania przy użyciu wyrażeń BrainScript. Zostanie to udokumentowane w przyszłej aktualizacji tej dokumentacji.
3. Zmiana zestawu węzłów wyjściowych już wytrenowanego modelu podczas ładowania go do oceny przy użyciu EvalDll/EvalDllWrapper modułów
Jeśli wytrenowany będzie oceniany przy użyciu EvalDll/EvalDllWrapper modułów, można dodać outputNodeNames właściwość z dwukropkiem rozdzielonej listą węzłów do definicji sieci:
outputNodeNames = "h1.z:ol.z"
Podczas ładowania sieci aparat Eval rozpozna outputNodeNames właściwość i zastąpi węzły wyjściowe modelu listą węzłów określonych we outputNodeNames właściwości.
Patrząc na kod w przykładowym projekcie CPPEvalClient , pokazuje wiersz (bez komentarza) określający outputNodeNames właściwość:
networkConfiguration += "outputNodeNames=\"h1.z:ol.z\"\n";
networkConfiguration += "modelPath=\"" + modelFilePath + "\"";
model->CreateNetwork(networkConfiguration);
Uruchomienie programu pokazuje odpowiednie dane wyjściowe dla warstwy h1.z .