tf.pad函数功能介绍

tf.pad()函数主要是对张量在各个维度上进行填充,该函数的参数如下所示:

pad(
    tensor,
    paddings,
    mode='CONSTANT',
    name=None
)

其中:

tensor是待填充的张量
paddings指出要给tensor的哪个维度进行填充,以及填充方式,要注意的是paddings的rank必须和tensor的rank相同
mode指出用什么进行填充,’CONSTANT’表示用0进行填充(总共有三种填充方式,本文用CONSTANT予以说明pad函数功能)
name就是这个节点的名字了

二维张量(向量)

测试代码如下:

# 创建一个二维变量,默认执行CONSTANT填充
vct = tf.Variable(tf.ones([3, 4]), name="vct")
# 指定填充方式,
pad1 = np.array([[1, 2], [3, 4]])
# tf.pad进行填充
vct_pad1 = tf.pad(vct, pad1, name='pad_1')
# 创建会话
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    print(sess.run(vct))
    print(sess.run(vct_pad1))

运行结果如下:

这里写图片描述

上图是 print(sess.run(vct))的执行结果,创建了一个3行4列的二维矩阵

这里写图片描述

上图是print(sess.run(vct_pad1)的执行结果,由图可得:
    (1) tensor的维度是n,则pad就有n行,因为pad的每一行负责对tensor的某一个维度进行填充.
    (2) 在二维中,pad的第一行对tensor的行进行填充,[1, 2]中的第一个元素表示在tensor上面填充1行,第二个元素表示在tensor下面填充2行.
    (3) 在二维中,pad的第二行对tensor的列进行填充,[3, 4]中的第一个元素表示在tensor左边填充3列,第二个元素表示在tensor右边填充4列.
修改一下pad中的数字,再看一下效果,体会一下.

张量(三维)

    测试代码如下:

tsr = tf.Variable(tf.ones([2, 3, 4]), name="tsr")
pad2 = np.array([[0, 0], [1, 2], [3, 4]])
tsr_pad2 = tf.pad(tsr, pad2, name='pad_2')

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    print(sess.run(tsr))
    print(sess.run(tsr_pad2))

运行结果如下

这里写图片描述

上图所示的是print(sess.run(tsr))的运行结果,我定义了一个张量维度是[2,3,4],从结果直观理解是,输出讲这个张量处理成了2个向量(3行4列).

这里写图片描述

上图所示是print(sess.run(tsr_pad2))的运行结果,[0,0]表示tensor的第一个维度不填充,后面的跟二维张量填充一样.*

接下来只对tensor的第一维进行填充,看下效果,仍旧是上面的代码,只是吧pad2那一行改为:

pad2 = np.array([[1, 1], [0, 0], [0, 0]])

运行结果如下:

这里写图片描述

很明显,在原来基础上上下各填充了一个全零二维数组,此时tsr的维度变成[4,3,4].

 

参考博客‘:https://blog.csdn.net/yy_diego/article/details/81563160

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值