mse = mean_squared_error(test_queue[1], inferences) rmse = np.sqrt(mse) logging.info('rmse: %.4f[%.4f]' % (rmse, time() - start)) elif args.mode == 'autoneural': start = time() if dim == 2: model = AutoNeural(num_users, num_items, args.embedding_dim, args.weight_decay).cuda() elif dim == 3: model = AutoNeural_Triple(num_ps, num_qs, num_rs, args.embedding_dim, args.weight_decay).cuda() embedding_oprimizer = torch.optim.Adagrad(model.embedding_parameters(), args.lr) mlp_optimizer = torch.optim.Adagrad(model.mlp_parameters(), args.lr) losses = [] for train_epoch in range(args.train_epochs): if dim == 2: loss = train_single(train_queue, model, embedding_oprimizer, args) if train_epoch % 15000 == 0: _ = train_single(valid_queue, model, mlp_optimizer, args) _ = train_single(valid_queue, model, mlp_optimizer, args) rmse = evaluate(model, test_queue) elif dim == 3: loss = train_single_triple(train_queue, model, embedding_oprimizer, args)