gpt4 book ai didi

python - 嵌入前的 Keras Lambda 层 : Use to Convert Text to Integers

转载 作者:行者123 更新时间:2023-12-01 08:53:59 25 4
gpt4 key购买 nike

我目前有一个使用Embedding层的keras模型。像这样的事情:

input = tf.keras.layers.Input(shape=(20,) dtype='int32')
x = tf.keras.layers.Embedding(input_dim=1000,
output_dim=50,
input_length=20,
trainable=True,
embeddings_initializer='glorot_uniform',
mask_zero=False)(input)

这很棒并且按预期工作。但是,我希望能够将文本发送到我的模型,让它将文本预处理为整数,然后正常继续。

两个问题:

1) Keras 文档说嵌入层只能用作模型中的第一层:https://keras.io/layers/embeddings/

2)即使我可以在嵌入之前添加一个Lambda层,我也需要它来跟踪某些状态(例如将特定单词映射到的字典)整数)。我该如何进行这种有状态的预处理?

简而言之,我需要修改底层 Tensorflow DAG,因此当我保存模型并上传到 ML Engine 时,它​​将能够处理我发送的原始文本。

谢谢!

最佳答案

以下是使用字符串输入的模型的前几层:

input = keras.layers.Input(shape=(1,), dtype="string", name='input_1')
lookup_table_op = tf.contrib.lookup.index_table_from_tensor(
mapping=vocab_list,
num_oov_buckets=num_oov_buckets,
default_value=-1,
)
lambda_output = Lambda(lookup_table_op.lookup)(input)
emb_layer = Embedding(int(number_of_categories),int(number_of_categories**0.25))(lambda_output)

然后您可以像平常在嵌入层之后一样继续模型。这对我来说很有效,模型可以从字符串输入中很好地训练。

建议您在某些预处理步骤中进行 string -> int 转换,以加快训练过程。然后,在训练模型后,您创建第二个 keras 模型,该模型仅转换 string -> int,然后组合两个模型以获得完整的 string -> 目标模型。

关于python - 嵌入前的 Keras Lambda 层 : Use to Convert Text to Integers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52899988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com