Deep learning Keras:扩大层输出斑点空间尺寸的方法
什么方法可以用来扩大图层输出blob的空间尺寸 据我从文件中所见,它可以是:Deep learning Keras:扩大层输出斑点空间尺寸的方法,deep-learning,keras,conv-neural-network,convolution,keras-layer,Deep Learning,Keras,Conv Neural Network,Convolution,Keras Layer,什么方法可以用来扩大图层输出blob的空间尺寸 据我从文件中所见,它可以是: 它是否仅在2的幂次下进行上采样? 而且它分别按大小[0]和大小[1]重复数据的行和列。而且它不是很聪明 它可以有任意的输出大小(不是2 upsapple的幂) 如何实现任意维数的双线性插值(可以使用固定权重进行转置?) 还有什么其他选项可以用来扩大图层输出blob的空间尺寸 在上展开,下面是在Keras Lambda层中包裹TensorFlow双线性图像大小调整的完整示例: 从keras导入顺序 从keras.la
分别按大小[0]和大小[1]重复数据的行和列。
而且它不是很聪明从keras导入顺序
从keras.layers导入Lambda
导入tensorflow作为tf
def上采样2双线性(大小):
返回Lambda(Lambda x:tf.image.resize_双线性(x,size,align_corners=True))
上取样器=顺序([UpSampling2DBilinear((256,256)))
upsampled=upsampler.predict(图像)
请注意,align_corners=True
可获得与其他双线性图像上采样算法类似的性能,如中所述
要使用双三次重采样,请创建一个新函数并将resize\u bilinear
替换为resize\u bicubic
对于更类似于UpSampling2D的实现,请尝试以下操作:
从keras导入后端为K
def上采样2双线性(步幅,**kwargs):
def层(x):
输入形状=K.int形状(x)
输出形状=(步幅*输入形状[1],步幅*输入形状[2])
返回tf.image.resize\u双线性(x,输出\u形状,对齐\u角=真)
返回Lambda(层,**kwargs)
这将允许您使用
name='
,input\u shape='
和Lamba
的其他参数,并允许您传递整数步长/上采样量。您可以定义自己的调整层:
from keras import layers, models, utils
from keras.backend import tf as ktf
class Interp(layers.Layer):
def __init__(self, new_size, **kwargs):
self.new_size = new_size
super(Interp, self).__init__(**kwargs)
def build(self, input_shape):
super(Interp, self).build(input_shape)
def call(self, inputs, **kwargs):
new_height, new_width = self.new_size
resized = ktf.image.resize_images(inputs, [new_height, new_width],
align_corners=True)
return resized
def compute_output_shape(self, input_shape):
return tuple([None, self.new_size[0], self.new_size[1], input_shape[3]])
def get_config(self):
config = super(Interp, self).get_config()
config['new_size'] = self.new_size
return config
没有内置的方法可以做到这一点。如果您使用的是TF后端,您可以使用它并将其包装在Keras Lambda层中。Zeropadding呢?