[英]How tf.transpose works in tensorflow?
tf.transpose(a, perm=None, name='transpose')
轉置一個。 它根據燙發來排列尺寸。 所以,如果我使用這個矩陣進行轉換:
import tensorflow as tt
import os
os.environ["TF_CPP_MIN_LOG_LEVEL"]="3"
import numpy as bb
ab=([[[1,2,3],[6,5,4]],[[4,5,6],[3,6,3]]])
v=bb.array(ab)
fg=tt.transpose(v)
print(v)
with tt.Session() as df:
print("\n New tranformed matrix is: \n\n{}".format(df.run(fg)))
結果是:
[[[1 2 3]
[6 5 4]]
[[4 5 6]
[3 6 3]]]
New tranformed matrix is:
[[[1 4]
[6 3]]
[[2 5]
[5 6]]
[[3 6]
[4 3]]]
Process finished with exit code 0
現在,如果我使用perm參數,那么:
import tensorflow as tt
import os
os.environ["TF_CPP_MIN_LOG_LEVEL"]="3"
import numpy as bb
ab=([[[1,2,3],[6,5,4]],[[4,5,6],[3,6,3]]])
v=bb.array(ab)
fg=tt.transpose(v,perm=[0,2,1])
print(v)
with tt.Session() as df:
print("\n New tranformed matrix is: \n\n{}".format(df.run(fg)))
結果是:
[[[1 2 3]
[6 5 4]]
[[4 5 6]
[3 6 3]]]
New tranformed matrix is:
[[[1 6]
[2 5]
[3 4]]
[[4 3]
[5 6]
[6 3]]]
Process finished with exit code 0
因此,我很困惑,我有兩個問題:
查看numpy.transpose
文檔,我們發現transpose
接受了參數
axes
: 整數列表,可選
默認情況下,反轉尺寸,否則根據給定的值置換軸。
因此,對於2D情況,默認調用transpose
轉換為np.transpose(a, axes=[1,0])
,或np.transpose(a, axes=[2,1,0])
。
您希望在此處執行的操作是保持“深度”維度不變的操作。 因此,在軸參數中,深度軸(即第0
軸)需要保持不變。 軸1
和2
(其中1是垂直軸)需要改變位置。 因此,您將軸順序從初始[0,1,2]
更改為[0,2,1]
( [stays the same, changes with other, changes with other]
)。
在tensorflow,他們出於某種原因改名為axes
,以perm
。 上面的論點保持不變。
關於圖像,它們與問題中的數組不同。 圖像的x和y通常存儲在前兩個維度中,而通道最后存儲在[y,x,channel]
。
為了在2D換位的意義上“轉置”圖像,交換水平和垂直軸,你需要使用
np.transpose(a, axes=[1,0,2])
(通道保持不變,x和y交換)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.