pykt-toolkit icon indicating copy to clipboard operation
pykt-toolkit copied to clipboard

您好,我看代码主要是以概念为输入的,我阅读了论文,也有问题为输入的,请问以问题为输入的代码是在哪里呢?

Open zjj1333 opened this issue 2 years ago • 5 comments

很优秀的工作!谢谢您的贡献,我想知道如果我以问题未输入的话,代码中是有一个参数的设置还是可以直接改输入的呢?例如:c直接改成cq??

zjj1333 avatar Sep 20 '23 02:09 zjj1333

很优秀的工作!谢谢您的贡献,我想知道如果我以问题未输入的话,代码中是有一个参数的设置还是可以直接改输入的呢?例如:c直接改成cq??

hi,感谢您对我们工作的关注~如果您想以question作为输入的话,可以直接使用cq, 并且使用的数据文件是带“qlevel”的文件,比如“train_valid_sequences_quelevel.csv”和“test_sequences_quelevel.csv”, 这些文件并未经过一题多知识点的扩展处理。

sonyawong avatar Sep 20 '23 13:09 sonyawong

你好直接改成cq的话和是不是和r的长度不太一致呢?是否可以直接改成q呢? q torch.Size([256, 199]) cq torch.Size([256, 200]) c torch.Size([256, 199]) r torch.Size([256, 199]) 并且您说并且使用的数据文件是带“qlevel”的文件,比如“train_valid_sequences_quelevel.csv”和“test_sequences_quelevel.csv”,这一块是在哪里进行改动呢?

zjj1333 avatar Oct 10 '23 02:10 zjj1333

  elif model_name in ["dkt", "dkt+"]:
            y = model(cq.long(), r.long())
            y = (y * one_hot(qshft.long(), model.num_c)).sum(-1)

请问是怎么更改吗?

zjj1333 avatar Oct 11 '23 11:10 zjj1333

你好直接改成cq的话和是不是和r的长度不太一致呢?是否可以直接改成q呢? q torch.Size([256, 199]) cq torch.Size([256, 200]) c torch.Size([256, 199]) r torch.Size([256, 199]) 并且您说并且使用的数据文件是带“qlevel”的文件,比如“train_valid_sequences_quelevel.csv”和“test_sequences_quelevel.csv”,这一块是在哪里进行改动呢?

Hi, 感谢您对我们工作的关注。

Q1:如果直接改成cq的话和是不是和r的长度不太一致呢?是否可以直接改成q呢? -->直接改成q,长度还是和response一致,但是当前的q因为是基于知识点数量进行了repeat,比如一个学生答对题目q1, q1对应c1,c2,c3知识点,就会变成(q1,c1,1), (q1,c2,1), (q1,c3,1),因此不建议将c改成q作为模型输入, 建议使用待xx_quelevel.csv文件

Q2:使用的数据文件是带“qlevel”的文件,比如“train_valid_sequences_quelevel.csv”和“test_sequences_quelevel.csv”,这一块是在哪里进行改动呢? -->执行完example/data_preprocess.py会自动生成xxx_sequences_quelevel.csv文件,需要/pykt-toolkit/pykt/datasets/init_dataset.py中的指定模型使用的dataloader和模型数据输入(c改为q),具体可以参考IEKT的数据加载和数据输入。

sonyawong avatar Oct 11 '23 13:10 sonyawong

非常感谢您和您的团队对KT卓越的贡献,请允许我插个楼,我现在正在进行question-level的研究,训练和测试都是question-level。比如我要训练测试dkt等模型,请问在init-dataset.py中,我应该用大部分模型的数据加载代码 curvalid = KTDataset(os.path.join(data_config["dpath"], data_config["train_valid_sequences_quelevel.csv"]), data_config["input_type"], {i}) curtrain = KTDataset(os.path.join(data_config["dpath"], data_config["test_sequences_quelevel.csv"]), data_config["input_type"], all_folds - {i}) 还是直接使用KTQueDataset: elif model_name in que_type_models: # IEKT curvalid = KTQueDataset(os.path.join(data_config["dpath"], data_config["train_valid_file_quelevel"]), input_type=data_config["input_type"], folds={i}, concept_num=data_config['num_c'], max_concepts=data_config['max_concepts']) curtrain = KTQueDataset(os.path.join(data_config["dpath"], data_config["train_valid_file_quelevel"]), input_type=data_config["input_type"], folds=all_folds - {i}, concept_num=data_config['num_c'], max_concepts=data_config['max_concepts']) 并且把DKT以及其他我想要运行的模型放到que_type_models的list里。

感谢答复!

Yumo216 avatar Jul 10 '24 07:07 Yumo216