2016-07-26 1 views
0

Моя цель - создать матрицу вращения на основе переменной поворота, тета.Построить матрицу вращения от переменной угла в TensorFlow

Вот мой код до сих пор:

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]]) 

выше дает: TypeError: List of Tensors when single Tensor expected для пятой линии. Я получаю это, потому что cos и sin являются тензорами. Но я не могу найти способ извлечь значение из тензора. (Только извлечение суб тензоров из тензоров с tf.slice())

Как правильно создать матрицу вращения?

ответ

2

Вы можете составить список тензоров и получить это. Прямо сейчас у вас есть смесь тензоров и чисел, которые вы не можете получить, как есть.

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) 

В качестве альтернативы вы можете превратить его в один Тензор с использованием tf.pack(), который преобразует числа (и списки и массивы чисел) для тензоров автоматически.

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

Смежные вопросы