

tensorflow でCNN等をやっていて、重みの配列を取得したいのですが、どのようにすればよいでしょうか。  
method があるのでしょうか？普通にはできない感じなのですが。。。

例えば、重みの配列を取得  
w1 = 重みの配列を取得(tf.variable ...)  
print （w1)

のようなソースを書きたいです。


CC BY-SA 3.0
2016-08-14T09:03:03.363
28260
2018-02-08T11:16:58.063
8991
question
tensorflow
tensorflow 重みの値を利用して調査に使いたい。


もう解決しているかもしれませんが。

[code]

    v1 = tf.Variable([1,2,3,4])
    sess = tf.Session()
    w1 = sess.run(v1)
    
[/code]

こんな感じで、Variableを取得できませんか？


CC BY-SA 3.0
2016-08-18T04:38:03.240
28348
2016-08-18T08:25:35.160
2016-08-18T08:25:35.160
5008
18507
28260
answer


tensorflowのprintデバッグは、[このスライド](https://wookayin.github.io/tensorflow-talk-
debugging/#24)が参考になると思います。

具体的には、session.runの引数に重みWのテンソルを指定して出力を得る、という手順です。

[code]

     mnist = input_data.read_data_sets(FLAGS.data_dir, one_hot=True)
     x = tf.placeholder(tf.float32, [None, 784])
     W = tf.Variable(tf.zeros([784, 10]))
     b = tf.Variable(tf.zeros([10]))
     y = tf.matmul(x, W) + b
    
     cross_entropy = tf.reduce_mean(
         tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y))
     train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)
    
     sess = tf.InteractiveSession()
     tf.global_variables_initializer().run()
     # Train
     display_step = 1
     for i in range(1000):
         batch_xs, batch_ys = mnist.train.next_batch(100)
         # sess.runに重みのテンソルを指定
         w_out, _ = sess.run([W, train_step], feed_dict={x: batch_xs, y_: batch_ys})
         # weightを出力
         if i % display_step == 0:
             print(w_out)
    
[/code]

参考になれば幸いです。


CC BY-SA 3.0
2017-03-03T12:56:33.447
33075
2017-03-03T12:56:33.447
808
28260
answer