Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Numpy 填充和屏蔽批处理数据集_Numpy_Tensorflow_Tensorflow2.0_Tensorflow Datasets - Fatal编程技术网

Numpy 填充和屏蔽批处理数据集

Numpy 填充和屏蔽批处理数据集,numpy,tensorflow,tensorflow2.0,tensorflow-datasets,Numpy,Tensorflow,Tensorflow2.0,Tensorflow Datasets,表示自然语言的多个字符串时,每个字符串中的字符数可能不相等。然后,返回结果可以放在a中,其中最内层维度的长度取决于每个字符串中的字符数: rtensor=tf.ragged.constant([ [1, 2], [3, 4, 5], [6] ]) 传感器 # 反过来,应用方法将RaggedTensor转换为常规tf.Tensor,然后应用填充操作: batch\u size=3 最大长度=8 tensor=r传感器。to_tensor(默认值=0,形状=(批次大小,最大长度)) # 现在,

表示自然语言的多个字符串时,每个字符串中的字符数可能不相等。然后,返回结果可以放在a中,其中最内层维度的长度取决于每个字符串中的字符数:

rtensor=tf.ragged.constant([
[1, 2], 
[3, 4, 5],
[6]
])
传感器
#
反过来,应用方法将
RaggedTensor
转换为常规
tf.Tensor
,然后应用填充操作:

batch\u size=3
最大长度=8
tensor=r传感器。to_tensor(默认值=0,形状=(批次大小,最大长度))
#
现在,有没有一种方法可以生成一个附加张量,显示什么是原始数据,什么是填充?对于上面的例子,它将是:


正如建议的那样,您只需检查非零值即可。它可以简单地转换为布尔值并返回

将tensorflow导入为tf
R传感器=tf.不规则常数([[1,2],
[3, 4, 5],
[6]])
批量大小=3
最大长度=8
tensor=r传感器。to_tensor(默认值=0,形状=(批次大小,最大长度))
mask=tf.dtypes.cast(tf.dtypes.cast(tensor,tf.bool),tensor.dtype)
打印(mask.numpy())
# [[1 1 0 0 0 0 0 0]
#  [1 1 1 0 0 0 0 0]
#  [1 0 0 0 0 0 0 0]]
唯一可能的缺点是您最初可能有
0
值。在转换为张量时,如果知道数据总是非负的,可以使用其他值作为默认值,例如
-1

tensor=rtensor.to_tensor(默认值=-1,形状=(批次大小,最大长度))
掩码=tf.dtypes.cast(张量>=0,张量.dtype)
但是如果你想让你的面具为你拥有的任何值工作,你也可以使用粗糙张量:

rtensor\u ones=tf.ones\u like(rtensor)
mask=r传感器,到张量(默认值=0,形状=(批量大小,最大长度))

这样,
mask
将始终是传感器有值的地方。

tf.math.not_equal(tensor,0)
?谢谢@jdehesa和@thushv89。这个解决方案非常有趣,因为我有一个很大的数据集要标记。