2016-09-05 3 views
0

나는 이틀 전에 tensorflow를 배우기 시작했고 tensorflow의 공식 웹 사이트에서 공유 변수를 볼 때 tf.Variable()에 혼란스러워했습니다. 나는 하나 개의 변수를 생성 한 후 다음과 같이tf.variable()이 tensorflow에서 실현 될 때

demo = tf.Variable(tf.random_normal([5, 5, 32, 32]), name="test")

내가 데모 한 번 또는 하나 개의 세션을 시작하고 그래프를 실행 한 후 일부 임의의 숫자로 구성되어 있는지 궁금합니다. 전자의 경우 tf.print()로 표시 할 수없는 이유와 세션이 실행 된 후에 표시 할 수있는 이유는 무엇입니까?

답변

1

Tensorflow가 작동하는 방식이기 때문에.

먼저 변수, 자리 표시 자 및 작업 간의 상호 작용을 설명하는 계산 그래프를 정의합니다. 변수의 초기화는 연산이므로 그래프 설명에 배치됩니다.

무엇을 계산하려면 정의한 그래프를 세션으로 시작해야합니다. 세션이 지정된 장치에 배치되지 않고 선택한 장치가 모든 것을 실행합니다.

  1. tf.random_normal([5, 5, 32, 32]) 그래프에서 동작 노드를 생성하고, 임의의 값으로 채워진 정의 형상 텐서의 세대로 구성

    따라서

    demo = tf.Variable(tf.random_normal([5, 5, 32, 32]), name="test") 
    

    2 개 동작의 정의는 정규 분포로부터 추출된다.

  2. tf.Variable(value, name="test")은 변수 노드 (이름 = test)를 먼저 만들고 변수에 value을 할당하는 작업 노드를 만듭니다.
+0

마찬가지로, ** np **. random_normal를 사용하면 np_array가 반환되며, tensorflow는'tf.convert_to_tensor()'를 호출 한 다음 그 중 tf.constant()를 사용하여 상수를 만듭니다. 값. 이것은 np 배열이 파이썬 랜드에 변수로, 텐쇼 흐름 랜드에 상수 (사용자로부터 숨김)로 존재한다는 점에서 다릅니다. –

+0

당신이 말한 것에 따르면, tf.constant(), tf.Variable() 등과 같은 텐서 흐름의 모든 것은 정의 일 뿐이며, 그 값의 계산은 session.run (XX) runned? – luohao

+0

예 luohao, 예. – nessuno