fastaiで、confusion_matrixの計算が、CPU側へ持ってくると、1/3になった。
3000クラスぐらいのconfusion_matrixの計算をすると時間が20分ぐらいかかった。 fastaiの、confusion_matrixの計算を,Tensorから、CPU側へ持ってきたら、1/3になった。
#かなり、時間がかかる20分ぐらいかかる import time t1 = time.time() interp.confusion_matrix() t2 = time.time() elapsed_time = t2-t1 print(f"経過時間(sec):{elapsed_time}")
経過時間:982.7583639621735
import time t1 = time.time() DATA = interp.data PRED_CLASS = interp.pred_class.cpu().numpy() Y_TRUE = interp.y_true.cpu().numpy() #x=torch.arange(0, DATA.c) x = np.arange(0,DATA.c) slice_size = 1 #cm = torch.zeros( DATA.c, DATA.c, dtype=x.dtype) cm = np.zeros( (DATA.c, DATA.c), dtype=x.dtype) for i in range(0, Y_TRUE.shape[0], slice_size): cm_slice = ((PRED_CLASS[i:i+slice_size]==x[:,None]) & (Y_TRUE[i:i+slice_size]==x[:,None,None])).sum(2) #torch.add(cm, cm_slice, out=cm) np.add(cm, cm_slice, out=cm) #to_np(cm) t2 = time.time() elapsed_time = t2-t1 print(f"経過時間(sec):{elapsed_time}")
経過時間(sec):341.22110533714294