Caffe中的Embed层接受什么类型的输入?它是否接受已经编码成独热形式的词语?
假设,N = 输入句子中的词语数量;M = 词汇表大小
那么单个句子的独热向量将是N x M的阶数
这是否意味着输入维度参数将是N?
最后,句子应该以什么格式保存,以便Caffe的Embed层能够正确读取?
回答:
请查看"Embed"
层的文档:
用于学习独热向量输入的“嵌入”层的层。相当于以独热向量作为输入的InnerProductLayer,但为了效率,输入是每列的“热”索引本身。
因此,您的输入不是代表一个词(或一个字符,或一个“项目”)的“热向量”,而是词的紧凑表示:词在词典中的整数索引。
所以,如果您的词典中有M=1000
个词,并且您想学习到100维空间的嵌入:
layer { name: "embed1000_to_100" type: "Embed" bottom: "compact_one_hot_dim1000" top: "embed1000_to_100" embed_param { num_output: 100 # 输出维度 input_dim: 1000 }}
请注意,"compact_one_hot_dim1000"
的数据应该是范围在(0..999)的整数。
有关更多信息,请查看caffe.help。