【问题标题】:Reduce an array of matrices in tensorflow减少张量流中的矩阵数组
【发布时间】:2017-08-23 04:38:00
【问题描述】:
像 tf.reduce_mean 和 tf.reduce_prod 这样的函数执行元素操作以减少沿轴的张量。我有一个张量 R,形状为 (1000, 3, 3),是一个 3x3 矩阵列表。我想做的是 matrix 将它们相乘,这样我就保留了一个 3x3 矩阵。如果这是 numpy 我可以使用
np.linalg.multi_dot(R)
如何在张量流中做到这一点?
【问题讨论】:
标签:
python
matrix
tensorflow
【解决方案1】:
你可以使用tf.scan:tf.scan(lambda a, b: tf.matmul(a, b), R)[-1]
import tensorflow as tf
import numpy as np
R = np.random.rand(10, 3, 3)
R_reduced = np.linalg.multi_dot(R)
R_reduced_t = tf.scan(lambda a, b: tf.matmul(a, b), R)[-1]
with tf.Session() as sess:
R_reduced_val = sess.run(R_reduced_t)
diff = R_reduced_val - R_reduced
print(diff)
打印出来:
[[ -3.55271368e-15 0.00000000e+00 0.00000000e+00]
[ 1.77635684e-15 0.00000000e+00 3.55271368e-15]
[ -1.77635684e-15 3.55271368e-15 0.00000000e+00]]