有没有更快的方法将句子转换为 TFHUB 嵌入?

Is there a faster way to convert sentences to TFHUB embeddings?

所以我参与了一个项目,该项目涉及将文本嵌入和图像向量的组合输入 DNN 以得出结果。现在对于词嵌入部分,我使用的是 TFHUB 的 Electra,而对于图像部分,我使用的是 NASNet 移动网络。

然而,我面临的问题是,虽然 运行 词嵌入部分,使用下面显示的代码,代码只是保持 运行 不间断。现在已经 2 个多小时了,我的训练数据集只有 14900 行推文。

注意 - 该函数的输入只是 14900 条推文的列表。

tfhub_handle_encoder="https://tfhub.dev/google/electra_small/2" 
tfhub_handle_preprocess="https://tfhub.dev/tensorflow/bert_en_uncased_preprocess/3

# Load Models 
bert_preprocess_model = hub.KerasLayer(tfhub_handle_preprocess) 
bert_model = hub.KerasLayer(tfhub_handle_encoder)

def get_text_embedding(text):

  preprocessing_layer = hub.KerasLayer(tfhub_handle_preprocess, name='Preprocessor')   
  encoder_inputs = preprocessing_layer(text)   encoder = 
  hub.KerasLayer(tfhub_handle_encoder, trainable=True, name='Embeddings')   outputs = 
  encoder(encoder_inputs)   text_repr = outputs['pooled_output']   text_repr = 
  tf.keras.layers.Dense(128, activation='relu')(text_repr)

  return text_repr

text_repr = get_text_embedding(train_text)

是否有使用这些模型更快地获得文本表示的方法?

感谢您的帮助!

代码中执行的运算本质上是二次运算。虽然我设法在几分钟内用 10000 个样本执行了您的代码片段,但 32GB RAM 运行时的 14900 长输入 运行 内存不足。您的运行时是否可能正在经历交换?

尚不清楚代码段试图实现的目标。你打算训练模型吗?在这种情况下,您可以将 text_input 定义为输入层并使用 fit 进行训练。这是一个例子:https://www.tensorflow.org/text/tutorials/classify_text_with_bert#define_your_model