在使用Java Tensorflow API构造操作时如何应用default和None操作名称?

时间:2017-07-11 13:44:14

标签: java tensorflow

许多操作都有可选/默认名称'争论,但似乎 没有办法使用默认值或避免在何时指定它 使用Java API构造操作。所以我有两个问题:

  1. 构建时是否可以使用默认操作名称?如果是这样,我应该传递给opBuilder方法以使用默认值"范围"范围操作(或任何其他)?
  2. 是否可以不传递名称(Python中没有值)?如果是这样,我应该将什么传递给opBuilder方法?

1 个答案:

答案 0 :(得分:1)

通过"许多操作都有选项/默认'名称'参数",我认为这意味着你正在谈论TensorFlow的Python API,其中像tf.add这样的函数采用了一个名称'参数。

这些情况下的默认值是操作的名称,添加了_<number>等后缀以避免冲突。例如,在Python中:

print(tf.add(1, 1).op.name) # Prints 'Add'
print(tf.add(1, 1).op.name) # Prints 'Add_1'

处理这些&#34;默认&#34;值来自Python包装代码,请参阅:tensorflow/python/framework/ops.py

Java opBuilder没有提供这种便利,您必须明确指定一个与图中现有节点不冲突的名称。

也就是说,正在为每个TensorFlow操作生成包装Java函数的进展,这将导致方便,类似于Python,其中可以省略图中操作的名称。有关详细信息,请参阅https://github.com/tensorflow/tensorflow/issues/7149

长话短说,不,现在你必须明确指定操作名称。解析https://github.com/tensorflow/tensorflow/issues/7149后,用Java生成图表会更方便。

希望有所帮助。