我有一个矩阵(矢量)X形状[3,4],我想计算每对矢量(X [1] .X [1])和(X [1] .X [之间的点积] 2])...等.
我看到他们使用的余弦相似代码
tf.reduce_sum(tf.multyply(X,X),axis = 1)
计算向量矩阵中向量之间的点积.然而,这个结果只计算(X [i],X [i])之间的点积.
我用tf.matmul(X,X,transpose_b = TRUE),其计算每两个向量的点积,但我仍然感到困惑,为什么tf.multiply没有做到这一点,我认为我的代码的问题.
代码是:
data=[[1.0,2.0,4.0,5.0],[0.0,6.0,7.0,8.0],[8.0,1.0,1.0,1.0]]
X=tf.constant(data)
matResult=tf.matmul(X, X, transpose_b=True)
multiplyResult=tf.reduce_sum(tf.multiply(X,X),axis=1)
with tf.Session() as sess:
print('matResult')
print(sess.run([matResult]))
print()
print('multiplyResult')
print(sess.run([multiplyResult]))
Run Code Online (Sandbox Code Playgroud)
输出是:
matResult
[array([[ 46., 80., 19.],
[ 80., 149., 21.],
[ 19., 21., 67.]], dtype=float32)]
multiplyResult
[array([ 46., 149., 67.], dtype=float32)]
Run Code Online (Sandbox Code Playgroud)
我很感激任何建议
我想使用张量流训练模型。
我有以下变量,我希望模型学习它
Mj=tf.get_variable('Mj_',dtype=tf.float32, shape=[500,4],initializer=tf.random_uniform_initializer(maxval=1, minval=0))
Run Code Online (Sandbox Code Playgroud)
我希望Mj的结果值介于0和1之间。如何添加此约束?