def get_ensembler_predictions(shuffle=2, embed_dim=300, epochs=10, filter_hs=[3, 4, 5], hidden_units=100, name = "model"): print('-' * 40 + name) print("Loading data...") (X_train, y_train), (X_test, y_test), (X_prediction, X_id), vocab, cuisines = cooking.load_data(test_split=0.1, shuffle=2) print(len(X_train), 'train sequences') print(len(X_test), 'test sequences') print("Pad sequences (samples x time)") nb_classes = np.max(y_train) + 1 print "data loaded!" print('-' * 40) rand_vecs = random_we(vocab, k=int(embed_dim)) U = get_W(rand_vecs, k=embed_dim) execfile("conv_net_classes.py") # filter = filter_set() test_set_subm = get_test_set(X_prediction, X_id, max_l=65, filter_h=np.max(filter_hs)) results = [] datasets = make_idx_data_cv(X_train, y_train, X_test, y_test, max_l=65, k=int(embed_dim), filter_h=np.max(filter_hs)) perf = train_conv_net(datasets, test_set_subm, U, name, np.array(X_id), lr_decay=0.95, img_w=int(embed_dim), filter_hs=filter_hs, conv_non_linear="relu", hidden_units=[hidden_units, nb_classes], shuffle_batch=True, n_epochs=int(epochs), sqr_norm_lim=9, non_static=True, batch_size=50, dropout_rate=[0.5]) print "cv: " + ", perf: " + str(perf[0]) print "probs shape" print perf[3].shape results.append(perf[0]) submision_complete = perf[1] trans = np.transpose(submision_complete)[:, 1:] # final_ensemble = [] # for i in range(submision_complete.shape[0]): # print trans[i] # count = np.bincount(trans[i], minlength=20) # final_ensemble.append(np.argmax(count)) # count = np.apply_along_axis(np.bincount, axis=1, arr=np.transpose(submision_complete)[:, 1:], minlength=20) # final_ensemble = np.apply_along_axis(np.argmax, 1, count) submision_complete = np.vstack([np.array(X_id), np.array(cuisines)[perf[2]]]) submision_prediction_df = DataFrame(np.transpose(submision_complete)) submision_prediction_df.to_csv(r'submision_final_' + name +'.csv', header=False, index=False, sep=' ', mode='a') print str(np.mean(results)) print('-' * 40 + name) return perf[3], X_id, cuisines
# LSTM lstm_output_size = 70 # Training batch_size = 50 nb_epoch = 8 ''' Note: batch_size is highly sensitive. Only 2 epochs are needed as the dataset is very small. ''' print("Loading data...") (X_train, y_train), (X_test, y_test), (X_prediction, X_id), vocab, cuisines = cooking.load_data(train_path="../train.json", test_path="../test_json", test_split=0.0) print(len(X_train), 'train sequences') print(len(X_test), 'test sequences') max_features = len(vocab) print("Pad sequences (samples x time)") nb_classes = np.max(y_train) + 1 X_train = sequence.pad_sequences(X_train, maxlen=maxlen) X_test = sequence.pad_sequences(X_test, maxlen=maxlen) X_prediction = sequence.pad_sequences(X_prediction, maxlen=maxlen) Y_train = np_utils.to_categorical(y_train, nb_classes) Y_test = np_utils.to_categorical(y_test, nb_classes) print('Y_train shape:', Y_train.shape) print('Y_test shape:', Y_test.shape) print('X_train shape:', X_train.shape) print('X_test shape:', X_test.shape)
randVecs = np.cast[int](sys.argv[3]) X, labels = [],[] X_train, y_train = [],[] X_test, y_test = [],[] X_prediction, X_id = [],[] vocab, cuisines = [],[] number_cv = 10 print("Loading data...") if (number_cv>0): (X, labels), (X_prediction, X_id), vocab, cuisines = cooking.load_full_data(shuffle=2) print(len(X), 'dataset sequences') else: (X_train, y_train), (X_test, y_test), (X_prediction, X_id), vocab, cuisines = cooking.load_data(test_split=0.1, shuffle=2) print(len(X_train), 'train sequences') print(len(X_test), 'test sequences') nb_classes = np.max(y_train) + 1 max_features = len(vocab) print("Pad sequences (samples x time)") print "data loaded!" print('-' * 40) rand_vecs =[] if (randVecs): print "Using random vectors" rand_vecs = random_we(vocab, k=int(embed_dim)) U = get_W(rand_vecs, embed_dim)