2016-02-28 2 views
2

Я хочу позвонить this main(_) function из другого сценария Python, не создавая новый процесс (чтобы его было легче отлаживать). Однако эта функция записывается для работы с аргументами командной строки. Каким будет самый чистый способ вызова этой функции непосредственно из другой функции?Модель Tensorflow Train без использования командной строки

+0

Это работает? 'import word2vec_optimized; word2vec_optimized.main (["your", "args", "here"]) ' – Nayuki

+1

Я не думаю, что это сработает. Аргумент '_' в основном кажется фиктивным и игнорируется функцией. – Fabian

+0

Вы правы - мое плохое. Интересно, что '_' также перезаписывается в цикле' for'. – Nayuki

ответ

4

Вы можете импортировать FLAGS, а затем определить необходимые аргументы (train_data, eval_data, save_path).

In [13]: from tensorflow.models.embedding.word2vec_optimized import FLAGS 
In [14]: from tensorflow.models.embedding.word2vec_optimized import main 
In [16]: main(_) 
--train_data --eval_data and --save_path must be specified. 
An exception has occurred, use %tb to see the full traceback. 
In [17]: FLAGS.train_data = "this" 
In [18]: FLAGS.eval_data = "that" 
In [19]: FLAGS.save_path = "some_path" 
In [20]: main(_) 
I tensorflow/core/common_runtime/local_device.cc:40] Local device intra op parallelism threads: 8 
+0

Спасибо. Это работает. 'FLAGS' - статическая переменная, поэтому мне нужно быть более осторожным, потому что я хочу последовательно тренировать две разные модели. – Fabian

+0

Кстати, какова ваша рекомендация по сбросу значения флагов (для другого вызова функции)? – Fabian

+0

@Fabian Я думаю, что вы можете просто назначить новые значения позже, и следующий вызов main будет использовать новые значения. Но есть ли причина, по которой вы не просто импортируете Word2Vec, а затем запускаете два экземпляра, передавая свои собственные параметры прямому классу? – antikantian

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