2017-12-21 4 views
0

Wie kann ich Variablen in TensorFlow initialisieren?Wie kann ich Variablen mit Bernoulli-Verteilung in TensorFlow initialisieren?

Ich mag jedes Gewicht mit einer Bernoulli-Verteilung assoziieren:

  • mit einer Wahrscheinlichkeit von p einen Wert x1 zu bekommen, und
  • mit einer Wahrscheinlichkeit von 1-p einen Wert x2 erhalten.

Wie soll ich diese Matrix initialisieren?

Ich schrieb diesen Code:

logits_y = tf.get_variable("logits", [n_input*n_hidden,2], 
          initializer=tf.constant_initializer(1.)) 

Die 2 in [n_input*n_hidden, 2] bedeutet [p, 1-p].

+0

Wie planen Sie mit 'logits_y'? In der Verlustfunktion oder zum Erstellen von Zusammenfassungen? –

+0

@musically_ut Ich möchte Samples mit logits_y zeichnen, die Gewichte stammen nun aus verschiedenen Bernoulli-Verteilungen. Und ich möchte p für jedes Gewicht in irgendeiner Weise optimieren. – henrykuo

Antwort

0

Ich bin nicht sicher, was genau Sie mit Ihrer Matrix planen zu tun, aber hier ist, wie Sie Bernoulli distribution in tensorflow erzeugen:

>>> distrib = tf.contrib.distributions.Bernoulli(probs=[0.3]) 
>>> sample = distrib.sample([10]) 
>>> sample 
<tf.Tensor 'Bernoulli/sample/Reshape:0' shape=(10, 1) dtype=int32> 
>>> sample.eval() 
array([[0], 
     [0], 
     [1], 
     [1], 
     [0], 
     [0], 
     [0], 
     [1], 
     [0], 
     [0]], dtype=int32) 
+0

Danke für die Antwort. Das Problem, das ich habe, ist, dass ich die Bernoulli-Verteilung für jedes Gewicht durch das Zeichnen von Proben optimieren möchte. Also muss ich jedes p als eine Variable machen und es mit SGD oder ähnlichen Algorithmen optimieren. – henrykuo

Verwandte Themen