TensorFlow2.0(4):填充与复制

本文详细介绍了TensorFlow2.0中`pad()`和`tile()`两个函数的用法。`pad()`函数用于对张量进行填充,支持CONSTANT、REFLECT和SYMMETRIC三种填充模式。`tile()`函数则用于按维度复制张量,通过设定multiples参数来控制复制次数。
摘要由CSDN通过智能技术生成

1 pad()

tf.pad函数主要是用来对tensor的大小进行扩展,包括水平、垂直、深度(通道)等,方法定义如下:

pad(tensor, paddings, mode=“CONSTANT”, name=None, constant_values=0)

输入参数:

tensor:输入的tensor

paddings:设置填充的大小

mode:填充方式,默认是CONSTANT,还有REFLECT和SYMMETRIC

name:名称

constant_values:CONSTANT填充方式的填充值,默认是0

参数paddings必须是形状为(n, 2)的一个list,这里的n是tensor的秩,也就是维度大小。例如当tensor为一个shape为(12,)的tensor时,paddings必须是形如[[x,y]]的一个list,x表示在第一维度前填充值的个数,y表示在第一维度后填充值的个数:

In [3]: import tensorflow as tf

In [4]: a=tf.range(1,13)

In [5]: a
Out[5]: <tf.Tensor: id=7, shape=(12,), dtype=int32, numpy=array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12])>

In [6]: tf.pad(a,[[3,0]])   # 3表示在第一维度前填充3个0,0表示不填充
Out[6]: <tf.Tensor: id=10, shape=(15,), dtype=int32, numpy=array([ 0,  0,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12])>

当tensor是二维时,paddings必须是shape为(2,2)的list:

In [8]: a=tf.reshape(a,[3,4])

In [9]: a
Out[9]:
<tf.Tensor: id=13, shape=(3, 4), dtype=int32, numpy=
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])>

In [10]: tf.pad(a,[[1,1],[3,0]])  # 第一维度前后各填充一行,第二维度前填充两行,后不填充,填充值为3
Out[10]:
<tf.Tensor: id=16, shape=(5, 7), dtype=int32, numpy=
array([[ 0,  0,  0,  0,  0,  0,  0],
       [ 0,  0,  0,  1,  2,  3,  4],
       [ 0,  0,  0,  5,  6,  7,  8],
       [ 0,  0,  0,  9
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值