有好几次我看到了下面的语句:从图中现有变量在TensorFlow中“变量”是什么意思?
究竟是什么意思
tf.get_variable得到?如果一个变量已经存在,为什么我不能通过调用它的名字来重用它(或者“得到它”)。例如,我有一个变量
x
,所以我只是在任何需要它的地方使用这个变量。为什么我应该使用get_variable
来“获取”它(不管它的意思)?
有好几次我看到了下面的语句:从图中现有变量在TensorFlow中“变量”是什么意思?
究竟是什么意思
tf.get_variable得到?如果一个变量已经存在,为什么我不能通过调用它的名字来重用它(或者“得到它”)。例如,我有一个变量
x
,所以我只是在任何需要它的地方使用这个变量。为什么我应该使用get_variable
来“获取”它(不管它的意思)?
如果一个变量已经存在,为什么我不能通过调用它的名称来重新使用它(或“得到它”)。
您可以并且通常在整个模型在一个文件中时完成。但是,这个大型模型可能会被分成不同的源文件和库。在这种情况下,tf.get_variable
只是convenient:“tf.get_variable
还允许您重新使用先前创建的同名变量,从而轻松定义重复使用图层的模型”。
外的现成层和功能tensorflow经常与tf.get_variable
定义他们的变量,例如tf.contrib.crf.crf_log_likelihood
(source code),其允许客户端通过一transitions
矩阵即使crf_log_likelihood
调用是在另一模块中或甚至在第三方代码。
如评论中已经提到的,共享的可能性是另一种用例,因此在图层中深入地编写tf.get_variable
是迈向更好组合性的一步。
你用过'logging'模块吗?例如,我有一个记录器'logger',所以我只需要在任何需要它的地方使用这个变量。但是我也可以使用'logging.getLogger(logger_name)'在多个名称范围内获得'logger'。 – Sraw
如果你还没有,请看看[TensorFlow变量指南](https://www.tensorflow.org/programmers_guide/variables)。 'get_variable'可以根据上下文创建或重用变量,它可以(和'variable_scope'一起)编写创建具有可预测变量名称的子图的函数(请参阅指南中的“共享变量”部分)。 – jdehesa