2017-03-17 2 views
1

Zum Beispiel würde der folgende Code keinen Implementierungsfehler haben?ist es in Ordnung, integrierte Tensorflow-Funktionen als Aktivierungen eines neuronalen Netzes zu verwenden?

import tensorflow as tf 

x_data = [1, 2, 3] 
y_data = [1, 2, 3] 

W = tf.Variable(tf.random_uniform([1], -1.0, 1.0)) 
b = tf.Variable(tf.random_uniform([1], -1.0, 1.0)) 

X = tf.placeholder(tf.float32, name="X") 
Y = tf.placeholder(tf.float32, name="Y") 

hypothesis = tf.maximum(tf.add(tf.mul(W, X), b),0) 
cost = tf.reduce_mean(tf.square(hypothesis - Y)) 

optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.1) 

train_op = optimizer.minimize(cost) 
_, cost_val = tf.Session.run([train_op, cost], feed_dict={X: x_data, Y: y_data}) 

Notieren Sie sich die in dem obigen Code, habe ich `tf.maximum (tf.add (tf.mul (W, X), b), 0) in Bezug auf denen bin ich nicht so sicher sein Umsetzbarkeit, weil ich nicht weiß, wie groß Backpropagation sein kann.

Eine allgemeinere Frage ist, dass jede Aktivierungsfunktion, die aus eingebauten Tensorflow-Funktionen konstruiert wird, mit Backpropagation in tf.Session trainiert werden kann?

Meine Frage mit anderen Worten, kommt jede Tensorflow-Mathematikoperation mit ihren Gradienteninformationen?

+1

Ich denke, [tf.nn.relu_layer] (https://www.tensorflow.org/api_docs/python/tf/nn/relu_layer) ist das, was Sie wollen? – xxi

+0

@xxi Nicht im Allgemeinen. – julypraise

Antwort

0

Ich würde es so denken: Kann der Gradient mit einer beliebigen Funktion berechnet werden? Das wäre nein. Es hängt von der Funktion ab und teilweise davon, wie die Teile, aus denen es besteht, im Tensorfluss implementiert sind.

Insbesondere die Kosten in Ihrem Code ist nur ein Quadrat Fehlerverlust, es ist bekannt, ein globales Minimum zu haben.

mit einigen tweeks Ihr Code ausgeführt wird:

import tensorflow as tf 

x_data = [1, 2, 3] 
y_data = [1, 2, 3] 

W = tf.Variable(tf.random_uniform([1], -1.0, 1.0)) 
b = tf.Variable(tf.random_uniform([1], -1.0, 1.0)) 

X = tf.placeholder(tf.float32, name="X") 
Y = tf.placeholder(tf.float32, name="Y") 

hypothesis = tf.maximum(tf.add(tf.multiply(W, X), b),0) 
cost = tf.reduce_mean(tf.square(hypothesis - Y)) 

optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.1) 

train_op = optimizer.minimize(cost) 

with tf.Session() as sess: 
    sess.run(tf.global_variables_initializer()) 
    _, cost_val = sess.run([train_op, cost], feed_dict={X: x_data, Y: y_data}) 
    print(cost_val) 

4.999 
Verwandte Themen