tf.pad函数功能介绍

     刚接触tensorflow好多都不懂,今天遇到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].

    pad函数的功能,我只是简单测试记录了一下,写的不全或者有错误的地方还望见谅~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值