Esempio n. 1
0
#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()
Esempio n. 2
0
 def test_num_subjects(self):
     with self.assertRaises(ValueError):
         m = TwoParamLog("vague", "cpu", 100, -100, False)
Esempio n. 3
0
 def test_device(self):
     with self.assertRaises(ValueError):
         m = TwoParamLog("vague", "zpu", 100, 100, False)
Esempio n. 4
0
 def test_priors(self):
     with self.assertRaises(ValueError):
         m = TwoParamLog("testing", "cpu", 100, 100, False)
Esempio n. 5
0
            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:
Esempio n. 6
0
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()