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)

		spatial 			= object_spatials[target_guess]
		object_class 		= [object_categories[target_guess]]

		question_number = 0

		if gid%500==0:
			print("Game ID: "+str(gid)+" Time taken: "+str(time()-start1))