Ich habe es im Beispielcode für Anfänger von TensorFlow RNN geschrieben (Versuchen Sie RNN von TensorFlow mit einem Basismodell), aber die Version von TensorFlow wurde aktualisiert. Es gibt einige Teile, die stecken bleiben, deshalb werde ich sie kurz zusammenfassen.
OSX python 3.5 TensorFlow r0.11
import
Bei der Durchführung von RNN-bezogenen Inports bis zu Version 0.8
from tensorflow.models.rnn import rnn, rnn_cell
Aufgrund eines Problems im Zusammenhang mit dem Umpacken
ImportError: This module is deprecated. Use tf.nn.rnn_* instead.
Ich bekomme den Fehler.
Daher wird der Importteil von rnn und rnn_cell gelöscht, und der Teil, der rnn und rnn_cell verwendet, wird gelöscht.
# rnn_cell.BasicLSTMCell( ->
tf.nn.rnn_cell.BasicLSTMCell(...
# rnn( ->
tf.nn.rnn(...
Bitte ändern Sie es in.
BasicLSTMCell
Auch wenn Sie den obigen Fehler beheben
cell = tf.nn.rnn_cell.BasicLSTMCell(
num_of_hidden_nodes, forget_bias=forget_bias)
rnn_output, states_op = tf.nn.rnn(cell, in4, initial_state=istate_ph)
In dem Teil wie
TypeError: 'Tensor' object is not iterable.
Kann geworfen werden.
Dies liegt daran, dass sich das Standardargument von `` BasicLSTMCell``` geändert hat und das
`state_is_tuple``` bestimmt, ob der Tupeltyp zugelassen oder kombiniert werden soll, wenn sich das Rückgabewertformat von False in True geändert hat. Denn es ist.
Daher, wenn es der obige Code ist
cell = tf.nn.rnn_cell.BasicLSTMCell(
num_of_hidden_nodes, forget_bias=forget_bias, state_is_tuple=False)
rnn_output, states_op = tf.nn.rnn(cell, in4, initial_state=istate_ph)
Und state_is_tuple = False
sollte im Argument von BasicLSTMCell
angegeben werden.
Diesbezüglich heißt es jedoch im offiziellen Dokument, dass es bald abgeschafft wird. Eventuell muss der Schreibstil erneut geändert werden.