map函数中的Tensorflow填充



我目前有一个nxm张量的数据集,我需要填充到13xm张量(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.        ]])>

相关内容

  • 没有找到相关文章

最新更新