RNN从零开始训练时间长且多批次

时间:2020-05-25 20:47:12

标签: machine-learning nlp batch-processing recurrent-neural-network

总而言之,我从头开始编写自己的RNN,看来它工作没有问题。但是,训练数据需要花费很多时间,因此我想确定批处理大小。该系统当前一次只运行一句话。但是,我找不到有关如何执行此操作的源。如何将其转换为多批次?我应该使用多线程吗?

步骤:

...
for i in range(len(y_train)):
    self.step(X_train[i], y_train[i], learning_rate)

步进功能:

def step(self, x, y, learning_rate):
    dU, dV, dW = self.bptt(x, y)
    ...

bptt函数:

def bptt(self, x, y):
    T = len(y)
    o, s = self.forward_propagation(x)
    dU = np.zeros(self.U.shape)
    dV = np.zeros(self.V.shape)
    dW = np.zeros(self.W.shape)
    delta_o = o
    delta_o[np.arange(len(y)), y] -= 1
    for t in np.arange(T):
        dV += np.outer(delta_o[t], s[t].T)
        delta_t = self.V.T.dot(delta_o[t]) * (1 - (s[t]**2))
        for bptt_step in np.arange(max(0, t-self.bptt_truncate), t+1)[::-1]:
            dW += np.outer(delta_t, s[bptt_step - 1])
            dU[:, x[bptt_step]] += delta_t
    return dU,dV,dW

0 个答案:

没有答案