Esempio n. 1
0
def main():
    # Create parser object
    parser = argparse.ArgumentParser(description="Neural Network Image Classifier Training")
    
    # Define argument for parser object
    parser.add_argument('--save_dir', type=str, help='Define save directory for checkpoints model as a string')
    parser.add_argument('--arch', dest='arch', action ='store', type = str, default = 'densenet', help='choose a tranfer learning model or architechture')
    parser.add_argument('--learning_rate', dest = 'learning_rate', action='store', type=float, default=0.001, help='Learning Rate for Optimizer')
    parser.add_argument('--hidden_units', dest = 'hidden_units', action='store', type=int, default=512, help='Define number of hidden unit')
    parser.add_argument('--epochs', dest = 'epochs', action='store', type=int, default=1, help='Number of Training Epochs')
    parser.add_argument('--gpu', dest = 'gpu', action='store_true', default = 'False', help='Use GPU if --gpu')
    parser.add_argument('--st', action = 'store_true', default = False, dest = 'start', help = '--st to start predicting')
                        
    # Parse the argument from standard input
    args = parser.parse_args()
    
    # Print out the passing/default parameters
    print('-----Parameters------')
    print('gpu              = {!r}'.format(args.gpu))
    print('epoch(s)         = {!r}'.format(args.epochs))
    print('arch             = {!r}'.format(args.arch))
    print('learning_rate    = {!r}'.format(args.learning_rate))
    print('hidden_units     = {!r}'.format(args.hidden_units))
    print('start            = {!r}'.format(args.start))
    print('----------------------')
    
    if args.start == True:
        class_labels, trainloaders, testloaders, validloaders = helper.load_image()
        model = helper.load_pretrained_model(args.arch, args.hidden_units)
        criterion = nn.NLLLoss()
        optimizer = optim.Adam(model.classifier.parameters(), lr = args.learning_rate)
        helper.train_model(model, args.learning_rate, criterion, trainloaders, validloaders, args.epochs, args.gpu)
        helper.test_model(model, testloaders, args.gpu)
        model.to('cpu')
        
        # saving checkpoints
        helper.save_checkpoint({
            'arch': args.arch,
            'state_dict': model.state_dict(),
            'optimizer': optimizer.state_dict(),
            'hidden_units': args.hidden_units,
            'class_labels': class_labels
        })
        print('model checkpoint saved')
                 dest="arch",
                 action="store",
                 default="resnet50",
                 type=str)
arg.add_argument('--hidden_unit',
                 type=int,
                 dest="hidden_units",
                 action="store",
                 default=768)
arg.add_argument('--compute', dest="compute", action="store", default="cuda")

parser = arg.parse_args()
loc = parser.get_data
filepath = parser.save_model
lr = parser.learning_rate
architecture = parser.arch
dropout = parser.dropout
first_hidden_layer = parser.hidden_units
epochs = parser.epochs
compute = parser.compute

trainloader, validloader, testloader, class_to_idx = helper.get_data(loc)
model, criterion, optimizer = helper.model_setup(architecture, dropout,
                                                 first_hidden_layer, lr,
                                                 compute)
helper.train_model(model, criterion, optimizer, epochs, compute, trainloader,
                   validloader)
helper.save_checkpoint(filepath, architecture, first_hidden_layer, lr, dropout,
                       model, class_to_idx)
print("Done")
# Load data set 
X_train, y_train = helper.load_data_set(root, file_name)

# Obtain the shape of input
input_shape = X_train[0].shape
print('>> Data set size: {0}'.format(len(y_train)))
print('>> Image shape: {0}'.format(input_shape))


# Build the models
idx = 1
model = \
    helper.lenet_model(input_shape=input_shape) if idx==0 \
    else helper.nvidia_model(input_shape=input_shape)
model_names = ['lenet_model', 'nvidia_model']
model_name = model_names[idx]
print('\n\n ')
print('+-------------------------------------------------+')
print('|                   {0:12s}                  |'.format(model_name))
print('+-------------------------------------------------+')


# Train and save the model
history_object = helper.train_model(
    model, model_name, X_train, y_train, 
    loss='mse', lr=0.001,
    valid_split=0.2, epochs = 10)


# Produce and save visualization    
helper.produce_visualization(history_object, model_name)
Esempio n. 4
0
import argparse
import helper

parser = argparse.ArgumentParser()
parser.add_argument('data_dir',nargs = '?',type = str, default = './flowers/')
parser.add_argument('--gpu',dest = 'gpu',action = 'store_true',default = False)
parser.add_argument('--save_dir',dest = 'save_dir',action = 'store',default = './checkpoint.pth')
parser.add_argument('--arch',dest = 'arch',action = 'store',default ='vgg16')
parser.add_argument('--learning_rate',dest ='learning_rate',action = 'store',default = 0.001,type = float)
parser.add_argument('--hidden_units',dest = 'hidden_units',action = 'store',default = 1024, type = int )
parser.add_argument('--epochs',dest = 'epochs',action = 'store',default = 20,type = int)

args = parser.parse_args()

# load data
train_data,trainloader, testloader,validloader = helper.load_data()

# build model
print(args.gpu)
print(args.arch)
print(type(args.hidden_units))
print(type(args.learning_rate))
model,device,criterion,optimizer = helper.build_model(args.gpu,args.arch,args.hidden_units,args.learning_rate)

# train model
helper.train_model(args.epochs,trainloader,validloader,model,device,criterion,optimizer)

# save the trained model
helper.save_checkpoint(model,args.epochs,args.arch,optimizer,train_data)

Esempio n. 5
0
    type=int)
parser.add_argument('--epochs',
                    help="Amount of epochs the network is trained (default=5)",
                    default=5,
                    type=int)
parser.add_argument('--gpu',
                    help="Use the gpu to accelerate training",
                    action='store_true')

args = parser.parse_args()
train_dir = args.data_directory[0] + '/train'
valid_dir = args.data_directory[0] + '/valid'

(trainloader, validationloader,
 class_to_idx) = helper.get_dataloaders(train_dir, valid_dir)

if not torch.cuda.is_available() and args.gpu:
    raise (
        "No gpu available to train the network. Please remove the --gpu argument to train using the cpu"
    )
device = ('cuda' if args.gpu else 'cpu')

(model, optimizer) = helper.get_model(args.arch, args.learning_rate,
                                      args.hidden_units)
helper.train_model(model, trainloader, validationloader, optimizer, device,
                   args.epochs)

if args.save_dir != None:
    model.class_to_idx = class_to_idx
    torch.save(model, args.save_dir)
Esempio n. 6
0
def main():

    ap = argparse.ArgumentParser(description='train.py')
    ap.add_argument('data_dir', nargs='*', action="store", default="./flowers")
    ap.add_argument('--save_dir',
                    dest="save_dir",
                    action="store",
                    default="./checkpoint.pth")
    ap.add_argument('--number_epochs',
                    dest="number_epochs",
                    action="store",
                    type=int,
                    default=1)
    ap.add_argument('--model_type',
                    dest="model_type",
                    action="store",
                    default="vgg16",
                    type=str)
    ap.add_argument('--hidden_units',
                    type=int,
                    dest="hidden_units",
                    default=760,
                    action="store")
    ap.add_argument('--learning_rate',
                    dest="learning_rate",
                    action="store",
                    default=0.001,
                    type=float)
    ap.add_argument('--dropout', dest="dropout", action="store", default=0.5)
    ap.add_argument('--gpu', dest="gpu", action='store_true', default=False)

    args = ap.parse_args()

    train_dir = args.data_dir + '/train'
    valid_dir = args.data_dir + '/valid'
    test_dir = args.data_dir + '/test'

    mean = [0.485, 0.456, 0.406]
    std = [0.229, 0.224, 0.225]
    batch_size = 64
    output_class = 102

    trainloader, traindata = helper.train_data_loader(train_dir, mean, std,
                                                      batch_size)
    validloader = helper.test_data_loader(valid_dir, mean, std, batch_size)
    testloader = helper.test_data_loader(test_dir, mean, std, batch_size)

    model, criterion, optimizer = helper.build_network(
        args.model_type,
        hidden_units=args.hidden_units,
        output_class=output_class,
        dropout=args.dropout,
        lr=args.learning_rate)
    model = helper.train_model(model,
                               criterion,
                               optimizer,
                               trainloader,
                               validloader,
                               number_epochs=args.number_epochs,
                               print_every=10,
                               gpu=args.gpu)
    helper.save_model(args.save_dir, model, traindata, args.model_type,
                      args.hidden_units, output_class, args.dropout,
                      args.learning_rate)
Esempio n. 7
0
epochs = 1
runs = 1500
start = datetime.datetime.now()

for i in range(runs):
    clf = DecisionTreeRegressor()
    num_feat = random.randint(1, 76)

    features, train, test, y_train, y_test = helper.split_train_test(
        training_set,
        training_target,
        num_feat,
        i,
    )
    train_encoded, test_encoded = helper.encode(train, test)
    helper.train_model(clf, train_encoded, y_train, epochs)

    y_predicted = clf.predict(train_encoded[0:10])

    test_score = helper.rsme_eval(clf, y_test, test_encoded)

    if test_score < scores or scores == -999:
        bfeatures = features
        scores = test_score
        seed = i
        number_of_feat = num_feat
    approx = ((((datetime.datetime.now() - start).seconds) /
               (i + 1)) * runs) - (datetime.datetime.now() - start).seconds
    print("time left: %s | %s/%s | best score: %s" %
          (str(datetime.timedelta(seconds=approx)), i + 1, runs, scores),
          end='\r')
Esempio n. 8
0
results = parser.parse_args()
print('---------Parameters----------')
print('gpu              = {!r}'.format(results.gpu))
print('epoch(s)         = {!r}'.format(results.epochs))
print('arch             = {!r}'.format(results.arch))
print('learning_rate    = {!r}'.format(results.learning_rate))
print('hidden_units     = {!r}'.format(results.hidden_units))
print('start            = {!r}'.format(results.start))
print('-----------------------------')

if results.start == True:
    class_labels, trainloader, testloader, validloader = helper.load_img()
    model = helper.load_pretrained_model(results.arch, results.hidden_units)
    criterion = nn.NLLLoss()
    optimizer = optim.Adam(model.classifier.parameters(),
                           lr=results.learning_rate)
    helper.train_model(model, results.learning_rate, criterion, trainloader,
                       validloader, results.epochs, results.gpu)
    helper.test_model(model, testloader, results.gpu)
    model.to('cpu')

    # Save Checkpoint for predection
    helper.save_checkpoint({
        'arch': results.arch,
        'state_dict': model.state_dict(),
        'optimizer': optimizer.state_dict(),
        'hidden_units': results.hidden_units,
        'class_labels': class_labels
    })
    print('Checkpoint has been saved.')
Esempio n. 9
0
sys.path.append(cwd)
from miniNN import Sequential, Linear, MSELoss, Relu, Tanh
from helper import data_generator, train_model

# Setting up hyperparameters
lr = 1e-2
mini_batch_size = 200
nb_epochs = 250

# Define Network
modules = [
    Linear(2, 25),
    Relu(),
    Linear(25, 25),
    Relu(),
    Linear(25, 25),
    Relu(),
    Linear(25, 2),
    Tanh()
]
model = Sequential(modules)
criterion = MSELoss()

# Generate train set and test set
train_input, train_target, test_input, test_target = data_generator(
    ratio=0.8, normalized=True)

# Train model
train_model(model, criterion, train_input, train_target, test_input,
            test_target, nb_epochs, lr, mini_batch_size)
Esempio n. 10
0
X_train, y_train = helper.load_data_set(root, file_name)

# Obtain the shape of input
input_shape = X_train[0].shape
print('>> Data set size: {0}'.format(len(y_train)))
print('>> Image shape: {0}'.format(input_shape))

# Build the models
idx = 1
model = \
    helper.lenet_model(input_shape=input_shape) if idx==0 \
    else helper.nvidia_model(input_shape=input_shape)
model_names = ['lenet_model', 'nvidia_model']
model_name = model_names[idx]
print('\n\n ')
print('+-------------------------------------------------+')
print('|                   {0:12s}                  |'.format(model_name))
print('+-------------------------------------------------+')

# Train and save the model
history_object = helper.train_model(model,
                                    model_name,
                                    X_train,
                                    y_train,
                                    loss='mse',
                                    lr=0.001,
                                    valid_split=0.2,
                                    epochs=10)

# Produce and save visualization
helper.produce_visualization(history_object, model_name)
Esempio n. 11
0
xgb_v1_1 = get_v1()
xgb_v1_2 = get_v1()
xgb_v1_3 = get_v1()
xgb_v2_1 = get_v2()
xgb_v2_2 = get_v2()
xgb_v2_3 = get_v2()

train1, test1, y_train1, y_test1 = helper.evaluate_split_train_test(training_set, training_target, feature_set_1)
train2, test2, y_train2, y_test2 = helper.evaluate_split_train_test(training_set, training_target, feature_set_2)
train3, test3, y_train3, y_test3 = helper.evaluate_split_train_test(training_set, training_target, feature_set_3)

train_encoded1, test_encoded1 = helper.encode(train1, test1)
train_encoded2, test_encoded2 = helper.encode(train2, test2)
train_encoded3, test_encoded3 = helper.encode(train3, test3)

helper.train_model(xgb_v1_1, train_encoded1, y_train1, 1)
helper.train_model(xgb_v1_2, train_encoded2, y_train2, 1)
helper.train_model(xgb_v1_3, train_encoded3, y_train3, 1)
helper.train_model(xgb_v2_1, train_encoded1, y_train1, 1)
helper.train_model(xgb_v2_2, train_encoded2, y_train2, 1)
helper.train_model(xgb_v2_3, train_encoded3, y_train3, 1)

rsme = []
rsme.append(helper.rsme_eval(xgb_v1_1, y_test1, test_encoded1))
rsme.append(helper.rsme_eval(xgb_v1_2, y_test2, test_encoded2))
rsme.append(helper.rsme_eval(xgb_v1_3, y_test3, test_encoded3))
rsme.append(helper.rsme_eval(xgb_v2_1, y_test1, test_encoded1))
rsme.append(helper.rsme_eval(xgb_v2_2, y_test2, test_encoded2))
rsme.append(helper.rsme_eval(xgb_v2_3, y_test3, test_encoded3))

helper.run_predictions(get_v1(), feature_set_1, 1,"xgb_v1_f1_predictions.csv", training_set, test_set, training_target, test_ids)
    # Initialize the model for this fold
    fold_model, _ = initialize_model(model_name,
                                     num_classes,
                                     feature_extract,
                                     use_pretrained=True)
    fold_model = fold_model.to(device)
    # fold_optimizer = optim.Adam(fold_model.parameters(), lr=0.0001, weight_decay=0.0001)
    fold_optimizer = optim.Adam(fold_model.parameters(), lr=base_lr)
    # Setup the loss fxn
    fold_criterion = nn.CrossEntropyLoss()

    # Run Training and Validation Step
    _, hist, best_acc = train_model(fold_model,
                                    dataloaders_dict,
                                    fold_criterion,
                                    fold_optimizer,
                                    device,
                                    checkpoint_save_path,
                                    num_epoch_to_stop_if_no_better,
                                    fold_idx=i,
                                    num_epochs=num_epochs,
                                    is_inception=(model_name == "inception"),
                                    is_resume=False)
    list_hist.append(hist)
    list_best_acc.append(best_acc.cpu().numpy())

print('Best averaged acc of all folds ', np.mean(list_best_acc))

with open('list_hist.pkl', 'wb') as f:
    pickle.dump(list_hist, f)
Esempio n. 13
0
                    type=int,
                    default=1,
                    dest='epochs',
                    help='pick number of epochs (default: %(default)s)')
parser.add_argument('--gpu',
                    action='store_true',
                    default=False,
                    dest='gpu_t',
                    help='set gpu to true')
args = parser.parse_args()

# Load and preprocess data
dataloaders, class_to_idx = utility.load_data(args.data_directory)

# Load pretrained model and add custom classifier
model, criterion, optimizer = helper.make_model(args.arch,
                                                hidden_units=args.hidden_units,
                                                dropout=args.dropout,
                                                learn_rate=args.learning_rate)

# Add attribute to model for category to index lookup
model.class_to_idx = class_to_idx

# Train model
model = helper.train_model(model, criterion, optimizer, dataloaders['train'],
                           dataloaders['validate'], args.epochs, True)

# Save Model
if args.save_dir:
    helper.save_model(model, args.save_dir, args.arch, args.hidden_units,
                      args.dropout, args.learning_rate)
Esempio n. 14
0
data_dir = parser.data_directory
save_dir = parser.save_dir
arch = parser.arch
learning_rate = parser.learning_rate
hidden_units = parser.hidden_units
epochs = parser.epochs
gpu = parser.gpu

# 1) Load Data
image_datasets, trainloader, testloader, validloader = helper.loadData(
    data_dir)
# 2) Build Model
model = helper.build_model(arch, hidden_units)
# 3) Train Model
model, optimizer, criterion = helper.train_model(model, trainloader,
                                                 validloader, learning_rate,
                                                 epochs, gpu)
# 4) Save the checkpoint
model.to('cpu')
model.class_to_idx = image_datasets['train_data'].class_to_idx
checkpoint = {
    'model': model,
    'hidden_units': hidden_units,
    'optimizer_state_dict': optimizer.state_dict,
    'criterion': criterion,
    'epochs': epochs,
    'state_dict': model.state_dict(),
    'class_to_idx': model.class_to_idx
}

torch.save(checkpoint, save_dir + '/checkpoint.pth')
#
#

# Observe that all parameters are being optimized
# optimizer_ft = optim.SGD(params_to_update, lr=0.001, momentum=0.9, weight_decay=0.0001)
optimizer_ft = optim.Adam(model_ft.parameters(), lr=0.001, weight_decay=0.0001)

# Setup the loss fxn
criterion = nn.CrossEntropyLoss()

# Train and evaluate
model_ft, hist = train_model(model_ft,
                             dataloaders_dict,
                             criterion,
                             optimizer_ft,
                             device,
                             checkpoint_save_path,
                             num_epoch_to_stop_if_no_better,
                             num_epochs=num_epochs,
                             is_inception=(model_name == "inception"),
                             is_resume=True)

# Comparison with Model Trained from Scratch
# ------------------------------------------
#
# Just for fun, lets see how the model learns if we do not use transfer
# learning. The performance of finetuning vs. feature extracting depends
# largely on the dataset but in general both transfer learning methods
# produce favorable results in terms of training time and overall accuracy
# versus a model trained from scratch.
#
#