from config import * from models import Model from util import * from samples import * from random import shuffle alex = Model().build_alexnet() alex.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) data = list(dataset.items()) shuffle(data) wave_data, loaded_paths, loaded_labels = load_wavs(conf, data) train_size = int(len(loaded_paths) * 0.98) train_XX, test_XX = wave_data[:train_size], wave_data[train_size:] train_X, test_X = sounds_to_mels(conf, train_XX), sounds_to_mels(conf, test_XX) train_Y, test_Y = loaded_labels[:train_size], loaded_labels[train_size:] alex.fit([train_X], [train_Y], epochs=conf.epochs, batch_size=conf.batch_size, verbose=conf.verbose, validation_data=([test_X], [test_Y])) alex.save("model/alexnet.h5")
dataset = YOLODataset('data/train', S, B, C, label_dict=label_dict, to_tensor=to_tensor) dataloader = BaseDataLoader(dataset=dataset, batch_size=args.batch_size) len_train = len(dataset) * 8 // 10 len_val = len(dataset) - len_train train_dataloader, val_dataloader = dataloader.split([len_train, len_val]) net = YOLO(S, B, C) if args.gpu: net = net.cuda() net = nn.DataParallel(net) criterion = Loss(S, B, C) metric = Loss(S, B, C) optimizer = optim.SGD(filter(lambda p: p.requires_grad, net.parameters()), lr=args.lr, momentum=0.9) scheduler = lr_scheduler.StepLR(optimizer, step_size=10, gamma=0.1) model = Model(net) model.compile(optimizer, criterion, metric, scheduler, label_dict) model.fit(train_dataloader=train_dataloader, val_dataloader=val_dataloader, epoch=args.epoch, use_gpu=args.gpu)