keras 为什么StringLookup会产生额外的标签?

ifsvaxew  于 2022-11-24  发布在  其他
关注(0)|答案(1)|浏览(99)

来自TF文件:“one_hot”:将输入中的每个元素编码到一个数组中,与词汇表的大小相同。

alphabet = set("abcdefghijklmnopqrstuvwxyz")
one_hot_encoder = tf.keras.layers.StringLookup(vocabulary=list(alphabet), output_mode='one_hot')
print(len(alphabet)) #26
print(one_hot_encoder("a").shape) #(27,)

据我所知,它应该编码成26形Tensor,为什么编码成27形Tensor?是否应该有一个额外的标签来表示“无类”?

1sbrub3j

1sbrub3j1#

位置0是为OOV标记(超出词汇表)保留的,如果不想这样,可以将num_oov_indices设置为0:

one_hot_encoder = tf.keras.layers.StringLookup(vocabulary=list(alphabet), num_oov_indices=0, output_mode='one_hot')

相关问题