RNN&;Tensorflow中的批次

RNN&;Tensorflow中的批次,tensorflow,Tensorflow,我不清楚Tensorflow中RNN的批处理方法。例如,tf.nn.rnn作为张量的输入列表[批量大小x输入大小]。我们通常向会话提供成批的数据,那么为什么它需要成批的列表而不是单个批次呢 这给我带来了下一个困惑: data = [] for _ in range(0, len(train_input)): data.append(tf.placeholder(tf.float32, [CONST_BATCH_SIZE, CONST_INPUT_SIZE])) lstm = tf.nn

我不清楚Tensorflow中RNN的批处理方法。例如,tf.nn.rnn作为张量的输入列表[批量大小x输入大小]。我们通常向会话提供成批的数据,那么为什么它需要成批的列表而不是单个批次呢

这给我带来了下一个困惑:

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\u BATCH\u SIZE x CONST\u INPUT\u OTPUT\u SIZE]传递给
tf.nn.rnn
,并得到输出值,即张量列表[CONST\u BATCH\u SIZE x CONST\u NUM\u HIDDEN\u STATES]。现在我想对所有隐藏状态输出使用softmax,并需要使用matmaul+偏差计算权重

我应该为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
而不使用
。输出是来自RNN的批处理数据。对于所有批量输入问题,都有可能发生

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

RNN的输出是3D(2d列表)和softmax_w是2d这是一个问题:我应该批量迭代还是从3D为输出创建2d数组扫描你用例子写下这些维度,这很容易理解