retvec是下一代文本矢量化器,旨在使用具有相似性學習的訓練的穩健單詞嵌入式,可提供高效,多語言和提供內置的對抗性彈性。您可以在這裡閱讀論文。
RETVEC受過訓練,可以抵抗角色級別的操作,包括插入,缺失,錯別字,同義,leet替換等等。 RETVEC模型是在新型字符編碼器之上訓練的,該編碼器可以有效地編碼所有UTF-8字符和單詞。因此,retvec在不需要查找表或固定詞彙尺寸的情況下,在100多種語言上開箱即用。此外,RETVEC是一個層,這意味著可以將其插入任何TF模型,而無需單獨的預處理步驟。
RETVEC的速度和尺寸(〜200K而不是數百萬個參數)也使其成為設備和Web用例的絕佳選擇。它通過TensorFlow文本中的自定義OPS在Tensorflow Lite中本地支持,我們提供了RETVEC的JavaScript實現,該實現使您可以通過TensorFlow.js部署Web模型。
請參閱我們的示例Colabs,介紹如何開始使用RETVEC培訓自己的模型。 Train_retvec_model_tf.ipynb是使用RETVEC訓練TF模型的絕佳起點。
要查看Retvec的行動,請訪問我們的演示。
您可以使用pip安裝最新的TensorFlow版本RETVEC:
pip install retvecRETVEC已在Tensorflow 2.6+和Python 3.8+上進行了測試。
您可以將RETVEC用作任何Tensorflow模型中的矢量化層,僅具有一行代碼。 RETVEC在RAW字符串上運行,並具有預處理選項(例如下部文本)。例如:
import tensorflow as tf
from tensorflow . keras import layers
# Define the input layer, which accepts raw strings
inputs = layers . Input ( shape = ( 1 , ), name = "input" , dtype = tf . string )
# Add the RETVec Tokenizer layer using the RETVec embedding model -- that's it!
x = RETVecTokenizer ( sequence_length = 128 )( inputs )
# Create your model like normal
# e.g. a simple LSTM model for classification with NUM_CLASSES classes
x = layers . Bidirectional ( layers . LSTM ( 64 , return_sequences = True ))( x )
x = layers . Bidirectional ( layers . LSTM ( 64 ))( x )
outputs = layers . Dense ( NUM_CLASSES , activation = 'softmax' )( x )
model = tf . keras . Model ( inputs , outputs )然後,您可以像往常一樣編譯,訓練和保存模型!正如我們的論文所證明的那樣,使用RETVEC訓練的模型對對抗性攻擊和錯別字以及計算有效的效果更具彈性。 RETVEC還提供TFJ和TF Lite的支持,非常適合在設備上的移動設備和Web用例中。
詳細的RETVEC示例可在筆記本電腦下找到。這些是開始使用RETVEC的好方法。您可以通過單擊Google Colab按鈕在Google Colab中運行筆記本。如果這些示例都不類似於您的用例,請告訴我們!
我們有以下示例Colabs:
如果您在研究中使用RETVEC,請引用此參考:
@article { retvec2023 ,
title = { RETVec: Resilient and Efficient Text Vectorizer } ,
author = { Elie Bursztein, Marina Zhang, Owen Vallis, Xinyu Jia, and Alexey Kurakin } ,
year = { 2023 } ,
eprint = { 2302.09207 }
}為了為該項目做出貢獻,請查看貢獻指南。謝謝你!
這不是官方的Google產品。