Я хочу позвонить this main(_)
function из другого сценария Python, не создавая новый процесс (чтобы его было легче отлаживать). Однако эта функция записывается для работы с аргументами командной строки. Каким будет самый чистый способ вызова этой функции непосредственно из другой функции?Модель Tensorflow Train без использования командной строки
ответ
Вы можете импортировать 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
Спасибо. Это работает. 'FLAGS' - статическая переменная, поэтому мне нужно быть более осторожным, потому что я хочу последовательно тренировать две разные модели. – Fabian
Кстати, какова ваша рекомендация по сбросу значения флагов (для другого вызова функции)? – Fabian
@Fabian Я думаю, что вы можете просто назначить новые значения позже, и следующий вызов main будет использовать новые значения. Но есть ли причина, по которой вы не просто импортируете Word2Vec, а затем запускаете два экземпляра, передавая свои собственные параметры прямому классу? – antikantian
Это работает? 'import word2vec_optimized; word2vec_optimized.main (["your", "args", "here"]) ' – Nayuki
Я не думаю, что это сработает. Аргумент '_' в основном кажется фиктивным и игнорируется функцией. – Fabian
Вы правы - мое плохое. Интересно, что '_' также перезаписывается в цикле' for'. – Nayuki