2017-10-21 85 views
0

J'essaie d'entrer dans Tensorflow bases à l'aide de quelques exemples git et tutoriels, mais je suis bloqué sur la partie où je ne peux pas tracer un graphique Gaussian Distribution ici C'est ce que j'ai fait.Arguments incertains dans tf.mul et tf.sqrt

x = tf.lin_space(-3.0, 3.0, 32) 

sess = tf.InteractiveSession() 

s = 0 
mean = 0 
gauss = (tf.exp(tf.negative(tf.pow(x - mean, 2)/(2 * tf.pow(s, 2)))) * (1.0/(s * tf.sqrt(2 * 3.1415)))) 
plt.plot(x.eval(), gauss.eval()) 
plt.show() 

je recevais TypeError d'abord à cause des arguments de flotteur à savoir 2.0 au lieu de 2 à tf.pow() J'ai même essayé de changer le type, mais tf.to_float() mais cela n'a pas aidé non plus et ici je suis avec.

ValueError: Tensor conversion requested dtype float32 for Tensor with dtype int32: 'Tensor("mul:0", shape=(), dtype=int32)' 

juste une supposition ne devrait pas y avoir tf.matmul au lieu de (2 * tf.pow(s, 2))?

Répondre

1

Compris le problème. L'entrée de pow() devrait être un float. Par conséquent, s devrait être un flotteur.

x = tf.lin_space(-3.0, 3.0, 32) 

sess = tf.InteractiveSession() 

s = 1.0 # need to be a float 
mean = 0 
gauss = (tf.exp(tf.negative(tf.pow(x - mean, 2)/(2 * tf.pow(s, 2)))) * (1.0/(s * tf.sqrt(2 * 3.1415)))) 
plt.plot(x.eval(), gauss.eval()) 
plt.show() 

Espérons que cela aide.

+0

merci, mais le graphique ne montre rien, aucune aide avec ça? –

+0

Je suppose que s doit être égal à 1 puisque vous calculez des valeurs liées à une distribution gaussienne. Dans votre code, s = 0.0, à cause de cette variable gaussienne donne 'nan'. C'est la raison pour ne pas montrer le graphique –