guesser_wincount		 = 0
	guesser_valid_wincount 	 = 0
	random_gids 			 = np.random.choice(len(game_ids_train+game_ids_val),4)

	for gid in game_ids_train+game_ids_val:

		decider_optimizer.zero_grad()
		guesser_optimizer.zero_grad()

		guesser_loss = 0
		decider_loss = 0

		train_game = gid in game_ids_train

		if use_cuda:
			visual_features = Variable(torch.Tensor(dr.get_image_features(gid)), requires_grad=False).cuda().view(1,-1)
			crop_features	= Variable(torch.Tensor(dr.get_crop_features(gid)), requires_grad=False).cuda().view(1,-1)
		else:
			visual_features = Variable(torch.Tensor(dr.get_image_features(gid)), requires_grad=False).view(1,-1)
			crop_features	= Variable(torch.Tensor(dr.get_crop_features(gid)), requires_grad=False).view(1,-1)

		# Data required for the guesser
		img_meta 			= dr.get_image_meta(gid)
		object_categories 	= torch.LongTensor(list(map(int, dr.get_category_id(gid))))
		object_ids 			= dr.get_object_ids(gid)
		# get guesser target object
		correct_obj_id  	= dr.get_target_object(gid)
		target_guess 		= object_ids.index(correct_obj_id)

		object_spatials		= guesser_model.img_spatial(img_meta)