tf.enisum(equation,*inputs)
可以用简单的方式表示许多常见的多维线性代数数组运算。
常见使用方法如下:
# Matrix multiplication
einsum('ij,jk->ik', m0, m1) # output[i,k] = sum_j m0[i,j] * m1[j, k]
# Dot product
einsum('i,i->', u, v) # output = sum_i u[i]*v[i]
# Outer product
einsum('i,j->ij', u, v) # output[i,j] = u[i]*v[j]
# Transpose
einsum('ij->ji', m) # output[j,i] = m[i,j]
# Trace
einsum('ii', m) # output[j,i] = trace(m) = sum_i m[i, i]
# Batch matrix multiplication
einsum('aij,ajk->aik', s, t) # out[a,i,k] = sum_j s[a,i,j] * t[a, j, k]
示例:
①外积tf.einsum('ij,ij->ij', x, y) 相当于 tf.multiply(x, y)
②点积 tf.einsum('ij,jk->ik', x, z) 相当于 tf.matmul(x, z)
③转置 tf.einsum('ij->ji', x) 相当于 tf.transpose(x, [1, 0])
参考链接:
https://blog.csdn.net/qq_35203425/article/details/81560118
https://tensorflow.google.cn/