1.例子
import tensorflow as tf
a = tf.constant([0,1,2,1,3,4,5,2,3,4,5,0],shape=[2,1,3,2])
b =tf.constant([1,3,2,3,1,2],shape=[2,3,1])
res = tf.tensordot(a,b,axes=1)
with tf.Session() as sess:
print(“a的shape:”,a.shape)
print(“b的shape:”,b.shape)
print(“a的值:”,sess.run(a))
print(“b的值:”,sess.run(b))
print(“res_shape:”,res.shape)
print(“res_value:”,sess.run(res))
a的shape: (2, 1, 3, 2)
b的shape: (2, 3, 1)
a的值: [[[[0 1]
[2 1]
[3 4]]]
[[[5 2]
[3 4]
[5 0]]]]
b的值: [[[1]
[3]
[2]]
[[3]
[1]
[2]]]
res_shape: (2, 1, 3, 3, 1)
res_value: [[[[[ 3]
[ 1]
[ 2]]
[[ 5]
[ 7]
[ 6]]
[[15]
[13]
[14]]]]
[[[[11]
[17]
[14]]
[[15]
[13]
[14]]
[[ 5]
[15]
[10]]]]]
a的张量如图
b的张量如图
a的最后一维矩阵两个:
b的第一维矩阵转置
a的最后一维两个矩阵与b的第一维矩阵相乘
所得结果转置后即计算结果
[[[[[ 3]
[ 1]
[ 2]]
[[ 5]
[ 7]
[ 6]]
[[15]
[13]
[14]]]]
[[[[11]
[17]
[14]]
[[15]
[13]
[14]]
[[ 5]
[15]
[10]]]]]
仅供参考,不清楚具体官方如何算出来的,欢迎提供不同算法