【问题标题】:Understanding Tensor Inputs & Transformations for use in an LSTM (dynamic RNN)了解用于 LSTM(动态 RNN)的张量输入和转换
【发布时间】:2018-04-29 20:23:33
【问题描述】:

我正在 Tensorflow 中构建一个 LSTM 风格的神经网络,并且在将其传递给 sparse_softmax_cross_entropy_with_logits 层。

https://www.tensorflow.org/api_docs/python/tf/nn/dynamic_rnn

理解输入

输入函数以形式发送特征张量

[batch_size, max_time]

但是手册规定输入张量必须采用格式

[batch_size, max_time, ...]

因此,我使用一维张量扩展输入以采用以下形式

[batch_size, max_time, 1]

此时输入在运行时没有中断,但我不明白我们在这里做了什么,并怀疑它可能会导致计算损失时出现问题(见下文)。

了解转换

这个扩展张量就是下面代码中使用的“特征”张量

LSTM_SIZE = 3
lstm_cell = rnn.BasicLSTMCell(LSTM_SIZE, forget_bias=1.0)
outputs, _ = tf.nn.dynamic_rnn(lstm_cell, features, dtype=tf.float64)

#slice to keep only the last cell of the RNN
outputs = outputs[-1]

#softmax layer

with tf.variable_scope('softmax'):
   W = tf.get_variable('W', [LSTM_SIZE, n_classes], dtype=tf.float64)
   b = tf.get_variable('b', [n_classes], initializer=tf.constant_initializer(0.0), dtype=tf.float64)

logits = tf.matmul(outputs, W) + b

loss = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits, labels=labels))

这会在 loss

处引发值错误

维度必须相等,但为 [max_time, num_classes] 和 [batch_size]

来自https://www.tensorflow.org/versions/r0.12/api_docs/python/nn/classification -

一个常见的用例是具有形状为 [batch_size, num_classes] 的 logits 和形状为 [batch_size] 的标签。但支持更高的维度。

在过程中的某个时刻 max_time 和 batch_size 被混淆了,我不确定它是在输入时还是在 LSTM 期间。我很感激任何建议!

【问题讨论】:

    标签: tensorflow lstm rnn


    【解决方案1】:

    这是因为 tf.nn.dynamic_rnn 的输出形状。来自其文档https://www.tensorflow.org/api_docs/python/tf/nn/dynamic_rnn

    输出:RNN 输出张量。

    如果 time_major == False(默认),这将是一个张量形状:[batch_size, max_time, cell.output_size]。

    如果 time_major == True,这将是一个张量形状:[max_time, batch_size, cell.output_size]。

    你在默认情况下,所以你的outputs气体形状[batch_size, max_time, output_size],当执行outputs[-1]时,你得到一个形状为[max_time, output_size]的张量。可能用outputs[:, -1] 切片应该可以解决它。

    【讨论】:

    • 容易修复,喜欢它!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    • 2018-07-06
    • 2018-12-29
    • 1970-01-01
    • 1970-01-01
    • 2021-02-21
    相关资源
    最近更新 更多