1

在将通常的 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 的不等式未定义”。

任何人都可以帮助我吗?

4

0 回答 0