1. add network
from .net import Net
from .my_net import MyNet
def factory(engine=None):
Logger()('Creating mnist network...')
if Options()['model']['network']['name'] == 'net':
network = Net()
elif Options()['model']['network']['name'] == 'my_net':
opt = Options()['model.network']
network = MyNet(
mul=opt['mul'],
drop=opt['drop']
)
else:
raise ValueError()
if Options()['misc']['cuda'] and len(utils.available_gpu_ids()) >= 2:
network = DataParallel(network)
return network
2. add options
exp:
dir: logs/mnist/my_net
resume: # last, best_[...], or empty (from scratch)
dataset:
import: mnist.datasets.factory
name: mnist
dir: data/mnist
train_split: train
eval_split: val
nb_threads: 4
batch_size: 64
model:
name: simple
network:
import: mnist.models.networks.factory
name: my_net
mul: 2
drop: 0.2
criterion:
name: nll
metric:
name: accuracy
topk: [1,5]
optimizer:
name: sgd
lr: 0.01
momentum: 0.5
engine:
name: default
debug: False
nb_epochs: 10
print_freq: 10
saving_criteria:
- loss:min # save when new_best < best
- accuracy_top1:max # save when new_best > best
- accuracy_top5:max # save when new_best > best
misc:
cuda: False
seed: 1337
view:
- logs:train_epoch.loss+logs:eval_epoch.loss
- logs:train_batch.loss
- logs:train_epoch.accuracy_top1+logs:eval_epoch.accuracy_top1
- logs:train_epoch.accuracy_top5+logs:eval_epoch.accuracy_top5