def evaluate_cnn_model(hyperparameters, train, test, validation, random_state): h = hyperparameters net = CNNNet(train.num_items, embedding_dim=h['embedding_dim'], kernel_width=h['kernel_width'], dilation=h['dilation'], num_layers=h['num_layers'], nonlinearity=h['nonlinearity'], residual_connections=h['residual']) model = ImplicitSequenceModel(loss=h['loss'], representation=net, batch_size=h['batch_size'], learning_rate=h['learning_rate'], l2=h['l2'], n_iter=h['n_iter'], use_cuda=CUDA, random_state=random_state) model.fit(train, verbose=True) test_mrr = sequence_mrr_score(model, test) val_mrr = sequence_mrr_score(model, validation) return test_mrr, val_mrr
def _evaluate(model, test): test_mrr = sequence_mrr_score(model, test) print('Test MRR {}'.format(test_mrr.mean())) return test_mrr
def evaluate_model(model, train, test, validation): start_time = time.time() model.fit(train, verbose=True) elapsed = time.time() - start_time print('Elapsed {}'.format(elapsed)) print(model) if hasattr(test, 'sequences'): test_mrr = sequence_mrr_score(model, test) val_mrr = sequence_mrr_score(model, validation) else: test_mrr = mrr_score(model, test) val_mrr = mrr_score(model, test.tocsr() + validation.tocsr()) return test_mrr, val_mrr, elapsed
def evaluate_pooling_model(hyperparameters, train, test, validation, random_state): h = hyperparameters model = ImplicitSequenceModel(loss=h['loss'], representation='pooling', batch_size=h['batch_size'], learning_rate=h['learning_rate'], l2=h['l2'], n_iter=h['n_iter'], use_cuda=CUDA, random_state=random_state) model.fit(train, verbose=True) test_mrr = sequence_mrr_score(model, test) val_mrr = sequence_mrr_score(model, validation) return test_mrr, val_mrr
def test_implicit_sequence_serialization(data): train, test = data train = train.to_sequence(max_sequence_length=128) test = test.to_sequence(max_sequence_length=128) model = ImplicitSequenceModel(loss='bpr', representation=CNNNet(train.num_items, embedding_dim=32, kernel_width=3, dilation=(1, ), num_layers=1), batch_size=128, learning_rate=1e-1, l2=0.0, n_iter=5, random_state=RANDOM_STATE, use_cuda=CUDA) model.fit(train) mrr_original = sequence_mrr_score(model, test).mean() mrr_recovered = sequence_mrr_score(_reload(model), test).mean() assert mrr_original == mrr_recovered