python - 模块“tensorflow.contrib.seq2seq”没有属性“simple_decoder_fn_train”
问题描述
使用 tensorflow 1.13.1 时收到此错误消息。关于问题是什么的任何想法?
错误信息
AttributeError Traceback (most recent call last)
<ipython-input-40-32a0c216e33b> in <module>
12 tf.reverse(input_data, [-1]), targets, keep_prob, batch_size, sequence_length, len(source_vocab_to_int),
13 len(target_vocab_to_int), encoding_embedding_size, decoding_embedding_size, rnn_size, num_layers,
---> 14 target_vocab_to_int, attn_length)
15
16 # Create a tensor to be used for making predictions.
<ipython-input-38-ae61a93c0a57> in seq2seq_model(input_data, target_data, keep_prob, batch_size, sequence_length, source_vocab_size, target_vocab_size, enc_embedding_size, dec_embedding_size, rnn_size, num_layers, vocab_to_int, attn_length)
13 train_logits, infer_logits = decoding_layer(dec_embed_input, dec_embeddings, enc_state, target_vocab_size+1,
14 sequence_length, rnn_size, num_layers, vocab_to_int, keep_prob,
---> 15 attn_length)
16
17 return train_logits, infer_logits
<ipython-input-37-aea2a940da68> in decoding_layer(dec_embed_input, dec_embeddings, encoder_state, vocab_size, sequence_length, rnn_size, num_layers, vocab_to_int, keep_prob, attn_length)
19
20 train_logits = decoding_layer_train(
---> 21 encoder_state[0], dec_cell, dec_embed_input, sequence_length, decoding_scope, output_fn, keep_prob)
22 decoding_scope.reuse_variables()
23 infer_logits = decoding_layer_infer(encoder_state[0], dec_cell, dec_embeddings, vocab_to_int['<GO>'],
<ipython-input-35-7f5fedb3a13f> in decoding_layer_train(encoder_state, dec_cell, dec_embed_input, sequence_length, decoding_scope, output_fn, keep_prob)
2 output_fn, keep_prob):
3 '''Decode the training data'''
----> 4 train_decoder_fn = tf.contrib.seq2seq.simple_decoder_fn_train(encoder_state)
5 train_pred, _, _ = tf.contrib.seq2seq.dynamic_rnn_decoder(
6 dec_cell, train_decoder_fn, dec_embed_input, sequence_length, scope=decoding_scope)
AttributeError: module 'tensorflow.contrib.seq2seq' has no attribute 'simple_decoder_fn_train'
代码:
def decoding_layer_train(encoder_state, dec_cell, dec_embed_input, sequence_length, decoding_scope,
output_fn, keep_prob):
'''Decode the training data'''
train_decoder_fn = tf.contrib.seq2seq.simple_decoder_fn_train(encoder_state)
train_pred, _, _ = tf.contrib.seq2seq.dynamic_rnn_decoder(
dec_cell, train_decoder_fn, dec_embed_input, sequence_length, scope=decoding_scope)
train_pred_drop = tf.nn.dropout(train_pred, keep_prob)
return output_fn(train_pred_drop)
train_graph = tf.Graph()
with train_graph.as_default():
# Load the model inputs
input_data, targets, lr, keep_prob = model_inputs()
# Sequence length will be the max line length for each batch
sequence_length = tf.placeholder_with_default(max_line_length, None, name='sequence_length')
input_shape = tf.shape(input_data)
# Create the logits from the model
train_logits, inference_logits = seq2seq_model(
tf.reverse(input_data, [-1]), targets, keep_prob, batch_size, sequence_length, len(source_vocab_to_int),
len(target_vocab_to_int), encoding_embedding_size, decoding_embedding_size, rnn_size, num_layers,
target_vocab_to_int, attn_length)
# Create a tensor to be used for making predictions.
tf.identity(inference_logits, 'logits')
with tf.name_scope("optimization"):
# Loss function
cost = tf.contrib.seq2seq.sequence_loss(
train_logits,
targets,
tf.ones([input_shape[0], sequence_length]))
# Optimizer
optimizer = tf.train.AdamOptimizer(learning_rate)
# Gradient Clipping
gradients = optimizer.compute_gradients(cost)
capped_gradients = [(tf.clip_by_value(grad, -1., 1.), var) for grad, var in gradients if grad is not None]
train_op = optimizer.apply_gradients(capped_gradients)
解决方案
推荐阅读
- node.js - 当堆栈跟踪对于标准输出来说太大时,如何获取 NodeJS 错误?
- c++ - Win32Api 窗口菜单激活问题
- dataframe - 我可以使用 DataFrames 在 Julia 中按天或按月分组吗
- python - 清理将每条记录视为表的数据集
- python - 从每个句子末尾的括号中的文本中提取日期
- python - is the connection/cursor object automatically closed in SQLAlchemy
- android - 如何更改 SearchView 的文本颜色?
- spring-boot - 间歇性 java.net.SocketException:来自服务器的文件意外结束
- amazon-cloudwatch - Cloudwatch 仪表板 - 从条形图中隐藏 x 轴标签
- c# - 在 Visual Stuio 中调试覆盖函数不起作用