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

Change batch size in each training in Tensorflow

我正在尝试在 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})

有什么方法可以改变每个训练步骤中的输入大小吗? 如果有不好用?

当我post这道题的时候,我刚开始RNN。其实答案很简单,如果有人遇到和我一样的问题,我就回答一下。

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

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