2016-02-28 88 views
2

我想從另一個Python腳本調用this main(_) function而不產生新的過程(以便調試更容易)。但是,該函數被編寫爲與命令行參數一起使用。最簡潔的方式是直接從另一個函數調用該函數?不使用命令行訓練Tensorflow模型

+0

這是行嗎? 'import word2vec_o​​ptimized; word2vec_o​​ptimized.main([「你的」,「args」,「這裏」]) – 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