You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
报错代码
from edustudio.quickstart import run_edustudio
run_edustudio(
dataset='AAAI_2023',
cfg_file_name=None,
traintpl_cfg_dict={
'cls': 'GeneralTrainTPL',
},
datatpl_cfg_dict={
'cls': 'CNCDFDataTPL',
},
modeltpl_cfg_dict={
'cls': 'CNCD_F'
},
evaltpl_cfg_dict={
'clses': ['PredictionEvalTPL'],
}
)
报错为
2024-12-21 11:49:40[ERROR]: Traceback (most recent call last):
File "E:\EduStudio-main\edustudio\quickstart\quickstart.py", line 58, in run_edustudio
traintpl.start()
File "E:\EduStudio-main\edustudio\traintpl\gd_traintpl.py", line 79, in start
metrics = self.one_fold_start(fold_id)
File "E:\EduStudio-main\edustudio\traintpl\general_traintpl.py", line 53, in one_fold_start
self.fit(train_loader=self.train_loader, valid_loader=self.valid_loader)
File "E:\EduStudio-main\edustudio\traintpl\general_traintpl.py", line 96, in fit
loss_dict = self.model.get_loss_dict(**batch_dict)
File "E:\EduStudio-main\edustudio\model\CD\cncd_f.py", line 177, in get_loss_dict
return self.get_main_loss(**kwargs)
File "E:\EduStudio-main\edustudio\model\CD\cncd_f.py", line 170, in get_main_loss
pd = self(stu_id, exer_id).flatten()
File "D:\anac\envs\wl\lib\site-packages\torch\nn\modules\module.py", line 1501, in _call_impl
return forward_call(*args, **kwargs)
File "E:\EduStudio-main\edustudio\model\CD\cncd_f.py", line 144, in forward
items_Q_mat = self.Q_mat[exer_id].to(self.traintpl_cfg['device'])
RuntimeError: indices should be either on cpu or on the same device as the indexed tensor (cpu)
这个问题意思是在使用 PyTorch 进行索引操作时,张量(tensor)和索引(indices)不在同一个设备(device)上。加入调试信息查看后发现
stu_id device: cuda:0
exer_id device: cuda:0
self.word_ids device: cuda:0
self.Q_mat device: cpu
找到问题的根源是self.Q_mat没有转移到GPU,修改cncd_f.py代码
报错代码
from edustudio.quickstart import run_edustudio
run_edustudio(
dataset='AAAI_2023',
cfg_file_name=None,
traintpl_cfg_dict={
'cls': 'GeneralTrainTPL',
},
datatpl_cfg_dict={
'cls': 'CNCDFDataTPL',
},
modeltpl_cfg_dict={
'cls': 'CNCD_F'
},
evaltpl_cfg_dict={
'clses': ['PredictionEvalTPL'],
}
)
报错为
2024-12-21 11:49:40[ERROR]: Traceback (most recent call last):
File "E:\EduStudio-main\edustudio\quickstart\quickstart.py", line 58, in run_edustudio
traintpl.start()
File "E:\EduStudio-main\edustudio\traintpl\gd_traintpl.py", line 79, in start
metrics = self.one_fold_start(fold_id)
File "E:\EduStudio-main\edustudio\traintpl\general_traintpl.py", line 53, in one_fold_start
self.fit(train_loader=self.train_loader, valid_loader=self.valid_loader)
File "E:\EduStudio-main\edustudio\traintpl\general_traintpl.py", line 96, in fit
loss_dict = self.model.get_loss_dict(**batch_dict)
File "E:\EduStudio-main\edustudio\model\CD\cncd_f.py", line 177, in get_loss_dict
return self.get_main_loss(**kwargs)
File "E:\EduStudio-main\edustudio\model\CD\cncd_f.py", line 170, in get_main_loss
pd = self(stu_id, exer_id).flatten()
File "D:\anac\envs\wl\lib\site-packages\torch\nn\modules\module.py", line 1501, in _call_impl
return forward_call(*args, **kwargs)
File "E:\EduStudio-main\edustudio\model\CD\cncd_f.py", line 144, in forward
items_Q_mat = self.Q_mat[exer_id].to(self.traintpl_cfg['device'])
RuntimeError: indices should be either on cpu or on the same device as the indexed tensor (cpu)
这个问题意思是在使用 PyTorch 进行索引操作时,张量(tensor)和索引(indices)不在同一个设备(device)上。加入调试信息查看后发现
stu_id device: cuda:0
exer_id device: cuda:0
self.word_ids device: cuda:0
self.Q_mat device: cpu
找到问题的根源是self.Q_mat没有转移到GPU,修改cncd_f.py代码
def build_model(self):
# prediction sub-net
self.textcnn = TextCNN(self.traintpl_cfg["batch_size"], self.n_cpt, self.text_dim)
self.word2id = self.textcnn.prepare_embedding(self.content_list)
self.word_ids = self.get_from_text().to(self.traintpl_cfg['device']) # 确保在指定设备上
def forward(self, stu_id, exer_id):
# 确保索引和张量在同一设备上
stu_id = stu_id.to(self.traintpl_cfg['device'])
exer_id = exer_id.to(self.traintpl_cfg['device'])
更换这些代码即可
The text was updated successfully, but these errors were encountered: