Я пытаюсь настроить универсальный кодировщик предложений, создав сиамскую сеть с кодировщиком. Я хотел бы обучить веса модуля универсального кодировщика tensorflow_hub во время обучения, но я не уверен, как это сделать с помощью оценщика.
Мои вопросы: если с моей настройкой ниже, используя два hub.text_embedding_column, будет ли она обучать две отдельные сети, а не обучать их, как будто они являются сиамской сетью. Если веса не разделены, как бы я изменил его, чтобы веса были разделены и обучены. Я могу загрузить модули с локальной машины, если это поможет.
def train_and_evaluate_with_module(hub_module, train_module=False):
embedded_text_feature_column1 = hub.text_embedding_column(
key="sentence1", module_spec=hub_module, trainable=train_module)
embedded_text_feature_column2 = hub.text_embedding_column(
key="sentence2", module_spec=hub_module, trainable=train_module)
estimator = tf.estimator.DNNClassifier(
hidden_units=[500, 100],
feature_columns=[embedded_text_feature_column1,embedded_text_feature_column2],
n_classes=2,
optimizer=tf.train.AdagradOptimizer(learning_rate=0.003))
estimator.train(input_fn=train_input_fn, steps=1000)
train_eval_result = estimator.evaluate(input_fn=predict_train_input_fn)
test_eval_result = estimator.evaluate(input_fn=predict_test_input_fn)
training_set_accuracy = train_eval_result["accuracy"]
test_set_accuracy = test_eval_result["accuracy"]
return {
"Training accuracy": training_set_accuracy,
"Test accuracy": test_set_accuracy
}
results = train_and_evaluate_with_module("https://tfhub.dev/google/universal-sentence-encoder-large/3", True)