2017-02-21 5 views
1

간단한 로지스틱 회귀를 구현했습니다. 훈련 알고리즘을 실행하기 전에, 내가 테스트 한하는 (정확하게, 로지스틱 회귀 분석이 구현 내 모든 변수를 초기화 한 후에 내가 0으로 모든 가중치를 초기화 내 무게에 대한 자리 표시 자 ...모델에 의해 생성 된 훈련 된 가중치를 얻는 방법

W = tf.Variable(tf.zeros([784, 10])) 

을 생성 올바르게 실행됩니다.)

for epoch in range(training_epochs): 
    avg_cost = 0 
    total_batch = int(mnist.train.num_examples/batch_size) 
    # loop over all batches 
    for i in range(total_batch): 
     batch_xs, batch_ys = mnist.train.next_batch(batch_size) 
     _, c = sess.run([optimizer, cost], feed_dict={x: batch_xs, y: batch_ys}) 

     # compute average loss 
     avg_cost += c/total_batch 
    # display logs per epoch step 
    if (epoch + 1) % display_step == 0: 
     print("Epoch:", '%04d' % (epoch + 1), "cost=", "{:.9f}".format(avg_cost)) 

제 문제는 모델에 사용 된 가중치를 추출해야합니다. 나는 내가 훈련 무게가 tf.training_variables()에 위치 할 것이라고 생각

var = [v for v in tf.trainable_variables() if v.name == "Variable:0"][0] 
print(sess.run(var[0])) 

pred = tf.nn.softmax(tf.matmul(x, W) + b) # Softmax 
나는 다음과 같은 방법으로 추출 시도

가 ..., 내가 도망 그러나 때 ... 내 모델에 대해 다음을 사용 print 함수는 0의 배열을 얻습니다.

내가 원하는 것은 모든 가중치 집합입니다. 그러나 어떤 이유로 나는 분류 자의 실제 가중치 대신에 0의 배열을 얻고 있습니다.

답변

1

이 훨씬 더 쉽게 그리고 당신은 값으로 NumPy와 배열을 다시 얻을 것이다 : 일을 단순히 시도하십시오

sess.run([x, W, b]) 
1

변수 W은 훈련 된 가중치를 참조해야합니다. 바로 실행 기능 가중치를 평가 sess.run(W)

관련 문제