2016-04-19 17 views
6

TensorFlowでは、単純なバイリニアのサイズ変更(整数要素ではない)を行いたいと考えています。例えば、(32,3,64,64)テンソルから始めて、私は64x64のそれぞれが双一次補間を使って1.5の係数で再スケーリングされた(32,3,96,96)テンソルが好きです。それをする最善の方法は何ですか?テンソルフローで双線形にアップサンプリング?

これは、1.5だけでなく、任意の要因> 1をサポートしたいと思います。

注:各64x64での操作は、skimage.transform.rescale (scale=1.5, order=1)と同じになります。

答えて

12

tf.image.resize_imagesが必要です。任意の深さ(チャンネル数)で、3d(単一画像)と4d(画像のバッチ)テンソルの両方を受け入れます。だからうまくいけばうまくいくはずです:

# it's height, width in TF - not width, height 
new_height = int(round(old_height * scale)) 
new_width = int(round(old_width * scale)) 
resized = tf.image.resize_images(input_tensor, [new_height, new_width]) 

双線形補間がデフォルトですので、指定する必要はありません。直接resize_bilinearを使用することもできます。

+1

ありがとう、それは私が探していたものです。 resize_imagesを介してバックプロパゲージすることは可能でしょうか? –

+0

@AlexIこれは可能ですか?サイズ変更をバックプロジェクト? – mattdns

+0

@mattdnsはい、絶対に。線形演算子であるので、サイズ変更を逆行させることができます。 Tensorflowはこれを問題なく実行します。 – RawMean

関連する問題