def encode_overlapping_binary_inplace_jit(ticker_steps, n_inputnodes, nr_samples, lengths, out, out_uint):
# out: float32[:,:,:] with [samples, timesteps, features]
# pos_ind: int64 at which position in out['features'] the position
# is stored and encoding should start
# lengths: lengths without tickersteps - tickersteps will be added here
# Note: positions=0 are ignored
mask = 1
pos_bit = n_inputnodes
if ticker_steps > 0:
n_inputnodes -= 1
n_bits = (n_inputnodes / 2) + 1 #lowbit only in binary
for s_i in range(nr_samples):
# Enocde position
for t_i in range(lengths[s_i]):
orig_int = out_uint[s_i, t_i, -pos_bit] #to be encoded
# normal bitwise for all bits
for n_i in range(n_bits):
out[s_i, t_i, n_i-n_inputnodes] = ((mask << n_i) & orig_int) != 0
# overlapping bitwise (low bit ignored)
for n_i in range(1, n_bits):
# for bit at bitposition bp add 2**(bp-1) = 1<<(bp-1)
out[s_i, t_i, n_i-n_bits] = ((mask << n_i) & (orig_int + (mask << (n_i-1)))) != 0
out[s_i, t_i, -pos_bit] = 0 #remove position
# Set ticker steps, if they exist
if ticker_steps > 0:
for n_i in range(ticker_steps):
out[s_i, lengths[s_i]+n_i, -pos_bit] = 1
# add ticker steps to lenght
lengths[s_i] += n_i # := lengths[s_i] += lengths[s_i-1 for index of last element instead of length
input_encoders_numba.py 文件源码
python
阅读 25
收藏 0
点赞 0
评论 0
评论列表
文章目录