Tensorflow,排列张量尺寸的最佳方法是什么?

时间:2016-06-16 15:12:37

标签: python neural-network tensorflow

我正在使用tensorflow来训练RNN模型。我将输入张量存储为形状(批量大小,时间步长,128),其中128是一个热编码的长度,表示ASCII字符。要在RNN中输入时间步,我使用以下函数将其重新整形为(批量大小,128)......

def getTimeStep(x, t):
    return tf.reshape(x[:, t, :], (-1, 128))

我想知道这是否是为RNN提供时间步骤的最有效方式。我不确定在tensorflow中如何排序内存。这是序列序列编码器的其余代码。请注意,我在每个时间步后保存输出,因为我想将它提供给解码器中的注意模型。我能做得更有效率吗?

input_tensor = tf.placeholder(tf.float32, (BATCH_SIZE, TIME_STEPS, 128), 'input_tensor')
expected_output = tf.placeholder(tf.float32, (BATCH_SIZE, TIME_STEPS, 128), 'expected_output')

with tf.variable_scope('encoder') as encode_scope:
    encoder_rnn = rnn.MultiRNNCell([rnn.GRUCell(1024)] * 3)
    encoder_state = tf.zeros((BATCH_SIZE, encoder_rnn.state_size))
    encoder_outputs = [None] * TIME_STEPS
    for t in range(TIME_STEPS):
        encoder_outputs[t], encoder_state = encoder_rnn(getTimeStep(input_tensor, t), encoder_state)
        encode_scope.reuse_variables()
    encoder_outputs = tf.concat(1, [tf.reshape(t, (BATCH_SIZE, 1, 1024)) for t in encoder_outputs])

0 个答案:

没有答案