2016-09-26 3 views
0

나는 다음과 같은 코드를 실행하고 있습니다 :TensorFlow 예기치 않은 동작이

import tensorflow as tf 

sess = tf.InteractiveSession() 
y = tf.Variable(initial_value=[1,2]) 
sess.run(y, feed_dict={y: [100,2]}) 

을 제공합니다 : 그러나 [100,2]

, 그 이후 :

sess.run(y) 

는 Y의 origianl 값을 제공합니다 : [1,2].

하지 않는 이유는 무엇 :

sess.run(y, feed_dict={y: [100,2]}) 

는 Y의 값을 업데이트하고 저장합니다?

답변

2

feed_dict은 사전의 키 값보다 우선합니다. 설명과

:

sess.run(y, feed_dict={y: [100,2]}) 

현재 계산에 대한 [100, 2]y의 값을 대체 할 tensorflow을 말하는 것입니다. 이것은 과제가 아닙니다. 따라서

다음 호출

sess.run(y) 

원래 변수를 가져 와서 그것을 이용한다.

변수에 값을 할당하려면 tf.assing

을 사용하여이 연산을 계산 그래프에 정의해야합니다
1

피드 사전을 사용하려면 변수 대신 자리 표시자를 초기화하고 출력을 정의하십시오. (질문의 코드와 같은 스타일) 예를 들어

,

import tensorflow as tf 
import numpy as np 

sess = tf.InteractiveSession() 
inputs = tf.placeholder(tf.int32, shape = (2,2)) 
output = tf.matmul(inputs, tf.transpose(inputs)) 

test_input = np.array([[10,2], [4,4]]) 
print test_input.shape 
# (2,2) 

sess.run(output, feed_dict = {inputs : test_input}) 
# array([[104, 48], [48, 32]], dtype=int32) 

그냥 nessuno의 대답에 변수 모양의 값을 변경합니다.