2016-05-27 4 views
0

私の最初の層のニューロンの重みが変わらないのですか?Tensorflowの最初の層のニューロンの重みは変化しません

私はTensorflow上MNISTネットワーク上のだと私は「推論」機能では、このようなニューロンの重みを取得しようとしました:

def inference(images, hidden1_units, hidden2_units): 

    weights = [] 

    # Hidden 1 
    with tf.name_scope('hidden1'): 
     weights.append(tf.Variable(tf.truncated_normal([IMAGE_PIXELS, hidden1_units], stddev=1.0/math.sqrt(float(IMAGE_PIXELS))))) 
     biases = tf.Variable(tf.zeros([hidden1_units])) 
     hidden1 = tf.nn.relu(tf.matmul(images, weights[0]) + biases) 

    # Hidden 2 
    with tf.name_scope('hidden2'): 
     weights.append(tf.Variable(tf.truncated_normal([hidden1_units, hidden2_units],stddev=1.0/math.sqrt(float(hidden1_units))))) 
     biases = tf.Variable(tf.zeros([hidden2_units])) 
     hidden2 = tf.nn.relu(tf.matmul(hidden1, weights[1]) + biases) 

    # Linear 
    with tf.name_scope('softmax_linear'): 
     weights.append(tf.Variable(tf.truncated_normal([hidden2_units, NUM_CLASSES],stddev=1.0/math.sqrt(float(hidden2_units))))) 
     biases = tf.Variable(tf.zeros([NUM_CLASSES])) 
     logits = tf.matmul(hidden2, weights[2]) + biases 
    return weights, logits 

私は体重の配列を入れて配列を作成します。

私はこのように私の配列を印刷:

print_weights(sess.run(poids)) 

print_weightsはここまで、すべてが大丈夫です

def print_weights(poids): 
    for i in range(len(poids)): 
     print('-- + str(i) + ' --') 
     print(poids[i]) 

です。 しかし、私は最初と最後に重みを表示し、最初の層のニューロンの重みは変更されていません。秒と三分の重量の配列の変化、あなたが見ることができるよう

BEGINNING 

-- 0 -- 

[[ 0.03137168 0.03483023] 
[ 0.01353009 0.00035462] 
[ 0.02957422 -0.01347954] 
..., 
[-0.04083598 0.02377481] 
[-0.05120984 0.00143244] 
[-0.01799158 -0.02219945]] 

-- 1 -- 

[[ 0.68714064] 
[ 0.30847442]] 

-- 2 -- 

[[ 0.87441564 0.09957008 -0.58042473 1.34084558 -0.46372819 -0.19947429 
    -1.46314788 -0.59285629 0.72775543 -0.69785988]] 


END 

-- 0 -- 

[[ 0.03137168 0.03483023] 
[ 0.01353009 0.00035462] 
[ 0.02957422 -0.01347954] 
..., 
[-0.04083598 0.02377481] 
[-0.05120984 0.00143244] 
[-0.01799158 -0.02219945]] 

-- 1 -- 

[[-1.16852498] 
[-0.27643263]] 

-- 2 -- 

[[ 0.98213464 0.12448452 -0.36638314 0.47689819 -0.42525211 -0.13292283 
    -1.29118276 -0.49366322 0.74673325 -0.57575113]] 

はなく、初と 誰かが私を助けてください可能性がなぜ...私は知らないのですか? ありがとう!

答えて

4

私はあなたのコードをトレーニングハーネスに包んで問題なく走らせました。

私はここの問題はあなたのコードではなく、結果の解釈だと思います。 Numpyは最初のカップルと最後のカップルの要素を表示することで、表示した方法で大きな配列を要約します。 (あなたのpoidsリストの要素は、np.array年代です。)あなたが見ている何

は、最初のカップルと最後のカップルの重量要素が変更されていないということですが、あなたの結論は全体の行列が—を変更していないことですですが!

は(だけでなく、いくつかの要素の平均値と標準偏差を印刷する)代わりに要約方法としてこれを使用してみてください:

def print_weights(poids): 
    for i in range(len(poids)): 
    print('-- ' + str(i) + ' --') 
    print(np.mean(poids[i]),np.std(poids[i])) 
+0

確かに、あなたは正しい、私も完全に配列を表示しましたが、配列に784の重みがあるので、私は最初と最後だけを見て、変化しないと信じて...ありがとう! – Liam

関連する問題