我目前有一个n
xm
张量的数据集,我需要填充到13
xm
张量(n <= 13
);然而,我不知道如何做到这一点,而不让Tensorflow失去我的张量的形状。
我试图将map
函数应用于这些,但tf.constant
不能接受张量作为填充规范的一部分,并且由于map
的要求,我不能只使用numpy
方法。
def pad_tensor(x):
current_length = tf.shape(x)[0]
additional_length = 13 - current_length
padding = tf.constant([[0, additional_length], [0, 0]])
return tf.pad(x, padding, "CONSTANT")
我知道我可以使用py_func
,但是当我这样做时,tensorflow会失去数据集中数据的形状。
如有任何帮助,不胜感激
PS:我不确定你所说的是什么意思,将map函数应用于这些和,因为map的要求,我不能只使用numpy方法,如果您在以下示例之后仍然有问题,那么请使问题的定义更清楚
FWIW,添加.numpy()
和代码运行没有任何错误:
import tensorflow as tf
import numpy as np
def pad_tensor(x):
current_length = tf.shape(x)[0]
additional_length = 13 - current_length.numpy()
padding = tf.constant([[0, additional_length], [0, 0]])
return tf.pad(x, padding, "CONSTANT")
n = 3
m = 5
x = tf.constant(np.random.rand(n, m))
pad_tensor(x)
输出:
<tf.Tensor: shape=(13, 5), dtype=float64, numpy=
array([[0.35710346, 0.49611589, 0.18744049, 0.91046784, 0.19934265],
[0.51464596, 0.96416921, 0.87008494, 0.52756893, 0.23010099],
[0.05335277, 0.88451633, 0.25949178, 0.91156944, 0.03638372],
[0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0. ]])>