为什么Keras会将路径信息放在变量名的前面?

时间:2018-11-01 04:14:55

标签: python tensorflow keras

我想复制一个Keras变量,并为其分配一个我选择的名称。我发现Keras会将路径信息放在我选择的名称之前。

CommandParameter="{Binding Path=mainTaskbarIcon}"

我不明白为什么路径信息以我复制的张量的名称为前缀,但似乎不以原始张量的名称-orig为前缀。我想知道这种情况发生的原因,或者如何避免。

1 个答案:

答案 0 :(得分:0)

出于我不完全理解的原因,Tensorflow似乎会在变量名的最后一个字符中查找'/',以确保其唯一性-Tensorflow / python / framework / ops.py的第4106-4117行:

try:
  old_stack = self._name_stack
  if not name:  # Both for name=None and name="" we re-set to empty scope.
    new_stack = None
  elif name[-1] == "/":
    new_stack = _name_from_scope_name(name)
  else:
    new_stack = self.unique_name(name)
  self._name_stack = new_stack
  yield "" if new_stack is None else new_stack + "/"
finally:
  self._name_stack = old_stack

因此,在变量名的末尾添加“ /”可消除路径前缀,尽管将“ /”替换为“:0”

>>> orig
<tf.Variable 'conv2d_1/kernel:0' shape=(3, 3, 3, 32) dtype=float32_ref>
>>> cpy = K.variable(K.get_value(orig), name="copy/")
>>> cpy.name
u'copy:0'