def entropy_filter(self, x, b, ent_T):
xp = cuda.get_array_module(b)
eb = entropy(F.softmax(b))/np.log(b.shape[1])
eb.to_cpu()
if hasattr(eb.data,'get'):
with cuda.get_device(eb.data):
exited = eb.data < ent_T
exited = exited.get()
else:
exited = eb.data < ent_T
y_exit = []
y_cont = []
for i,idx in enumerate(exited):
if idx:
y_exit.append(b[i:i+1])
else:
y_cont.append(x[i:i+1])
if len(y_exit) > 0:
y_exit = F.vstack(y_exit)
if len(y_cont) > 0:
y_cont = F.vstack(y_cont)
return y_exit,y_cont,exited
评论列表
文章目录