一句话理解tf.keras.layers.UpSampling2D

UpSampling2D

UpSampling2D就是对图片数据在高与宽的方向进行数据插值倍增

参数说明
tf.keras.layers.UpSampling2D(
    size=(2, 2), data_format=None, interpolation='nearest', **kwargs
)

参数:
	size: int或者tuple,行与列的采样数,一个int表示两个值都相同。
    data_format: 数据格式。str, 默认"channels_last",还有"channels_first", 表示输入图片格式的通道是在前还是在后。
        一般我们输入的图片格式是[B,H,W,C]通道C是最后面的,因为比如openCV或者plt都是识别通道最后的。
        如果你输入的图片格式是[B,C,H,W]则需要选择"channels_first"
        
    interpolation: 差值方式,str,"nearest"最近采样方式 或者"bilinear" 双直线采样方式,默认"nearest"
        
计算公式

[B,H,W,C] -> size(a,b) = [B,H*a,W*b,C]

案例
import tensorflow as tf	

img = tf.random.normal([5,28,28,3])  # 模拟5张图片输入,每张图片宽高都为28,通道为3
img.shape
#TensorShape([5, 28, 28, 3])

up_img = tf.keras.layers.UpSampling2D(size=(1,2))(img) # 实现行方向(图片高H方向)上采样一次,列方向(图片宽W方向)上采样2次
up_img.shape
#TensorShape([5, 28, 56, 3])


up_img2 = tf.keras.layers.UpSampling2D(size=(2,1))(img) # 实现行方向(图片高H方向)上采样2次,列方向(图片宽W方向)上采样1次
up_img2.shape
#TensorShape([5, 56, 28, 3])
关于interpolation插值方式的简单说明

nearest:最近邻插值(也称为近端插值,或者在某些情况下称为点采样)是一种简单的一维或多维多元插值方法。插值是当给定某空间中非给定点的函数值时,在该点周围(邻近)的点上逼近该函数值的问题 。

bilinear: 在数学中,双线性插值是线性插值的扩展,用于在直线2D网格上插值两个变量(例如xand)的函数。双线性插值首先在一个方向上使用线性插值来执行,然后在另一个方向上再次使用。虽然每个步骤在采样值和位置上都是线性的,但插值作为一个整体在采样位置不是线性的,而是二次的。

注意

Tensorflow把插值的选择方式限定死了,只能选择这nearest和bilinear这两种模式。
其实它本身底层调用函数还支持 Gaussian,Bicubic,Lanczos。不过需要改动源码。

  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值