Python 3.x 以与scipy.misc.imresize或tf.image.Resize相同的方式使用K近邻调整float32数组的大小

Python 3.x 以与scipy.misc.imresize或tf.image.Resize相同的方式使用K近邻调整float32数组的大小,python-3.x,numpy,tensorflow,scipy,image-resizing,Python 3.x,Numpy,Tensorflow,Scipy,Image Resizing,我将使用与pix2pix相同的特性创建一个网络: 我的调整是,我将不使用图像,而是使用float32值的矩阵。这带来了很多问题,还有很多需要重写。大多数代码都可以很容易地重写,但我遇到了一个问题 该网络有一个可分离的卷积层,其中使用tf.image.resize调整图像大小。这个函数使用不同的调整大小方法,比如K-最近邻,我不想失去这个特性。scipy.misc.imresize和tf.image.resize都限制为int值,并且不支持任何高于uint16的值。如果我将数据转换为上述格式,我将

我将使用与pix2pix相同的特性创建一个网络:

我的调整是,我将不使用图像,而是使用float32值的矩阵。这带来了很多问题,还有很多需要重写。大多数代码都可以很容易地重写,但我遇到了一个问题

该网络有一个可分离的卷积层,其中使用tf.image.resize调整图像大小。这个函数使用不同的调整大小方法,比如K-最近邻,我不想失去这个特性。scipy.misc.imresize和tf.image.resize都限制为int值,并且不支持任何高于uint16的值。如果我将数据转换为上述格式,我将失去精度

有没有一种方法可以在numpy或任何等效的支持float32中高效地创建此功能

很抱歉没有介绍任何代码,但我希望这个问题或多或少能解释清楚。

尝试使用scipy.ndimage.interpolation.zoom。这适用于浮点数图像。 按如下方式使用:


image=scipy.ndimage.interpolation.zoomimage,0.5

这是一个很好的解决方案。当我遇到这个问题时,我并没有发现这个问题,所以我最终创建了自己的卷积函数,其中的滤波器定义方式类似于K-最近滤波器。事实证明,简单地将tf.conv与预定义的过滤器一起使用更容易。这样,backprop将不会更新权重,conv层仅作为放大层运行。