我需要調整一些3D數據的大小,例如用於2d數據的tf.image.resize_images
方法。在張量流中調整3D數據的大小,如tf.image.resize_images
我在想我可以嘗試運行tf.image.resize_images
它在一個循環和交換軸,但我認爲必須有一個更簡單的方法。簡單的最近鄰居應該沒問題。
任何想法?它的效果並不理想,但我可以勉強接受的情況下的數據僅僅是0或1,使用這樣的:
tf.where(boolMap, tf.fill(data_im*2, 0), tf.fill(data_im*2), 1)
但我不知道怎麼去boolMap
。會使用tf.while_loop
去超過所有的值大幅降低性能?我覺得它會在GPU上,除非有某種自動循環並行化。
的數據是大小[batch_size, width, height, depth, 1]
預先感謝的張量。
N.B輸出尺寸應該是:
[batch_size, width*scale, height*scale, depth*scale, 1]
我想出了這一點:
def resize3D(self, input_layer, width_factor, height_factor, depth_factor):
shape = input_layer.shape
print(shape)
rsz1 = tf.image.resize_images(tf.reshape(input_layer, [shape[0], shape[1], shape[2], shape[3]*shape[4]]), [shape[1]*width_factor, shape[2]*height_factor])
rsz2 = tf.image.resize_images(tf.reshape(tf.transpose(tf.reshape(rsz1, [shape[0], shape[1]*width_factor, shape[2]*height_factor, shape[3], shape[4]]), [0, 3, 2, 1, 4]), [shape[0], shape[3], shape[2]*height_factor, shape[1]*width_factor*shape[4]]), [shape[3]*depth_factor, shape[2]*height_factor])
return tf.transpose(tf.reshape(rsz2, [shape[0], shape[3]*depth_factor, shape[2]*height_factor, shape[1]*width_factor, shape[4]]), [0, 3, 2, 1, 4])
果然:
到:
我相信最近的鄰居不應該有樓梯 - 套管效應(我故意刪除了顏色)。
哈斯答案工作正常,但是我想知道我的最新錯誤是否有人可以破解它。
什麼是您的3D數據格式? –
這是一個尺寸[batch_size,width,height,depth,1]的張量,類型爲float32,值爲1的5維可能在某個點上變爲3 –
我指的是您使用的是哪種3D數據?深度圖,音量,點雲,... –