2017-05-28 4 views
1

Würde der folgende Code eine oder zwei Schichten darstellen? Ich bin verwirrt, weil es nicht auch eine Eingabeschicht in einem neuronalen Netz geben soll?Anzahl der TF-Slim-Schichten

input_layer = slim.fully_connected(input, 6000, activation_fn=tf.nn.relu) 
output = slim.fully_connected(input_layer, num_output) 

Enthält diese eine versteckte Ebene? Ich versuche nur, das Netz zu visualisieren. Danke im Voraus!

Antwort

1

enter image description here

Sie haben ein neuronales Netzwerk mit einer versteckten Schicht. In Ihrem Code entspricht input der Ebene "Input" im obigen Bild. input_layer ist das, was das Bild "Versteckt" nennt. output ist, was das Bild 'Output' nennt.

Denken Sie daran, dass die "Eingabeebene" eines neuronalen Netzwerks keine traditionelle vollständig verbundene Ebene ist, da es sich nur um Rohdaten ohne Aktivierung handelt. Es ist ein bisschen falsch. Diese Neuronen im Bild oben in der Eingabeebene sind nicht die gleichen wie die Neuronen in der versteckten Ebene oder Ausgabeebene.

+0

Vielen Dank! Das macht jetzt Sinn! Also, der Code, den ich habe, würde das 3-schichtige neurale Netzwerk darstellen, das du dir vorgestellt hast? – dooder

+0

Korrigieren. Die Eingabegröße ist die Größe von "Eingabe" in Ihrem Code. Die versteckte Ebene hat die Größe 6000. Die Ausgabeschicht hat die Größe 'num_output'. –

0

Von tensorflow-slim:

Außerdem TF-Slim slim.stack Operator ermöglicht es ein Anrufer wiederholt die gleiche Operation mit unterschiedlichen Argumenten gilt einen Stapel oder Turm von Schichten zu erstellen. slim.stack erstellt außerdem für jede erstellte Operation ein neues tf.variable_scope. Um zum Beispiel einer Multi-Layer-Perceptron (MLP) eine einfache Art und Weise zu erstellen:

# Verbose way: 
x = slim.fully_connected(x, 32, scope='fc/fc_1') 
x = slim.fully_connected(x, 64, scope='fc/fc_2') 
x = slim.fully_connected(x, 128, scope='fc/fc_3') 

# Equivalent, TF-Slim way using slim.stack: 
slim.stack(x, slim.fully_connected, [32, 64, 128], scope='fc') 

So das Netzwerk erwähnt hier ist ein [32, 64,128] Netzwerk - eine Schicht mit einer versteckten Größe von 64

+0

Vielen Dank für den Kommentar! Würden also die 32 Neuronen die Eingabeschicht darstellen? Nehmen wir an, wir haben eine Eingabe mit 1000 Features. Bedeutet das nicht, dass die Eingabeschicht die 1000 Features in 32 Neuronen für die Eingabeschicht verdichten müsste? Würden 32x64-Gewichtsverbindungen von der Eingabeschicht zur ersten versteckten Ebene bestehen? Sorry für die Fragen, ich versuche nur das zu verstehen! – dooder

+0

@dooder Fragen sind immer gut! Allerdings kann ich diese Frage nicht beantworten, da ich nie mit Tensorflow arbeite. Ich weiß also nicht, wie sich die Werte verdichten. Wenn Sie jedoch eine Schicht von 32 Neuronen und eine Schicht von 64 Neuronen haben, wird die Anzahl der Verbindungen tatsächlich 32 * 64 sein. –