tf.transpose(a, perm=None, name='transpose')
転置a。パーマに従って寸法を並べ替えます。したがって、このマトリックスを使用して変換する場合:
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
このため、私は混乱しており、2つの質問があります。
_numpy.transpose
_ ドキュメントを見ると、transpose
が引数を取る
axes
:intのリスト、オプション
。
したがって、transpose
のデフォルトの呼び出しは、2Dの場合はnp.transpose(a, axes=[1,0])
に、またはnp.transpose(a, axes=[2,1,0])
に変換されます。
ここで必要な操作は、「深さ」ディメンションを変更しないままにするものです。したがって、Axes引数では、_0
_ th軸である深さ軸を変更しないでおく必要があります。軸_1
_および_2
_(1は垂直軸)は、位置を変更する必要があります。したがって、軸の順序を最初の_[0,1,2]
_から_[0,2,1]
_(_[stays the same, changes with other, changes with other]
_)に変更します。
テンソルフローでは、何らかの理由でaxes
をperm
に名前変更しました。上記の引数は同じままです。
画像に関しては、問題の配列とは異なります。通常、画像の最初の2つの次元にはxとyが格納され、最後のチャネルには_[y,x,channel]
_が格納されます。
水平軸と垂直軸が交換される2D転置の意味で画像を「転置」するには、以下を使用する必要があります。
_np.transpose(a, axes=[1,0,2])
_
(チャネルは同じままで、xとyは交換されます)。