将二维张量转换为二维数组或将二维数组转换为二维张量,是否保留相应的结果?
问:如何将2d张量转换为2d数组? 答:如果我们使用sess.run()或tensor.eval(),我们可以获得对应的数组或矩阵。 问:如何将二维数组转换为二维张量? 答:我们可以使用convert_to_tensor() 问:但是,转换后的数组或张量的乘法结果如何? 答:如果我们尝试一个简单的示例,例如:import numpy as np
import tensorflow as tf
a=[[2,1],[1,3]]
b=[[3,1],[4,5]]
sess = tf.Session()
a_ = tf.convert_to_tensor(a)
b_ = tf.convert_to_tensor(b)
c_ = tf.matmul(a,b)
c = np.dot(a,b)
print(sess.run(c_))
在这种情况下,我们可以获得相同的输出。 但是,带有此链接的代码如何?
https://github.com/danielzuegner/nettack/blob/master/nettack/GCN.py
我更改了第83行的代码
self.h1 = spdot(self.An, spdot(self.X_comp, self.W1))
to
tempH1 = spdot(self.X_comp,self.W1)
tempH1 = tf.constant(tempH1)
tempH2 = tempH1
#tempH2 = tf.convert_to_tensor((self.session.run(tempH1)))
self.h1 = spdot(self.An, tempH1)
在这里,我从上面的链接中稍微更改了代码。我在使用tempH2之前将tf.session()的声明[行132-144]移动。
但是,如果我使用
,则会得到非常不同的结果1. tempH2 = tempH1
和
2. tempH2 = tf.convert_to_tensor((self.session.run(tempH1)))
从理论上讲,这是通过session.run()从2维张量到2维数组的组合操作,然后通过convert_to_tensor将其转换为张量。 但是,结果却大不相同。 为什么? 谁能给我一些提示吗?