2017-02-06 10 views
1

Ich versuche, über Convolution neuronalen Netzwerk mit Tensorflow zu lernen, verwende ich den Code unten, um mein Netzwerk zu erstellen.Convolution neuronalen Netzwerk-Ausgangswert im Bereich

# network weights 
    W_conv1 = weight_variable([8, 8, 4, 32]) 
    b_conv1 = bias_variable([32]) 

    W_conv2 = weight_variable([4, 4, 32, 64]) 
    b_conv2 = bias_variable([64]) 

    W_conv3 = weight_variable([3, 3, 64, 64]) 
    b_conv3 = bias_variable([64]) 

    W_fc1 = weight_variable([1600, 512]) 
    b_fc1 = bias_variable([512]) 

    W_fc2 = weight_variable([512, ACTIONS]) 
    b_fc2 = bias_variable([ACTIONS]) 

    # input layer 
    s = tf.placeholder("float", [None, 80, 80, 4]) 

    # hidden layers 
    h_conv1 = tf.nn.relu(conv2d(s, W_conv1, 4) + b_conv1) 
    h_pool1 = max_pool_2x2(h_conv1) 

    h_conv2 = tf.nn.relu(conv2d(h_pool1, W_conv2, 2) + b_conv2) 
    #h_pool2 = max_pool_2x2(h_conv2) 

    h_conv3 = tf.nn.relu(conv2d(h_conv2, W_conv3, 1) + b_conv3) 
    #h_pool3 = max_pool_2x2(h_conv3) 

    #h_pool3_flat = tf.reshape(h_pool3, [-1, 256]) 
    h_conv3_flat = tf.reshape(h_conv3, [-1, 1600]) 

    h_fc1 = tf.nn.relu(tf.matmul(h_conv3_flat, W_fc1) + b_fc1) 

    # readout layer 
    readout = tf.matmul(h_fc1, W_fc2) + b_fc2 

dieses Netz nehmen a [80,80,4] Ausgang eines AKTIONEN Vorhersage-Objekt, (AKTIONEN Anzahl der Klassen)

Meine Frage ist, wie man ein Netzwerk zu schaffen, dass die Ausgabe auf einem Wert zwischen [a , b]

+0

Jeder CNN kann eine Nummer in [0, 1] ausgeben, und dann normalisieren Sie Ihren Bereich auf [0, 1], dann Problem gelöst. –

Antwort

0

Wenn [a, b] kategorisch ist, dh Sie diskrete Klassen haben (also n insgesamt), müssen Sie n Neuronen wie in der Ausleseschicht haben, die jeweils einer gegebenen Klasse entsprechen, die ihre Wahrscheinlichkeit darstellt. Die Standardmethode ist die Verwendung der Sigmoid-Kreuz-Entropie bei Logits (mit tf.nn.sigmoid_cross_entropy_with_logits im Fall von Tensorflow).

Wenn [a, b] kontinuierlich ist (was wahrscheinlich nicht das ist, was Sie suchen), wird es zu einem Regressionsproblem. Wenn genügend Daten und eine geeignete Verlustfunktion (quadrierte Fehler) zusammen mit einer gewissen Regularisierung zur Verfügung stehen, sollte sichergestellt sein, dass Ihre Ausgabe in einem akzeptablen Bereich liegt oder Sie können immer einen numerischen Bereich einem anderen zuordnen.

Wenn dies alles nicht sinnvoll ist, müssen Sie ein grundlegendes maschinelles Lernen lernen, bevor Sie in neuronale Netze eintauchen.

+0

danke für Ihre Antwort, in meinem Fall [a, b] = [0,100] so ist es der zweite Fall, –

+0

was bedeutet, nicht nur 100 Klassen, sondern jede Dezimalzahl in diesem Bereich? – rajat

+0

ja ich brauche den realen Wert zwischen 0 und 100 zu bekommen –

Verwandte Themen