在Tensorflow中的每次培训中更改批量大小

时间:2017-11-17 13:16:02

标签: python tensorflow lstm rnn

我正在尝试在tensorflow中实现一个简单的LSTM模型。我将句子行作为char数组作为输入。

示例输入:

['Y', 'â', 'r', 'â', 'b', ' ', 'n', 'e', ' ', 'i', 'n', 't', 'i', 'z', 'â', 'r', 'd', 'ı', 'r', ' ', 'b', 'u']

每个训练步骤我都试图将此输入提供给lstm。问题是句子的长度不是恒定的。有些句子的长度可以是20,有些则是22,或者其他什么。

培训的一小部分:

x_input =  [dictionary[i]  for i in line]

x_input = np.reshape(np.array(x_input), [-1, n_input, 1])

onehot_out = np.zeros([output_size], dtype=float)
onehot_out[vezin] = 1.0
onehot_out = np.reshape(onehot_out, [1, -1])

_, acc, loss, onehot_pred = session.run([optimizer, accuracy, cost, pred],\
        feed_dict={x: x_input, y: onehot_out})

有没有办法在每个tarining步骤中更改输入大小? 如果不好用?

1 个答案:

答案 0 :(得分:0)

当我发布这个问题时,我刚开始RNN。实际上答案非常简单,如果有人遇到与我相同的问题,我会回答。

解决方案是使用动态RNN 。它允许您为不同的序列提供输入,并且它对大多数RNN模型非常重要。

Tensorflow 具有动态RNN的实现,非常有用。有关详细信息,请查看here