def fit_specialists(fname_pretrain=None): if fname_pretrain: with open(fname_pretrain, 'rb') as f: net_pretrain = pickle.load(f) else: net_pretrain = None specialists = OrderedDict() for setting in SPECIALIST_SETTINGS: cols = setting['columns'] X, y = load2d(cols=cols) model = clone(net8) model.output_num_units = y.shape[1] model.batch_iterator_train.flip_indices = setting['flip_indices'] # set number of epochs relative to number of training examples: model.max_epochs = int(1e7 / y.shape[0]) if 'kwargs' in setting: # an option 'kwargs' in the settings list may be used to # set any other parameter of the net: vars(model).update(setting['kwargs']) if net_pretrain is not None: # if a pretrain model was given, use it to initialize the # weights of our new specialist model: model.load_params_from(net_pretrain) print("Training model for columns {} for {} epochs".format( cols, model.max_epochs)) model.fit(X, y) specialists[cols] = model from pickle import dump with open("fit-specialists_{0}.pickle".format(sys.argv[1]), 'wb') as f: # this time we're persisting a dictionary with all models: dump(specialists, f, -1)
('hidden5', layers.DenseLayer), ('output', layers.DenseLayer) ], input_shape=(None, 1, 96, 96), conv1_num_filters=32, conv1_filter_size=(3, 3), pool1_pool_size=(2, 2), conv2_num_filters=64, conv2_filter_size=(2, 2), pool2_pool_size=(2, 2), conv3_num_filters=128, conv3_filter_size=(2, 2), pool3_pool_size=(2, 2), hidden4_num_units=500, hidden5_num_units=500, output_num_units=30, output_nonlinearity=None, update_learning_rate=0.01, update_momentum=0.9, regression=True, batch_iterator_train=FlipBatchIterator(batch_size=128), max_epochs=3000, verbose=1 ) X, y = load2d() # load 2D data net3.fit(X, y) # Training for 3000 epochs will take a while. We'll pickle the # trained model so that we can load it back later: from pickle import dump with open("net3_{0}.pickle".format(sys.argv[1]), 'wb') as f: dump(net3, f, -1)
import matplotlib.pyplot as pyplot from kfkd import load2d, plot_sample X, y = load2d() X_flipped = X[:, :, :, ::-1] # simple slice to flip all images # plot two images fig = pyplot.figure(figsize=(6, 3)) ax = fig.add_subplot(1, 2, 1, xticks=[], yticks=[]) plot_sample(X[1], y[1], ax) ax = fig.add_subplot(1, 2, 2, xticks=[], yticks=[]) plot_sample(X_flipped[1], y[1], ax) pyplot.show()
import matplotlib.pyplot as pyplot from kfkd import load, load2d, plot_loss, plot_sample from net1 import net1 from net2 import net2 # X1, y1 = load() # net1.fit(X1, y1) # X2, y2 = load2d() # load 2D data # net2.fit(X2, y2) sample1 = load(test=True)[0][6:7] sample2 = load2d(test=True)[0][6:7] y_pred1 = net1.predict(sample1)[0] y_pred2 = net2.predict(sample2)[0] fig = pyplot.figure(figsize=(6, 3)) ax = fig.add_subplot(1, 2, 1, xticks=[], yticks=[]) plot_sample(sample1[0], y_pred1, ax) ax = fig.add_subplot(1, 2, 2, xticks=[], yticks=[]) plot_sample(sample1[0], y_pred2, ax) pyplot.show()
return opts opts = parseOptions() # # logging # head = '%(asctime)-15s - %(message)s' logging.basicConfig(level=logging.DEBUG, format=head) # # Load data # FTRAIN = os.path.join(opts.dataDir, 'training.csv') FTEST = os.path.join(opts.dataDir, 'test.csv') X, y, = load2d(FTRAIN=FTRAIN, FTEST=FTEST) if opts.augment: print "Augmenting data" X, y = augment(X, y) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state = 42) trainIter = mx.io.NDArrayIter(data = X_train, label = y_train, batch_size = 64) valIter = mx.io.NDArrayIter(data = X_test , label = y_test , batch_size = 64) # # Select model # if opts.model=='mlp': net = mlp() elif opts.model=='lenet2': net = lenet2()