【发布时间】:2016-08-11 08:00:50
【问题描述】:
我不清楚 Tensorflow 中 RNN 的批处理方法。例如 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 + 偏差计算权重
我应该使用 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 创建二维数组,然后在不使用for 的情况下使用tf.matmul?
【问题讨论】:
标签: tensorflow