2017-10-12 119 views
1

有好几次我看到了下面的语句:从图中现有变量在TensorFlow中“变量”是什么意思?

究竟是什么意思

tf.get_variable得到?如果一个变量已经存在,为什么我不能通过调用它的名字来重用它(或者“得到它”)。例如,我有一个变量x,所以我只是在任何需要它的地方使用这个变量。为什么我应该使用get_variable来“获取”它(不管它的意思)?

+0

你用过'logging'模块吗?例如,我有一个记录器'logger',所以我只需要在任何需要它的地方使用这个变量。但是我也可以使用'logging.getLogger(logger_name)'在多个名称范围内获得'logger'。 – Sraw

+1

如果你还没有,请看看[TensorFlow变量指南](https://www.tensorflow.org/programmers_guide/variables)。 'get_variable'可以根据上下文创建或重用变量,它可以(和'variable_scope'一起)编写创建具有可预测变量名称的子图的函数(请参阅指南中的“共享变量”部分)。 – jdehesa

回答

0

如果一个变量已经存在,为什么我不能通过调用它的名称来重新使用它(或“得到它”)。

您可以并且通常在整个模型在一个文件中时完成。但是,这个大型模型可能会被分成不同的源文件和库。在这种情况下,tf.get_variable只是convenient:“tf.get_variable还允许您重新使用先前创建的同名变量,从而轻松定义重复​​使用图层的模型”。

外的现成层和功能tensorflow经常与tf.get_variable定义他们的变量,例如tf.contrib.crf.crf_log_likelihoodsource code),其允许客户端通过一transitions矩阵即使crf_log_likelihood调用是在另一模块中或甚至在第三方代码。

如评论中已经提到的,共享的可能性是另一种用例,因此在图层中深入地编写tf.get_variable是迈向更好组合性的一步。