Caffe 中的 Embed 层采用什么类型的输入?它是否需要已经以一种热门形式编码的单词?
假设,N = 输入句子中的单词数;M = 词汇量
那么单个句子的一个热向量将是 N x M 阶
这是否意味着输入的 dim 参数将为 N?
最后应该以什么格式保存句子,以便 Caffe 嵌入层可以正确读取?
Caffe 中的 Embed 层采用什么类型的输入?它是否需要已经以一种热门形式编码的单词?
假设,N = 输入句子中的单词数;M = 词汇量
那么单个句子的一个热向量将是 N x M 阶
这是否意味着输入的 dim 参数将为 N?
最后应该以什么格式保存句子,以便 Caffe 嵌入层可以正确读取?
请参阅"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 # output dimension
input_dim: 1000
}
}
请注意, 的数据"compact_one_hot_dim1000"
应为 (0..999) 范围内的整数。
有关更多信息,请参阅caffe.help。