python - 打印张量流矩阵 A.eval() 改变矩阵的转置值
问题描述
我有以下代码:
def gram_matrix(A):
"""
Argument:
A -- matrix of shape (n_C, n_H*n_W)
Returns:
GA -- Gram matrix of A, of shape (n_C, n_C)
"""
#print(A.eval()) --> Line#1
#print(tf.transpose(A).eval()) ---> Line#2
### START CODE HERE ### (≈1 line)
GA = tf.matmul(A, tf.transpose(A))
### END CODE HERE ###
return GA
上述方法由以下调用:
tf.reset_default_graph()
with tf.Session() as test:
tf.set_random_seed(1)
A = tf.random_normal([3, 2*1], mean=1, stddev=4)
GA = gram_matrix(A)
print("GA = \n" + str(GA.eval()))
此时一切正常。
现在,如果我取消注释 Line#1 和 Line#2,我在 Line#2 处得到不正确的值,因此 GA 的值不正确。
如果我只取消注释第 2 行,我会在第 2 行得到正确的值,但仍然是 GA 的不同且不正确的值。
为什么会这样?我缺少一个基本的 TensorFlow 概念吗?
谢谢!
解决方案
莱哈尔,
当您取消注释这些行时,您会额外调用eval()
which 插入下一个随机值A
. 试试下面的例子 - 你会看到 2 个不同的A
打印值。
with tf.Session() as test:
tf.random.set_seed(1)
A = tf.random.normal([3, 2*1], mean=1, stddev=4)
print('A1',A.eval(), '\n')
print('A2',A.eval())
A1 [[ 7.8017416 1.2311957 ]
[ 0.77180636 2.3617501 ]
[-5.16232 1.8418424 ]]
A2 [[ 0.19184637 -0.38206506]
[ 1.3456485 -1.2691848 ]
[ 4.286291 0.25501275]]
推荐阅读
- excel - How to prevent my Save macro from running a second time
- javascript - GitHub Pages 存储和渲染图像资产的标准方法
- regex - How to make regex only match when more than two groupings match?
- haskell - 将多态函数应用于两种不同类型的输入
- sql - SQL-Server Using "USE" with INNER JOINS and "UNION" together
- javascript - 带有谓词的 JavaScript Promise.all
- symfony4 - Symfony 4.2:LexikJWT:找不到路径“/api/login_check”的控制器。路由配置错误
- android - 具有无线网络配置的 NFC 标签不适用于 Android Pie
- xaml - I need code behind version of Image source binding
- android - Room:在函数体中抓取dao选中的数据,经过额外处理后返回