我想從另一個Python腳本調用this main(_)
function而不產生新的過程(以便調試更容易)。但是,該函數被編寫爲與命令行參數一起使用。最簡潔的方式是直接從另一個函數調用該函數?不使用命令行訓練Tensorflow模型
回答
您可以導入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([「你的」,「args」,「這裏」]) – Nayuki
我不認爲它會起作用。主參數'_'似乎是虛擬的,並被函數忽略。 – Fabian
你是對的 - 我的不好。有趣的是,'_'也被'for'循環覆蓋。 – Nayuki