2016-02-28 89 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