0

Ich versuche ein mehrschichtiges Pereptron zu trainieren, um basierend auf der gegebenen Eingabe zwischen wahr oder falsch zu klassifizieren. Bisher verwende ich das Beispiel:TensorFlow MLP Beispiel gibt binär statt dezimal aus

https://github.com/aymericdamien/TensorFlow-Examples/blob/master/examples/3_NeuralNetworks/multilayer_perceptron.py

Aber das gibt mir die Ausgabe als Binärwert und ich habe eher eine Dezimalzahl oder prozentuale ausgegeben.

Was ich versucht habe:

Ich habe versucht, ohne Erfolg den Optimierer für die anderen verfügbaren zu ändern.

Optimierer = tf.train.AdamOptimizer (learning_rate = learning_rate) .minimize (Kosten)

Antwort

0

Das Optimierungsprogramm wird nicht die Ausgabe ändern, die tatsächlich von den Schichten gegeben.

Das angegebene Beispiel verwendet ReLu für die Layer, was gut für die Klassifizierung ist, aber um die Wahrscheinlichkeit zu modellieren, dass es nicht funktionieren würde. Sie wären besser mit einer Sigmoid-Funktion stattdessen.

Die Sigmoidfunktion kann zur Modellierung der Wahrscheinlichkeit verwendet werden, während ReLu zur Modellierung positiver reeller Zahlen verwendet werden kann.

def multilayer_perceptron(_X, _weights, _biases): 
    layer_1 = tf.sigmoid(tf.add(tf.matmul(_X, _weights['h1']), _biases['b1']), name="sigmoid_l1") #Hidden layer with sigmoid activation 
    layer_2 = tf.sigmoid(tf.add(tf.matmul(layer_1, _weights['h2']), _biases['b2']), name="sigmoid_l2") #Hidden layer with sigmoid activation 
    return tf.matmul(layer_2, _weights['out'], name="matmul_lout") + _biases['out'] 

Es ersetzt im Wesentlichen der relu Aktivierung für eine S-förmige eines: zu

Um es für das vorgesehene Beispiel arbeiten zu lassen, die multilayer_perceptron Funktion zu ändern.

Dann wird für die Auswertung verwenden softmax wie folgt:

output1 = tf.nn.softmax((multilayer_perceptron(x, weights, biases)), name="output") 
avd = sess.run(output1, feed_dict={x: features_t}) 

Es Sie bieten eine breite Palette zwischen 0 und 1 für jede Klasse. Außerdem müssen Sie wahrscheinlich die Anzahl der Epochen erhöhen, damit dies funktioniert.