RNN& Tensorflow中的批次

时间:2016-08-11 08:00:50

标签: tensorflow

Tensorflow中RNN的batche方法对我来说并不清楚。例如tf.nn.rnn作为张量的输入列表[BATCH_SIZE x INPUT_SIZE]。我们通常会提供会话批次的数据,那么为什么它采用批次列表而不是单批次?

这导致我的下一个困惑:

data = []
for _ in range(0, len(train_input)):
    data.append(tf.placeholder(tf.float32, [CONST_BATCH_SIZE, CONST_INPUT_SIZE]))

lstm = tf.nn.rnn_cell.BasicLSTMCell(CONST_NUM_OF_HIDDEN_STATES)

val, state = tf.nn.rnn(lstm, data, dtype=tf.float32)

我将张量列表[CONST_BATCH_SIZE x CONST_INPUT_OTPUT_SIZE]传递给tf.nn.rnn,得到的输出值是张量列表[CONST_BATCH_SIZE x CONST_NUM_OF_HIDDEN_STATES]。现在我想对所有HIDDEN_STATES输出使用softmax,需要用matmaul + bias计算权重

我应该用于matmul:

weight = tf.Variable(tf.zeros([CONST_NUM_OF_HIDDEN_STATES, CONST_OTPUT_SIZE]))

for i in val:
  mult = tf.matmul(i, weight)

bias = tf.Variable(tf.zeros([CONST_OTPUT_SIZE]))
prediction = tf.nn.softmax(mult + bias)

或者我应该从val创建2D数组,然后在没有tf.matmul的情况下使用for吗?

1 个答案:

答案 0 :(得分:0)

这应该有效。输出是来自RNN的批量数据。对于所有批输入,probs都有概率。

logits = tf.matmul(output, softmax_w) + softmax_b
probs = tf.nn.softmax(logits)