2017-01-10 13 views
-1

tf.contrib.layers.fully_connectedを使用して、次のコードでレイヤーを作成しています。tf.contrib.layers.fully_connectedで作成したレイヤーからウェイトにアクセスするにはどうすればよいですか?

library(tensorflow) 

x <- tf$placeholder(tf$float32, shape(NULL, 784L)) 
logits <- tf$contrib$layers$fully_connected(x, 10L) 
y <- tf$nn$softmax(logits) 
私は sess$run(W)と次のコードブロックで、私と同じように重みをアクセスすることができますどのように

x <- tf$placeholder(tf$float32, shape(NULL, 784L)) 
W <- tf$Variable(tf$zeros(shape(784L, 10L))) 
b <- tf$Variable(tf$zeros(shape(10L))) 
y <- tf$nn$softmax(tf$matmul(x, W) + b) 

注:私はR用TensorFlowを使用していますが、これは.ため$を変更することで、Python用TensorFlowと同じでなければなりません。

答えて

0

テンソルの名前をrun関数に渡します。グラフを調べて、関数からグラフに追加されたテンソルの名前を確認する必要があります。

1

tf$global_variables()を使用して、すべてのグローバル変数のリストを取得できます。理想的な解決策ではありません(名前のない変数のリストを取得するため)が、必要なものを得ることができます。以下の再現可能な例

library(tensorflow) 

datasets <- tf$contrib$learn$datasets 
mnist <- datasets$mnist$read_data_sets("MNIST-data", one_hot = TRUE) 

x <- tf$placeholder(tf$float32, shape(NULL, 784L)) 
logits <- tf$contrib$layers$fully_connected(x, 10L) 

y <- tf$nn$softmax(logits) 
y_ <- tf$placeholder(tf$float32, shape(NULL,10L)) 

cross_entropy <- tf$reduce_mean(-tf$reduce_sum(y_ * tf$log(y), reduction_indices=1L)) 
train_step <- tf$train$GradientDescentOptimizer(0.5)$minimize(cross_entropy) 

sess <- tf$Session() 
sess$run(tf$global_variables_initializer()) 

for (i in 1:1000) { 
    batches <- mnist$train$next_batch(100L) 
    batch_xs <- batches[[1]] 
    batch_ys <- batches[[2]] 
    sess$run(train_step, 
      feed_dict = dict(x = batch_xs, y_ = batch_ys)) 
} 

lst.variables <- sess$run(tf$global_variables()) 
str(lst.variables) 
関連する問題