我正在尝试构建一个keras模型,该模型具有多个输入,用于序列标记任务。特别是,我正在喂不同长度的句子,并为句子中的每个标记预计算伯特嵌入。
在预处理步骤中计算伯特嵌入(由1024个浮点数组表示的句子中的每个令牌),然后将每个句子作为格式字典保存:
{'tokens':['The', 'dog', 'barked'],
'BERT_embedding':[[float1,float2,...,float1024],
[float1,float2,...,float1024],
[float1,float2,...,float1024]]}
{'tokens':['A', 'cat', 'purred', 'softly'],
'BERT_embedding':[[float1,float2,...,float1024],
[float1,float2,...,float1024],
[float1,float2,...,float1024],
[float1,float2,...,float1024]]}
对于keras模型,我将令牌作为输入发送,并将输入连接到Word2Vec嵌入层,该层将每个令牌转换为其300维Word2Vec表示。所以在我打印的模型摘要中,我有:
^{pr2}$我需要的建议/帮助是为我预计算的伯特嵌入定义一个输入层,这样我就可以将两个输入合并到一个连接层中,这将是一个类似的:
^{pr3}$我对keras函数API的一些复杂问题仍然相当陌生,特别是在定义具有多个输入的模型时,我还是很新的,我希望得到一些建议。
我的主要困惑来自于每个输入标记,其中包含一个与它关联的BERT_uEmbedderingList对象。
如何构造我的BERT嵌入输入层,以便对于每个输入令牌,我传递与其关联的1024个浮点,而不是列表对象本身(因为keras显然不将list type对象本身作为输入)?
我希望得到正确配置模型输入形状的答案,而不是建议将伯特嵌入作为模型本身的一个层来计算(即,改变输入数据的性质)。我计算并存储伯特嵌入作为预处理步骤,因为我希望我的输入数据可以被其他人使用,即使它们有硬件限制,可能会阻止他们快速计算伯特嵌入本身。
目前没有回答
相关问题 更多 >
编程相关推荐