2017-01-24 2 views
6

다음과 같이 선형 모델을 가지고 있으므로 W와 b와 관련하여 그라디언트 벡터를 얻고 싶습니다.tf.gradients가 TensorFlow에서 작동하는 방법

# tf Graph Input 
X = tf.placeholder("float") 
Y = tf.placeholder("float") 

# Set model weights 
W = tf.Variable(rng.randn(), name="weight") 
b = tf.Variable(rng.randn(), name="bias") 

# Construct a linear model 
pred = tf.add(tf.mul(X, W), b) 

# Mean squared error 
cost = tf.reduce_sum(tf.pow(pred-Y, 2))/(2*n_samples) 

그러나 나는 비용이 cost(x,y,w,b)의 함수 같은 것을 시도하고 나는 단지 w and b에 대한 그라디언트하려면 다음

grads = tf.gradients(cost, tf.all_variable()) 

내 자리도 포함됩니다 (X 및 Y) . [x,y,w,b]으로 그래디언트를 얻더라도 각 매개 변수에 속하는 요소가 그라디언트의 각 요소에 속하는지는 어떻게 알 수 있습니까? 매개 변수가 파생 된 이름이없는 목록 일 뿐이므로?

이 질문에서 나는이 code의 일부를 사용하고 있습니다. 나는 this 질문을 만들었습니다.

+0

이것은 http://stats.stackexchange.com – Sentry

+6

에 가야한다 @ 센트 나는 동의하지 않는다, 이것은 여기에 속한다. – Priyatham

+0

@Priyatham 당신 말이 맞아요, 너무 성급했습니다 – Sentry

답변

16

YS의 w.r.t.의 합 tf.gradients

구축해 기호 편미분 용 문서를 인용 x in xs.

그래서,이 작동한다 : 여기서

dc_dw, dc_db = tf.gradients(cost, [W, b]) 

tf.gradients()cost WRT 같은 순서 목록으로서 제 2 인수 각각 텐서의 기울기를 반환한다.

자세한 내용은 tf.gradients을 참조하십시오.

+0

작은 예제 덕분에 모든 차이를 만들 수 있습니다! – user3139545

+0

링크가 더 이상 작동하지 않습니다. – suku

+0

@suku https://www.tensorflow.org/api_docs/python/tf/gradients – Bolboa

관련 문제