Open kylinat2688 opened 6 years ago
这个函数中的state_list应该取第k个,也就是需要计算误差层的状态,element_wise_op操作应该是对获取的state变量 def calc_delta_k(self, k, activator): ''' 根据k+1时刻的delta计算k时刻的delta ''' state = self.state_list[k+1].copy() element_wise_op(self.state_list[k+1], activator.backward) self.delta_list[k] = np.dot( np.dot(self.delta_list[k+1].T, self.W), np.diag(state[:,0])).T 修改如下: def calc_delta_k(self, k, activator): ''' 根据k+1时刻的delta计算k时刻的delta ''' state = self.state_list[k].copy() element_wise_op(state, activator.backward) self.delta_list[k] = np.dot( np.dot(self.delta_list[k+1].T, self.W), np.diag(state[:,0])).T
@kylinat2688 非常高兴看到您的issue,我也发现了这个问题,但不确定是我理解错了,还是作者写错了,看到您的修改,我确定自己没理解错公式了,谢谢!
这个函数中的state_list应该取第k个,也就是需要计算误差层的状态,element_wise_op操作应该是对获取的state变量 def calc_delta_k(self, k, activator): ''' 根据k+1时刻的delta计算k时刻的delta ''' state = self.state_list[k+1].copy() element_wise_op(self.state_list[k+1], activator.backward) self.delta_list[k] = np.dot( np.dot(self.delta_list[k+1].T, self.W), np.diag(state[:,0])).T 修改如下: def calc_delta_k(self, k, activator): ''' 根据k+1时刻的delta计算k时刻的delta ''' state = self.state_list[k].copy() element_wise_op(state, activator.backward) self.delta_list[k] = np.dot( np.dot(self.delta_list[k+1].T, self.W), np.diag(state[:,0])).T