沿更深的维度更新张量中的值
Update values in tensor along deeper dimensions
我有形状为 MxNxC 的张量 A,其中 M 代表示例数,N 是特征数,C 是 3 个欧拉旋转角。我也有一个类似形状的张量 B,但不是角度而是坐标。
需要做的是将这两个张量转换为包含仿射变换矩阵的张量,使其形状类似于 MxNx4x4。我不知道如何一起迭代这些张量,我一直在寻找 tf.map_fn and tf.scan 但它们只迭代第一维。我正在寻找的是一些方法,可以将如下所示的函数应用于最后一个轴上的所有元素。
def f(angles, vector): #dimensions 3 or 3x1
...
return matrix # dimension 4x4
任何帮助都会有用,谢谢!
你可以试试这样:
A_flattened = tf.reshape(A, [-1, 3])# flatten it out
B_flattened = tf.reshape(B, [-1, 3])
AB_flattened = tf.map_fn(convert_to_mat, (A_flattened, B_flattened))# convert_to_mat should return a 4x4 matrix
AB = tf.reshape(AB_flattened, [M, N, 4, 4])
这应该可以解决问题![=11=]
我有形状为 MxNxC 的张量 A,其中 M 代表示例数,N 是特征数,C 是 3 个欧拉旋转角。我也有一个类似形状的张量 B,但不是角度而是坐标。 需要做的是将这两个张量转换为包含仿射变换矩阵的张量,使其形状类似于 MxNx4x4。我不知道如何一起迭代这些张量,我一直在寻找 tf.map_fn and tf.scan 但它们只迭代第一维。我正在寻找的是一些方法,可以将如下所示的函数应用于最后一个轴上的所有元素。
def f(angles, vector): #dimensions 3 or 3x1
...
return matrix # dimension 4x4
任何帮助都会有用,谢谢!
你可以试试这样:
A_flattened = tf.reshape(A, [-1, 3])# flatten it out
B_flattened = tf.reshape(B, [-1, 3])
AB_flattened = tf.map_fn(convert_to_mat, (A_flattened, B_flattened))# convert_to_mat should return a 4x4 matrix
AB = tf.reshape(AB_flattened, [M, N, 4, 4])
这应该可以解决问题![=11=]