在将通常的 seq2seq 代码转换为急切执行模式时,我遇到了一个奇怪的问题。
我改变的很简单,在调用 enable_eager_execution() 之后,我改变了以下输入
def get_inputs():
inputs = tf.placeholder(tf.int32, [None, None], name='inputs')
targets = tf.placeholder(tf.int32, [None, None], name='targets')
learning_rate = tf.placeholder(tf.float32, name='learning_rate')
target_sequence_length = tf.placeholder(tf.int32, (None,), name='target_sequence_length')
max_target_sequence_length = tf.reduce_max(target_sequence_length, name='max_target_len')
source_sequence_length = tf.placeholder(tf.int32, (None,), name='source_sequence_length')
return inputs, targets, learning_rate, target_sequence_length, max_target_sequence_length, source_sequence_length
input_data, targets, lr, target_sequence_length, max_target_sequence_length, source_sequence_length = get_inputs()
直接从 numpy 数组赋值。
然后我打电话
training_decoder_output, _,_ = tf.contrib.seq2seq.dynamic_decode(training_decoder,impute_finished=True,maximum_iterations=max_target_sequence_length)
其中 training_decoder 只是采用了 encoder_state 和一个训练助手(在 training_decoder 定义步骤期间没有错误报告),并且错误报告显示“ValueError:未知 TensorShapes 的不等式未定义”。
任何人都可以帮助我吗?