我在网络内部有一个Tensor(batch_size, height, width, depth, channel)
(表示3D体积),需要重新采样。我正在考虑编写一个自定义keras层来完成这一任务。
input = Input()
x = net(input) # another network
x = custom_resample_3d(...)(x)
x = ...
net
的输出是(batch_size, 64, 64, 64, 1)
。我想使用插值将Tensor大小调整为(batch_size, 256, 256, 32, 1)
。
所以我最初的想法是用scipy.ndimage.interpolation.zoom
定制一个keras层。
class MyLayer(Layer):
def __init__(self, output_dim, **kwargs):
self.output_dim = output_dim
super(MyLayer, self).__init__(**kwargs)
def build(self, input_shape):
super(MyLayer, self).build(input_shape) # Be sure to call this at the end
def call(self, x):
return scipy.ndimage.interpolation.zoom(x, ...)
def compute_output_shape(self, input_shape):
return ...
有更好的方法吗?或者我需要将keras tensor
转换为numpy数组,然后将其转换回Tensor?
1条答案
按热度按时间kiz8lqtg1#
如果你还没有在TF中解决这个问题,你可以使用TorchIO库和resample函数来reszie。你需要知道仿射空间来做到这一点。