博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
tf.pad()
阅读量:6684 次
发布时间:2019-06-25

本文共 3009 字,大约阅读时间需要 10 分钟。

  说一下我理解的tf.pad(),先来看一下定义:

def pad(tensor, paddings, mode="CONSTANT", name=None, constant_values=0):

什么意思呢?目的就是对输入tensor进行扩展,那么扩展的宽度就由paddings来控制了;至于modeconstant_values则表示对tensor扩展时填充的方式。

一维tensor扩展:

import tensorflow as tftensor = tf.constant([[1, 2, 3]])paddings = tf.constant([[1, 2], [3, 4]])result = tf.pad(tensor, paddings)with tf.Session() as sess:    print(sess.run(result))
[[0 0 0 0 0 0 0 0 0 0] [0 0 0 1 2 3 0 0 0 0] [0 0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0]]

从输出结果可以看出,对一维矩阵[[1, 2, 3]](其实还是二维的)四个方向进行扩展,paddings=[[1, 2], [3, 4]]分别就对应着上、下、左、右四个边界扩展的宽度;

二维tensor扩展:

import tensorflow as tftensor = tf.constant([[1, 2], [3, 4]])paddings = tf.constant([[1, 2], [3, 4]])result = tf.pad(tensor, paddings)with tf.Session() as sess:    print(sess.run(result))
[[0 0 0 0 0 0 0 0 0] [0 0 0 1 2 0 0 0 0] [0 0 0 3 4 0 0 0 0] [0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0]]

同上;

三维tensor扩展:

import tensorflow as tftensor = tf.constant([[[1, 2, 3], [3, 4, 5]], [[5, 6, 7], [7, 8, 9]]]) # shape: (2, 2, 3)paddings = tf.constant([[1, 2], [3, 4], [5, 6]])result = tf.pad(tensor, paddings)with tf.Session() as sess:    print(tensor.shape) # shape: (2, 2, 3)    print(sess.run(result))     print(result.shape)  # shape: (5, 9, 14)

输出结果如下:

paddings是一个\(3\times 2\)的矩阵,第一行[1, 2]表示对tensor的第一个维度进行扩展;第二行[3, 4]tensor的第二个维度进行扩展;第三行[5, 6]tensor的第三个维度进行扩展;

  可以看到,paddings的要求都是\(N\times 2\)的矩阵,其中\(N\)可能就是与tensor的维度相关了吧。

[[[0 0 0 0 0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0 0 0 0 0]] [[0 0 0 0 0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 1 2 3 0 0 0 0 0 0]  [0 0 0 0 0 3 4 5 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0 0 0 0 0]] [[0 0 0 0 0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 5 6 7 0 0 0 0 0 0]  [0 0 0 0 0 7 8 9 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0 0 0 0 0]] [[0 0 0 0 0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0 0 0 0 0]] [[0 0 0 0 0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0 0 0 0 0]  [0 0 0 0 0 0 0 0 0 0 0 0 0 0]]]

参数mode

tf.pad()方法提供了三种填充tensor的方式:

  • mode="CONSTNAT", constant_values=0: 默认,以常数值0来填充;
  • mode="REFLECT"
  • mode="SYMMETRIC"

不同modetensor的shape有着不同的要求。

转载于:https://www.cnblogs.com/chenzhen0530/p/10816149.html

你可能感兴趣的文章
sqlplus用户登录
查看>>
更轻松的获取APK文件安装时间
查看>>
Web标准中用于改善Web应用程序性能的各种方法总结
查看>>
航电ACM step1.2.3 Box of bricks
查看>>
[学习笔记]矩阵求逆
查看>>
phpMyAdmin 登陆需要密码
查看>>
zookeeper实现队列_Queue
查看>>
转 delete 和 delete []的真正区别
查看>>
outline
查看>>
爬取json Swaggerui界面
查看>>
Windows 8 应用开发 - 异步调用
查看>>
javaScript引入方式
查看>>
[摘录]验证视图MAC失败 Validation of ViewState MAC Failed
查看>>
Cocos2D-X屏幕适配新解
查看>>
asp.net mvc生命周期学习
查看>>
C++ explicit关键字避免隐式转换
查看>>
JS判断IE,FF,Opera,Safari等浏览器类型
查看>>
C++读取文件,将文件内容读取到struct中
查看>>
构建之法阅读笔记02
查看>>
HDU 1212 Big Number 【大数求余模拟】
查看>>