【问题标题】:Caffe Embed Layer InputsCaffe 嵌入层输入
【发布时间】:2017-08-01 00:20:53
【问题描述】:
Caffe 中的 Embed 层采用什么类型的输入?
它是否需要已经以一种热门形式编码的单词?
假设,N = 输入句子中的单词数; M = 词汇量
那么单个句子的一个热向量将是 N x M 阶
这是否意味着输入的 dim 参数将为 N?
最后应该以什么格式保存句子,以便 Caffe embed 层能够正确读取?
【问题讨论】:
标签:
machine-learning
neural-network
deep-learning
caffe
word-embedding
【解决方案1】:
请看"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。