-
Notifications
You must be signed in to change notification settings - Fork 0
/
mnist_mil_main.py
60 lines (45 loc) · 2.01 KB
/
mnist_mil_main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import argparse
import json
from trainers.mnist_mil_trainer import *
import os
import torch
def get_args():
parser = argparse.ArgumentParser(description='MNIST MIL benchmarks:')
parser.add_argument("--project_name", default="MNIST-MIL")
parser.add_argument('--wandb', default=False, type=bool)
# Model params
parser.add_argument('--mode', default="softmax", choices=["softmax", "topk", "sparsemax", "rand", "favor", "linear"])
parser.add_argument('--prob', default=0.5, type=float)
parser.add_argument('--d_model', default=256, type=int)
parser.add_argument('--input_size', default=784, type=int)
parser.add_argument('--model', default="pooling", type=str)
parser.add_argument('--num_pattern', default=2, type=int)
parser.add_argument('--n_heads', default=4, type=int)
parser.add_argument('--scale', default=0.1)
parser.add_argument('--favor_mode', default="gaussian", type=str)
parser.add_argument('--kernel_fn', default='relu', type=str)
parser.add_argument('--update_steps', default=1, type=int)
# Training params
parser.add_argument('--lr', default=1e-3, type=float)
parser.add_argument('--epoch', default=100, type=int)
parser.add_argument('--seed', default=1111, type=int)
# Data params
parser.add_argument('--batch_size', default=256, type=int)
parser.add_argument('--train_size', default=2000, type=int)
parser.add_argument('--test_size', default=500, type=int)
parser.add_argument('--pos_per_bag', default=1, type=int)
parser.add_argument('--bag_size', default=10, type=int)
parser.add_argument('--tgt_num', default=9, type=int)
args = parser.parse_args()
return vars(args)
if __name__ == "__main__":
torch.set_num_threads(3)
config = get_args()
trails = 1
if config["bag_size"] == 100:
config["num_pattern"] = 4
bag_size = [5, 10, 20, 30, 50, 80, 100, 200, 500]
models = ["softmax", "sparsemax"]
for t in range(trails):
trainer = Trainer(config, t)
trainer.train()