2017-02-21 4 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)) 

Моя проблема заключается в том, что мне нужно извлечь весы, используемые в модели. Я использовал следующее для моей модели ...

pred = tf.nn.softmax(tf.matmul(x, W) + b) # Softmax 

Я попытался извлекая следующим образом ...

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

Я думал, что обученные веса будет находиться в tf.training_variables(), однако, когда я бегу print Функция, я получаю массив нулей.

Что я хочу, это все наборы весов. Но по какой-то причине я получаю массивы нулей вместо фактических весов классификатора.

ответ

1

гораздо проще, просто оценить весы с функцией запуска и вы получите обратно Numpy массив со значениями:

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

Переменная W должна относиться к обученным весам. Пожалуйста, попробуйте просто делать: sess.run(W)

Смежные вопросы