Je passe des jours à essayer de comprendre ce qui se passe et je reçois toujours cette erreur. voici l'erreur que je reçoispoids n'existe pas, ou n'a pas été créé avec 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?
Et voici mon exemple de code, est-ce que quelqu'un sait ce que je fais mal?
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)
Qu'est-ce que vous essayez de faire avec 'tf.variable_scope (...)'? Essayez-vous de réutiliser les poids dans les deux cellules LSTM? Dans ce cas, vous devez simplement réutiliser le même objet de cellule. Sinon, il suffit de supprimer le 'tf.variable_scope', car il est source de confusion TF (vous créez des ops sous deux instanciations de la même portée variable, ce qui entraîne une dénomination incohérente, par exemple voir [ici] (https://github.com/ tensorflow/tensorflow/numéros/6007 # emissionecomment-315030061)). – jdehesa
merci, @jdehesa j'ai essayé sans elle mais il se plaint encore du même problème. J'ai édité ma question. –
Ah, attends, je n'ai pas vu que tu utilisais 'reuse = True' dans la cellule. Cela vous attend pour créer les variables nécessaires avant main (ou les avoir créées avec un appel préalable à 'static_rnn' /' dynamic_rnn'). Si vous voulez vraiment réutiliser les poids, il est généralement plus facile de réutiliser le même objet de cellule si possible (c.-à-d. En créer un et transmettre une liste avec deux références à 'MultiRNNCell'). Si vous ne voulez pas réutiliser les poids, alors _not_ passe 'reuse = True'. – jdehesa