Je fais du tagueur de texte en utilisant le RNN dynamique bidirectionnel dans tensorflow. Après avoir maché la dimension de l'entrée, j'ai essayé de lancer une session. il s’agit des éléments de réglage blstm:
fw_lstm_cell = BasicLSTMCell(LSTM_DIMS)
bw_lstm_cell = BasicLSTMCell(LSTM_DIMS)
(fw_outputs, bw_outputs), _ = bidirectional_dynamic_rnn(fw_lstm_cell,
bw_lstm_cell,
x_place,
sequence_length=SEQLEN,
dtype='float32')
et c'est une partie courante:
with tf.Graph().as_default():
# Placehoder Settings
x_place, y_place = set_placeholder(BATCH_SIZE, EM_DIMS, MAXLEN)
# BLSTM Model Building
hlogits = tf_kcpt.build_blstm(x_place)
# Compute loss
loss = tf_kcpt.get_loss(log_likelihood)
# Training
train_op = tf_kcpt.training(loss)
# load Eval method
eval_correct = tf_kcpt.evaluation(logits, y_place)
# Session Setting & Init
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)
# tensor summary setting
summary = tf.summary.merge_all()
summary_writer = tf.summary.FileWriter(LOG_DIR, sess.graph)
# Save
saver = tf.train.Saver()
# Run Epoch
for step in range(Epoch):
start_time = time.time()
feed_dict = fill_feed_dict(KCPT_SET['train'], x_place, y_place)
_, loss_value = sess.run([train_op, loss], feed_dict=feed_dict)
Mais ça me donne l'erreur:
ValueError: Tensor ("Shape: 0", shape = (1,), dtype = int32) doit provenir du même graphique que Tensor ("bidirectional_rnn/fw/fw/stack_2: 0", shape = (1,), dtype = int32).
Aidez-moi s'il vous plaît
TensorFlow stocke toutes les opérations sur un graphique opérationnel. Ce graphique définit les fonctions émises vers où, et les relie entre elles afin qu’il puisse suivre les étapes que vous avez définies dans le graphique pour produire votre sortie finale. Si vous essayez d'entrer un tenseur ou une opération sur un graphique dans un tenseur ou une opération sur un autre graphique, cela échouera. Tout doit être sur le même graphe d'exécution.
Essayez de supprimer with tf.Graph().as_default():
TensorFlow vous fournit un graphique par défaut auquel vous faites référence si vous ne spécifiez pas de graphique. Vous utilisez probablement le graphique par défaut à un endroit et un graphique différent dans votre bloc d’entraînement.
Il ne semble pas y avoir de raison pour laquelle vous spécifiez un graphique par défaut ici et très probablement que vous utilisez des graphiques distincts en cas d'accident. Si vous voulez vraiment spécifier un graphique, vous voudrez probablement le passer en tant que variable et non le définir comme ceci.