2017-10-22 5 views

답변

1

기술적으로 모든 변수에 대해 전역 변수 범위가 없습니다. 당신이 당신의 스크립트의 최상위에서

x = tf.Variable(0.0, name='x') 

을 실행하면 변수 범위가없는 새로운 변수 x는 기본 그래프에 생성됩니다.

x = tf.get_variable(name='x') 

가 수행하는 첫 번째 일은 통화 차례로에서 범위를 보이는 현재의 변수 범위을 반환 tf.get_variable_scope() 기능입니다 :

그러나, 상황은 tf.get_variable() 기능에 대해 서로 다른 비트이다 로컬 스택이 스택이 비어이 경우 수 있다는

def get_variable_scope(): 
    """Returns the current variable scope.""" 
    scope = ops.get_collection(_VARSCOPE_KEY) 
    if scope: # This collection has at most 1 element, the default scope at [0]. 
    return scope[0] 
    scope = VariableScope(False) 
    ops.add_to_collection(_VARSCOPE_KEY, scope) 
    return scope 

참고 새로운 범위 간단히 만들어 스택의 상단에 가압된다.

경우 당신이 필요로하는 개체입니다, 당신은 단지 호출하여 액세스 할 수 있습니다

scope = tf.get_variable_scope() 

를 최상위 수준에서, 또는 이미 범위 안에있어 직접하는 경우 ops.get_collection(_VARSCOPE_KEY)로 이동하여. 이것은 정확히 새로운 변수가 tf.get_variable() 함수를 호출하여 얻을 수있는 범위입니다. 쉽게 검사 할 수있는 평범한 클래스 tf.VariableScope입니다.

관련 문제