2017-07-17 2 views
0

Hallo Ich habe eine Python-Funktion, wo ich versuche, einen Tensor zuzuordnen. Ich muss im Wesentlichen jedes Element durch die Funktion laufen lassen. Ich bin mir nicht sicher, wie die beiden Parameter dieser Funktion zugeordnet werden. Nicht nur das, sondern auch wenn ich den zweiten Parameter zu entfernen es gibt mir eine Fehlermeldung:Tensorflow - Zuordnung der Python-Funktion mit zwei Parametern

TypeError: bad operand type for unary -: 'list' 

Hier ist mein vollständiger Code:

import tensorflow as tf 

def sigmoid(x, derivative = False): 
    if derivative == True: 
     return (1.0/(1+math.exp(-x))) * (1.0 - (1.0/(1+math.exp(-x)))) 
    return 1.0/(1+math.exp(-x)) 

# build computational graph 
a = tf.placeholder('float', None) 

result = tf.map_fn(sigmoid, [a] , tf.float32) 

# initialize variables 
init = tf.global_variables_initializer() 

# create session and run the graph 
with tf.Session() as sess: 
    sess.run(init) 
    print sess.run(result, feed_dict={a: [2,3,4]}) 

# close session 
sess.close() 

Ich war im Anschluss an diesem: https://www.tensorflow.org/api_docs/python/tf/py_func

EDIT Ich kann die exp-Funktion mit Tensorflows Bibliothek:

def sigmoid(x, derivative = False): 
    if derivative == True: 
     return (1.0/(1+tf.exp(-x))) * (1.0 - (1.0/(1+tf.exp(-x)))) 
    return 1.0/(1+tf.exp(-x)) 

Antwort

2

Warum können Sie nicht die Funktion tf.nn.sigmoid() verwenden ?.

def sigmoid(x, derivative = False): 
    if derivative == True: 
     return tf.nn.sigmoid(x) * (1.0 - tf.nn.sigmoid(x)) 
    return tf.nn.sigmoid(x) 

Wenn Sie eine numpy Funktion im Diagramm aufrufen möchten, können Sie tf.py_func (Der Code in der CPU ausgeführt wird, nur):

def sigmoid(x, derivative = False): 
if derivative == True: 
    return (1.0/(1+np.exp(-x))) * (1.0 - (1.0/(1+np.exp(-x)))) 
return 1.0/(1+np.exp(-x)) 

# build computational graph 
a = tf.placeholder('float', None) 

result = tf.py_func(sigmoid, [a, True] , tf.float32) 
+0

Dies funktioniert, aber wie kann ich es bekommen das Derivat verwenden? Wie kann ich zwei Parameter in die Funktion übergeben? – Kevin

+0

Einfach aufrufen, result = Sigmoid (a, Ableitung = True)? –

+0

Danke, Wie wäre es, wenn ich eine Operation ausführen müsste, die numpy benötigt. Nach meinem Verständnis wäre ich dazu nicht in der Lage? – Kevin

Verwandte Themen