ツールのバージョン
tensorflow 2.9
実現したいこと
tf.zerosで以下の階数4のテンソルを作りたい。
batch=3, width=2, height=4, channel=5
発生している問題
公式ガイドでは、以下のコードによって目的のテンソルを作ることができると説明があります。
Python
1rank_4_tensor = tf.zeros([3, 2, 4, 5])
しかし、ローカルで次のコードを実行したところ、期待に反して
batch=3, channel=2, height=4, width=5
のテンソルが出力されているようです。
多くのサイトでは(batch, height, width, channel)の順で説明されているのに対し、
公式ガイドでは、典型的な軸の順序は(batch, width, height, channel)だと書かれています。
正しい宣言の仕方を教えてください。
よろしくお願い致します。
shapeが(3, 2, 4, 5)というデータがあった場合に、どこの次元をchannelとして扱うのかは、そのデータを扱うプログラム側が決めることです
tensorflowは4番目、pytorchは2番目で、tensorflow用なら「5」がchannel数になるので、質問に記載のデータで合ってると思います
https://book-read-yoshi.hatenablog.com/entry/2021/06/07/tensorflow_pytorch_image_data_channel_first_last_change
に、tensorflow用とpytorch用のそれぞれのデータの例があるので、見てください
ありがとうございます。
「プログラム側が決める」というお言葉でchannelの位置に関して納得できました。
widthとheightの順番はtensorflowではどうなっているのか、追加で質問致します。
> widthとheightの順番はtensorflowではどうなっているのか
それも、上のコメントで紹介した参考Webページに書かれてますが、tensorflow, pytorchどちらもheightが先(左)です
【追記】
> 公式ガイドでは、典型的な軸の順序は(batch, width, height, channel)だと書かれています。
その記述よりもずっと上の、「行列, 形状: [3, 2]」と書かれてるところの下の図とか、「3 軸テンソル, 形状: [3, 2, 5]」と書かれてるところの下の図を見てください
行列の「3」とか、3軸テンソルの「2」とか、先に書かれてる方が「height」に見えませんか?
(3軸テンソルの一番右の3次元図を除く)
確かにheightにしか見えないです…
ありがとうございます。
height,widthの定義が違うだけで言っていることは同じ、と理解しました。
https://www.tensorflow.org/api_docs/python/tf/image
の数カ所に「height, width, channels」って書いてあります
https://www.tensorflow.org/guide/tensor
の「典型的な軸の順序」の下の図が間違ってるのではないですかね
回答1件
あなたの回答
tips
プレビュー