2017-02-03 11 views
1

Я пытаюсь использовать линейную цепь CRF в своей работе. Я воспользовался примером кода использования, приведенным в разделе: https://github.com/tensorflow/tensorflow/tree/r1.0/tensorflow/contrib/crfКак правильно передать начальное значение transition_params в линейной цепочке с тензорным потоком CRF

Мой вопрос заключается в том, как указать начальное значение «transition_params» в «crf_log_likelihood()». Для конкретности примера, скажем, я хочу инициализировать его стандартным случайным нормальным распределением. В api doc я увидел, что «transition_params» может быть передан в качестве входного аргумента. Внутри метода я вижу, что если «pass_params» не передается, он получается путем выполнения «vs.get_variable()» с именем = «переходы».

Должен ли я сделать что-то похожее на это, прежде чем создавать «crf_log_likelieli»? Что-то вроде - transition_params = vs.get_variable («переходы», [num_tags, num_tags], initializer = tf.random_normal_initializer()) - и затем изменить вызов «crf_log_likelihood()» на «log_likeelihood, transition_params = tf.contrib .crf.crf_log_likelihood (unary_scores, y_t, sequence_lengths_t, transition_params) "?

ответ

0

get_variable() В определении crf_log_likelihood() будет создана свежая, случайно инициализированная переменная, представляющая параметры перехода, если вы не предоставите ее самостоятельно. Вам нужно указать явно transition_params, если вы не хотите поведения по умолчанию.

Чтобы понять поведение get_variable(), смотрите здесь:

https://www.tensorflow.org/api_docs/python/state_ops/sharing_variables#get_variable

Надежда, что помогает!

 Смежные вопросы

  • Нет связанных вопросов^_^