我想复制一个Keras变量,并为其分配一个我选择的名称。我发现Keras会将路径信息放在我选择的名称之前。
CommandParameter="{Binding Path=mainTaskbarIcon}"
我不明白为什么路径信息以我复制的张量的名称为前缀,但似乎不以原始张量的名称-orig为前缀。我想知道这种情况发生的原因,或者如何避免。
答案 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'