我正在研究一种自定义方法来对文本文档进行分类。每个文档的形状均为(None,3),其中None表示文档中标记的数量及其变量。然后每个批次将具有形状(无,无,3),其中第一个值表示batch_size。
在我的自定义层之一中,我需要创建一个大小为0的正方形矩阵,该大小等于该文档的标记数。问题是,当实例化图形时,我不知道它将是多少。实际上,每个文档的此数字可能会有所不同。
要使事情变得更加困难,此操作是K.map_fn()的一部分,因此无法创建新的张量。如果我事先知道令牌的数量(假设所有文档的令牌数量都相同),那么K.constant就可以很好地工作。
想法?
答案 0 :(得分:1)
您正在寻找tf.zeros_like
。
x = tf.placeholder(tf.float32, shape=(None, None))
z = tf.zeros_like(x) # zeros the same shape and dtype as x
答案 1 :(得分:0)
您可以使用tf.shape()
轻松获得张量的形状。您还可以按如下所示将其拆分为各个维度:
batch_size, num_tokens, last_dim = tf.unstack(tf.shape(input_tensor))
然后,您可以使用以下变量创建矩阵:
tf.zeros([batch_size, num_tokens] dtype=tf.float32)