1. ホーム
  2. tensorflow

[解決済み】Tensorflow: tf.expand_dimsはいつ使う?

2022-02-03 08:10:04

質問

Tensorflowのチュートリアルには、以下のものがあります。 tf.expand_dims を使用して、テンソルに "batch dimension" を追加します。この関数のドキュメントを読んだが、私にはまだ謎である。どなたか、どのような状況でこれを使わなければならないか、正確にご存じでしょうか?

私のコードは以下の通りです。私の意図は、予測されたビンと実際のビンの間の距離に基づいて損失を計算することです。(例:もし predictedBin = 10truthBin = 7 では binDistanceLoss = 3 ).

batch_size = tf.size(truthValues_placeholder)
labels = tf.expand_dims(truthValues_placeholder, 1)
predictedBin = tf.argmax(logits)
binDistanceLoss = tf.abs(tf.sub(labels, logits))

この場合 tf.expand_dimspredictedBinbinDistanceLoss ? よろしくお願いします。

解決方法は?

expand_dims はテンソルの要素を追加したり削減したりせず、ただ単に 1 を次元に追加します。例えば、10個の要素を持つベクトルは、10x1の行列として扱うことができます。

を使う場面に出くわしたことがあります。 expand_dims は、グレースケール画像を分類するためにConvNetを構築しようとしたときです。グレースケール画像は,サイズ [320, 320] . しかし tf.nn.conv2d は、入力が [batch, in_height, in_width, in_channels] を使用する場合、その in_channels ディメンジョンが私のデータでは欠落しており、この場合、次のようになるはずです。 1 . そこで、私は expand_dims を追加して、もう1つの次元を追加しました。

あなたの場合、この機能は必要ないと思います。 expand_dims .