2017-10-17 5 views
0

나는 탐구했고 Tensorflow의 constant() 함수가 일정한 Tensor (큰 놀람!)를 생성하고 수정 될 수 없다는 것을 알게되었다.수정 Tensorflow 상수 Tensor

하지만 수행 할 때

>>> a = tf.constant(0.0) 
>>> a = a + 1.0 

내가 Tensorflow에 의해 생성 된 오류가 표시되지 않습니다.

나는 이유를 이해하고, a은 새로운 텐서 연산 Add (<tf.Tensor 'add_1:0' shape=() dtype=float32>)이되었습니다.

제 질문은 Tensorflow constant을 수정할 수 있다면 무엇입니까? 그것은 그래프 최적화와 관련이 있습니까? 나는 여기서 사소한 것을 놓치고 있니?

미리 감사드립니다.

+0

이 답변을보십시오 : https://stackoverflow.com/a/2174170/4800086 – Swier

답변

2

예, 여러분은 사소한 것을 놓치고 있습니다.

a = tf.constant(0.0) 

a은 계산 그래프의 상수 노드를 보유하는 python 변수입니다. 그래프에는 이름이 있습니다. 전화 번호는 constant:0입니다.

a = a + 1.0 

a1.0를 사용할 때 여전히 그래프 새로운 상수 노드에 정의 된 노드 constant:0 간의 덧셈 연산을 보유 새로운 파이썬 변수 (과제가 파괴 연산이다)를 자동 생성하는 것이다 (constant_1:0). 당신이 그래프 노드 constant:0의 값을 만지지 하지있어 :

따라서,이 라인에서, 당신은이 add 노드를 유지하게하기 위해 파이썬 변수를 무시하고 있습니다.

실제로 상수는 텐서 흐름이 설명하는 그래프에 정의되어 있으며 변경할 수 없습니다. 대신 변경할 수있는 것은 그래프의 특정 노드를 가리키는 python 변수입니다.

파이썬 변수를 그래프의 노드에 대한 포인터로 생각할 수 있습니다.

+0

아, 이제는 이해가 안됩니다. 나는 "그 이유를 이해합니다. 이제는 새로운 텐서 연산 Add입니다."라는 질문에 Tensorflow 데이터 흐름 그래프와 Python은 두 가지 다른 점을 알지 못했습니다. 감사합니다. –

+0

의도적으로이 오류를 생성하는 방법이 있습니까? –

+0

당신은 어떤 오류를 말하는 겁니까? – nessuno

관련 문제