layer_params = layer.get_params(trainable=True) if name in ['new_output', 'fc6', 'fc7']: layer_lr = learning_rate else: layer_lr = learning_rate / 10 if name != 'fc8': layer_updates = lasagne.updates.nesterov_momentum( loss, layer_params, learning_rate=layer_lr, momentum=0.9) updates.update(layer_updates) # Compile functions for training, validation and prediction train_fn = theano.function([X_sym, y_sym], [loss, acc], updates=updates) val_fn = theano.function([X_sym, y_sym], [loss, acc]) pred_fn = theano.function([X_sym], prediction) X, y, ids = load_train_data() X, y, ids = sklearn.utils.shuffle(X, y, ids, random_state=0) # generator splitting an iterable into chunks of maximum length N def batches(iterable, N): chunk = [] for item in iterable: chunk.append(item) if len(chunk) == N: yield chunk chunk = [] if chunk: yield chunk
from lasagne.layers import InputLayer, Conv2DLayer, MaxPool2DLayer, DenseLayer, DropoutLayer from lasagne.layers.dnn import Conv2DDNNLayer from lasagne.utils import floatX from nolearn.lasagne import NeuralNet, BatchIterator from sklearn.cross_validation import LabelKFold from sklearn.utils import shuffle from data_pretrained import load_train_data, load_test_data, make_submission from utils_otto import CVTrainSplit, RotateBatchIterator, AdjustVariable np.random.seed(15) IMG_SHAPE = 224, 224 path = '../input' X, y, drivers = load_train_data(path, grayscale=False, img_shape=IMG_SHAPE, equalize=False, zeromean=True, usecache=False) X, y, drivers = shuffle(X, y, drivers, random_state=0) train_split = CVTrainSplit(LabelKFold(drivers, n_folds=2)) batch_iterator_train = RotateBatchIterator(10, 0.5, 12, True) batch_iterator_test = BatchIterator(12, False) layer = [(InputLayer, { 'shape': (None, 3, 224, 224) }), (Conv2DDNNLayer, { 'num_filters': 64, 'filter_size': 3, 'pad': 1 }), (Conv2DDNNLayer, {
if name in ['new_output', 'fc6', 'fc7']: layer_lr = learning_rate else: layer_lr = learning_rate #/ 10 if name != 'fc8': layer_updates = lasagne.updates.nesterov_momentum( loss, layer_params, learning_rate=layer_lr, momentum=0.9) updates.update(layer_updates) # Compile functions for training, validation and prediction train_fn = theano.function([X_sym, y_sym], [loss, acc], updates=updates) val_fn = theano.function([X_sym, y_sym], [loss, acc]) pred_fn = theano.function([X_sym], prediction) X, y, drivers = load_train_data('../input', grayscale=False, img_shape=IMG_SHAPE, usecache=False) X, y, drivers = sklearn.utils.shuffle(X, y, drivers, random_state=1) # generator splitting an iterable into chunks of maximum length N def batches(iterable, N): chunk = [] for item in iterable: chunk.append(item) if len(chunk) == N: yield chunk chunk = [] if chunk: yield chunk
layer_params = layer.get_params(trainable=True) if name in ['new_output', 'fc6', 'fc7']: layer_lr = learning_rate else: layer_lr = learning_rate / 10 if name != 'fc8': layer_updates = lasagne.updates.nesterov_momentum( loss, layer_params, learning_rate=layer_lr, momentum=0.9) updates.update(layer_updates) # Compile functions for training, validation and prediction train_fn = theano.function([X_sym, y_sym], [loss, acc], updates=updates) val_fn = theano.function([X_sym, y_sym], [loss, acc]) pred_fn = theano.function([X_sym], prediction) X_train, y_train, ids_train = load_train_data() X_test, ids_test = load_test_data(img_start_ix=0, max_img=1000) y_pseudo = load_pseudo_labels() pos = np.array(range(4777)) X, y, ids = np.concatenate((X_train, X_test)), np.concatenate( (y_train, y_pseudo)), np.concatenate((ids_train, ids_test)) X, y, ids, pos = sklearn.utils.shuffle(X, y, ids, pos, random_state=0) new_pseudo_label_pos = [] for i in range(3777, 4777): k = np.where(pos == i) new_pseudo_label_pos.append(int(k[0])) # generator splitting an iterable into chunks of maximum length N def batches(iterable, N):