2017-03-07 8 views
1

私はテンソルフローでゼロからRNNをコーディングして学習しようとしています。私はbasicRNNCellを作成し、それを正しい次元のrnn(データ、入力)と呼ぶ必要があることを理解しました。しかし、次のように寸法誤差が発生しています変数basic_rnn_cell/weightsを共有しようとしましたが、形状エラーが指定されました

ここに私が書いたコードがあります。

x = tf.placeholder(dtype=tf.float32, shape=[2, 4]) # Batchsize: 2, stepsize: 4 
rnn = tf.contrib.rnn.BasicRNNCell(10, reuse=True) 
state = rnn.zero_state(2, dtype=tf.float32) # A matrix of shape [2, 10] 
rnn(x, state) # ERROR OCCURS AT THIS LINE 

with tf.Session() as sess: 
    sess.run(y, feed_dict={x: [[1, 2, 1, 1], [0, 0, 0, 1]]}) 

そして、ここではエラーが私が間違って何をやっている

ValueError: Trying to share variable basic_rnn_cell/weights, but specified shape (14, 10) and found shape (6, 4).

ですか?

答えて

2

あなたはあなたのパラメータに間違ったことをしていると思います。

import tensorflow as tf 
batch_size = 2 
seq_len = 4 
rnn_output_dim = 10 

sess = tf.InteractiveSession() 
x = tf.placeholder(dtype=tf.float32, shape=(batch_size, seq_len)) 
rnn_cell = tf.contrib.rnn.BasicRNNCell(rnn_output_dim) 
state = rnn_cell.zero_state(batch_size, dtype=tf.float32) 
output, state = rnn_cell(x, state) 

sess.run(tf.global_variables_initializer()) 

res = sess.run(output, {x: [[1,2,1,1],[0,0,0,1]]}) 

print(res) 
""" 
array([[ 0.21117647, -0.66317081, 0.89524043, -0.54004282, -0.80074871, 
     0.86230665, -0.77558851, 0.46061009, 0.09429809, 0.17166322], 
     [ 0.42703518, -0.18116307, 0.32701704, 0.02224555, -0.39941645, 
     0.10977989, -0.15780419, 0.41289148, 0.35284221, -0.21626833]], dtype=float32) 
""" 
+0

以前は特定の重み付けを持つ同じ名前のrnnを初期化しました。何とかtfは同じ名前の新しいrnnを再初期化しません。そのエラーが発生しました。とにかく、私の正気を回復してくれてありがとう。 – Yesh

関連する問題