-def generate_snake_sequences(
- nb, height, width, nb_colors, length, device=torch.device("cpu")
-):
- world = torch.randint(nb_colors, (nb, height, width), device=device)
- # nb x 2
- snake_position = torch.cat(
- (
- torch.randint(height, (nb, 1), device=device),
- torch.randint(width, (nb, 1), device=device),
- ),
- 1,
- )
- snake_direction = torch.randint(4, (nb, 1), device=device)
- result = torch.empty(nb, 2*length, device=device, dtype=torch.int64)
- count = torch.arange(nb, device=device) # [:,None]
-
- for l in range(length):
- # nb x 3
- snake_next_direction = torch.cat(
- (
- (snake_direction - 1) % 4,
- snake_direction,
- (snake_direction + 1) % 4,
- ),
- 1,
+import snake
+
+
+class TaskSnake(Task):
+ def __init__(
+ self,
+ nb_train_samples,
+ nb_test_samples,
+ batch_size,
+ height,
+ width,
+ nb_colors,
+ length,
+ prompt_length,
+ device=torch.device("cpu"),
+ ):
+ self.batch_size = batch_size
+ self.height = height
+ self.width = width
+ self.device = device
+ self.prompt_length = prompt_length
+
+ self.train_input, self.train_prior_visits, _, _ = snake.generate_sequences(
+ nb_train_samples,
+ height,
+ width,
+ nb_colors,
+ length,
+ prompt_length,
+ self.device,
+ )
+ self.test_input, self.test_prior_visits, _, _ = snake.generate_sequences(
+ nb_test_samples,
+ height,
+ width,
+ nb_colors,
+ length,
+ prompt_length,
+ self.device,