Универсальный кодировщик предложений TF Hub Тонкая настройка схожести предложений

Я работаю над тонкой настройкой модели USE v4 от tf hub. Используемый набор данных представляет собой пару предложений с целевой меткой [0,1].

Ниже мой код,

model = tf.keras.models.Sequential()
model.add(hub.KerasLayer('https://tfhub.dev/google/universal-sentence-encoder/4', 
                        input_shape=[2,], 
                        dtype=tf.string, 
                        trainable=True))
model.add(tf.keras.layers.Dense(1, activation='sigmoid'))
model.summary()

приводит к ошибке,

ValueError: Shape must be rank 1 but is rank 2 for '{{node text_preprocessor/tokenize/StringSplit/StringSplit}} = StringSplit[skip_empty=true](text_preprocessor/StaticRegexReplace_1, text_preprocessor/tokenize/StringSplit/Const)' with input shapes: [?,2], [].

Было бы здорово, если бы кто-нибудь помог мне понять, где я ошибся.

1 ответ

Как упоминалось в @qmeeus, input_shape должен быть [], или вы можете пропустить указание input_shape все вместе. Так что примерно так:

use_url = "https://tfhub.dev/google/universal-sentence-encoder-large/4"


feature_extractor_layer = hub.KerasLayer(use_url, input_shape=[], trainable=True)
model = tf.keras.Sequential([
    feature_extractor_layer,
    layers.Dense(1, activation='sigmoid')
])

Эта проблема с github может быть полезна.

Чтобы передать пару предложений, вы можете повторно использовать feature_extractor_layer в сиамской сети.

Другие вопросы по тегам