2016-07-26 22 views
0

Mein Ziel ist es, eine Rotationsmatrix basierend auf einer Rotationsvariablen, Theta zu generieren.Konstruieren Rotationsmatrix aus Winkel Variable in TensorFlow

Hier ist mein Code so weit:

initial = 0.0 
theta = tf.Variable(initial_value=initial, name='theta') 
sin = tf.sin(theta) 
cos = tf.cos(theta) 
rot_matrix = tf.constant([[cos, -sin, 0], [sin, cos, 0]]) 

Die obige Abbildung zeigt: TypeError: List of Tensors when single Tensor expected für die fünfte Zeile. Ich bekomme das, weil cos und sin Tensoren sind. Aber ich kann keine Möglichkeit finden, einen Wert aus einem Tensor zu extrahieren. (Extraktoren nur aus Tensoren mit tf.slice() extrahieren)

Wie kann ich die Rotationsmatrix richtig erstellen?

Antwort

2

Sie könnten es eine Liste von Tensoren machen und holen Sie das. Im Moment haben Sie eine Mischung aus Tensoren und Zahlen, die Sie nicht abrufen können.

initial = 0.0 
theta = tf.Variable(initial_value=initial, name='theta') 
sin = tf.sin(theta) 
cos = tf.cos(theta) 
rot_matrix = [[cos, -sin, tf.constant(0)], [sin, cos, tf.constant(0)]] 
sess = tf.Session() 
sess.run(tf.initialize_all_variables()) 
sess.run(rot_matrix) 

Alternativ könnte man es in ein einziges Tensor dreht tf.pack() verwenden, die automatisch Nummern (und Listen und Arrays von Zahlen) zu Tensoren umwandelt.

rot_matrix = tf.pack([[cos, -sin, 0], [sin, cos, 0]])

Verwandte Themen