何が起こっているのか把握しようと時間を費やしていますが、まだこのエラーが発生しています。ここに私が得るエラーはウェイトが存在しないか、tf.get_variable()で作成されていません
ValueError: Variable rnn/multi_rnn_cell/cell_1/basic_lstm_cell/weights does not exist, or was not created with tf.get_variable(). Did you mean to set reuse=None in VarScope?
ここに私のサンプルコードは、誰も私が間違っていることを知っていますか?あなたがそうでなければ
def cell():
return rnn.BasicLSTMCell(n_hidden,forget_bias=0.1)
、単に以下を使用し、セルを再利用する必要がない場合は、再利用する必要がある場合は
x = tf.placeholder(tf.float32,[None,n_steps,n_input])
y = tf.placeholder(tf.float32,[None,n_classes])
weights = {
'out': tf.Variable(tf.random_normal([n_hidden, n_classes]))
}
biases = {
'out': tf.Variable(tf.random_normal([n_classes]))
}
def RNN(x, weights, biases):
x = tf.unstack(x, n_steps, 1)
lstm_cell = rnn.MultiRNNCell([cell() for y in range(2)] , state_is_tuple=True)
# Get lstm cell output
outputs, states = rnn.static_rnn(lstm_cell, x, dtype=tf.float32)
# Linear activation, using rnn inner loop last output
return tf.matmul(outputs[-1], weights['out']) + biases['out']
def cell():
return rnn.BasicLSTMCell(n_hidden,forget_bias=0.1, reuse=True)
pred = RNN(x, weights, biases)
'tf.variable_scope(...)で何をしようとしていますか?両方のLSTM細胞で体重を再利用しようとしていますか?その場合、同じセルオブジェクトを再利用するだけです。そうでなければ、 'tf.variable_scope'を削除してください。これはTFを混乱させるからです(同じ変数スコープの2つのインスタンス化の下でopsを作成しているので、名前が矛盾します)。[here](https://github.com/テンソルフロー/テンソルフロー/ issue/6007#issuecomment-315030061))。 – jdehesa
ありがとう、@jdehesa私はそれなしで試してみましたが、それはまだ同じ問題について不満です。私は私の質問を編集しました。 –
ああ、待って、セルで 'reuse = True'を使っているのを見たことがありませんでした。これは、必要な変数を手前で作成することを前提としています(あるいは 'static_rnn' /' dynamic_rnn'の前回の呼び出しで作成されたもの)。本当に重みを再利用したいのであれば、可能であれば同じセルオブジェクトを再利用するほうが一般的に簡単です(つまり、1つを作成して2つの参照を含むリストを 'MultiRNNCell'に渡す)。ウェイトを再利用したくない場合は、 'reuse = True'を渡さないでください。 – jdehesa