#print(real_diff) #print(real_slope) #print(responses) num_models = len(set(models)) num_items = len(set(items)) #print(num_items, num_models) models = torch.tensor(models, dtype=torch.long, device=device) items = torch.tensor(items, dtype=torch.long, device=device) responses = torch.tensor(responses, dtype=torch.float, device=device) # 3. define model and guide accordingly m1v = OneParamLog("vague", device, num_items, num_models, args.verbose) m1h = OneParamLog("hierarchical", device, num_items, num_models, args.verbose) m2v = TwoParamLog("vague", device, num_items, num_models, args.verbose) m2h = TwoParamLog("hierarchical", device, num_items, num_models, args.verbose) pyro.enable_validation(True) for m in [m1v, m2v, m1h, m2h]: # 4. fit irt model with svi, trace-elbo loss m.fit(models, items, responses, args.num_epochs) # 5. once model is fit, write outputs (diffs and thetas) to disk, # retaining original modelIDs and itemIDs so we can use them for name in pyro.get_param_store().get_all_param_names(): if name not in ['loc_diff', 'loc_ability', 'loc_slope']: continue print(name) val = pyro.param(name).data.numpy()
def test_num_subjects(self): with self.assertRaises(ValueError): m = TwoParamLog("vague", "cpu", 100, -100, False)
def test_device(self): with self.assertRaises(ValueError): m = TwoParamLog("vague", "zpu", 100, 100, False)
def test_priors(self): with self.assertRaises(ValueError): m = TwoParamLog("testing", "cpu", 100, 100, False)
iID += 1 uID += 1 num_models = len(set(models)) num_items = len(set(items)) print(num_items, num_models) models = torch.tensor(models, dtype=torch.long, device=device) items = torch.tensor(items, dtype=torch.long, device=device) responses = torch.tensor(responses, dtype=torch.float, device=device) # 3. define model and guide accordingly if args.model == '1PL': m = OneParamLog(args.priors, device, num_items, num_models, verbose=args.verbose) elif args.model == '2PL': m = TwoParamLog(args.priors, device, num_items, num_models, verbose=args.verbose) # 4. fit irt model with svi, trace-elbo loss m.fit(models, items, responses, args.num_epochs) # 5. once model is fit, write outputs (diffs and thetas) to disk, # retaining original modelIDs and itemIDs so we can use them for name in pyro.get_param_store().get_all_param_names(): print(name) if args.gpu: val = pyro.param(name).data.cpu().numpy() else: val = pyro.param(name).data.numpy() if args.verbose:
models = torch.tensor(models, dtype=torch.long, device=device) items = torch.tensor(items, dtype=torch.long, device=device) responses = torch.tensor(responses, dtype=torch.float, device=device) # 3. define model and guide accordingly if args.model == "1PL": m = OneParamLog(args.priors, device, num_items, num_subjects, verbose=args.verbose) elif args.model == "2PL": m = TwoParamLog(args.priors, device, num_items, num_subjects, verbose=args.verbose) # 4. fit irt model with svi, trace-elbo loss m.fit(models, items, responses, args.num_epochs) # 5. once model is fit, write outputs (diffs and thetas) to disk, # retaining original modelIDs and itemIDs so we can use them for name in pyro.get_param_store().get_all_param_names(): print(name) if args.gpu: val = pyro.param(name).data.cpu().numpy() else: val = pyro.param(name).data.numpy()