def encode(self, inp, lengths):
#input shape: minibatchsize x input_len
#output shape: minibatchsize x input_len x n_inputnodes
minibatchsize = inp.shape[0]
output = np.zeros((minibatchsize, inp.shape[1]+self.ticker_steps, self.n_inputnodes), dtype=float)
lengths -= (self.ticker_steps - 1)
for mb in np.arange(minibatchsize):
scaled_pos = inp[mb,:] / self.node_range
# equals output[np.arange(len(input)), np.trunc(scaled_pos)+1] except for the last timestep
output[mb, np.arange(inp.shape[1]), scaled_pos.astype(int)+(scaled_pos.astype(int)<self.data_nodes)] = np.abs(self.max_act * (scaled_pos-np.trunc(scaled_pos)))
output[mb, np.arange(inp.shape[1]), scaled_pos.astype(int)] = np.abs(self.max_act - output[mb, np.arange(inp.shape[1]), scaled_pos.astype(int)+(scaled_pos.astype(int)<self.data_nodes)])
output[mb, np.arange(inp.shape[1]), -self.exp-1:-1] = int_to_binary(inp[mb,:] % self.node_range, self.exp)
if self.ticker_steps > 0:
output[mb, lengths[mb]:, :] = 0
output[mb, lengths[mb]:lengths[mb]+self.ticker_steps, -1] = 1
return output
input_encoders_numba.py 文件源码
python
阅读 30
收藏 0
点赞 0
评论 0
评论列表
文章目录