tensorflow中的pad详解
tensorflow
一个面向所有人的开源机器学习框架
项目地址:https://gitcode.com/gh_mirrors/te/tensorflow
免费下载资源
·
tf.pad 函数
pad ( tensor , paddings , mode = 'CONSTANT' , name = None , constant_values = 0 )
定义在:tensorflow/python/ops/array_ops.py。
参见指南:张量变换>分割和连接
填充张量。
此操作根据您指定的 paddings 来填充一个 tensor。paddings 是一个具有形状 [n, 2] 的整数张量,其中 n 是 tensor 的秩。对于每个输入维度 D,paddings [D, 0] 表示在该维度的 tensor 内容之前要添加多少个值,而 paddings[D, 1] 表示在该维度中的 tensor 内容之后要添加多少值。如果 mode 是 “REFLECT”,那么这两个paddings[D, 0] 和 paddings[D, 1] 不得大于 tensor.dim_size(D) - 1。如果 mode 是 “SYMMETRIC”,那么这两个 paddings[D, 0] 和 paddings[D, 1] 不得大于tensor.dim_size(D)。
输出的每个维度 D 的填充大小是:
paddings[D, 0] + tensor.dim_size(D) + paddings[D, 1]
例如:
# 't' is [[1, 2, 3], [4, 5, 6]].
# 'paddings' is [[1, 1,], [2, 2]].
# 'constant_values' is 0.
# rank of 't' is 2.
pad(t, paddings, "CONSTANT") ==> [[0, 0, 0, 0, 0, 0, 0],
[0, 0, 1, 2, 3, 0, 0],
[0, 0, 4, 5, 6, 0, 0],
[0, 0, 0, 0, 0, 0, 0]]
pad(t, paddings, "REFLECT") ==> [[6, 5, 4, 5, 6, 5, 4],
[3, 2, 1, 2, 3, 2, 1],
[6, 5, 4, 5, 6, 5, 4],
[3, 2, 1, 2, 3, 2, 1]]
pad(t, paddings, "SYMMETRIC") ==> [[2, 1, 1, 2, 3, 3, 2],
[2, 1, 1, 2, 3, 3, 2],
[5, 4, 4, 5, 6, 6, 5],
[5, 4, 4, 5, 6, 6, 5]]
参数:
- tensor:张量。
- paddings:int32 类型的张量。
- mode:取值为 "CONSTANT"、"REFLECT" 或 "SYMMETRIC"(不区分大小写)
- name:操作的名称(可选)。
- constant_values:在 “CONSTANT” 模式下,要使用的标量填充值,必须与 tensor 具有相同类型。
返回:
该函数返回一个张量,与 tensor 具有相同的类型。
可能引发的异常:
- ValueError:模式不是 "CONSTANT"、"REFLECT" 或 "SYMMETRIC" 中的一种时
tf.pad(tensor, paddings, mode="CONSTANT", name=None, constant_values=0):
tensor:就是输入,paddings,就是需要扩张的维度,后面其他的参数的可以不管
tf.pad()就是扩充维度,比如:t=tf.constant([1,2,3])
'''
这是一个一维向量,可以通过print(t.get_shape())看维度
先介绍一个概念,paddings=[a,b,c,d],分别从不同维度加0,
因为是一维向量,所以tf.pad(t,[[1,1]])只能从左右加0输出结果为[[0 1 2 3 0]],
当t=tf.constant([[1,2,3]])时,则是一个二维矩阵,就加了一个[],shape=(1,3)
如果a=[1,1],b=[2,2],则上下加一排0,左右加2排0,结果为
[[0 0 0 0 0 0 0]
[0 0 1 2 3 0 0]
[0 0 0 0 0 0 0]]
在二维上面加0,当c=[1,1],t=tf.constant([[[1,2,3], [2,3,4],[2,1,4]],
[[1,2,3], [2,3,4],[2,1,4]],
[[1,2,3], [2,3,4],[2,1,4]]])
时,即paddings=[[1,1],[2,2],[1,1]]输出为下面所示,shape=(3,3,3)变成了(5,7,5)
'''
import tensorflow as tf
t = tf.constant([[[1, 2, 3], [2, 3, 4], [2, 1, 4]],
[[1, 2, 3], [2, 3, 4], [2, 1, 4]],
[[1, 2, 3], [2, 3, 4], [2, 1, 4]]])
t2 = tf.constant([[1, 2, 3]])
print(t.get_shape)
print(t2.get_shape())
a = tf.pad(t, [[1, 1], [2, 2], [1, 1]])
c = tf.pad(t2, [[1, 1], [2, 2]])
with tf.Session() as sess:
a, c = sess.run([a, c])
print(a)
print(a.shape)
print(c)
GitHub 加速计划 / te / tensorflow
184.55 K
74.12 K
下载
一个面向所有人的开源机器学习框架
最近提交(Master分支:2 个月前 )
a49e66f2
PiperOrigin-RevId: 663726708
2 个月前
91dac11a
This test overrides disabled_backends, dropping the default
value in the process.
PiperOrigin-RevId: 663711155
2 个月前
更多推荐
已为社区贡献8条内容
所有评论(0)