2017-02-21 9 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関数、私はゼロの配列を取得します。

私が望むのは、すべての重さのセットです。しかし何らかの理由で私は分類器の実際の重みの代わりにゼロの配列を得ています。

答えて

1

がちょうどrun関数で重みを評価し、あなたが値でnumpyの配列を取り戻すだろう、はるかに簡単です::

sess.run([x, W, b]) 
単純にやってみてください。
1

変数Wは訓練された重みを参照する必要があります。 sess.run(W)

関連する問題