code: def test_linear_model_summary_shapes(device_str, max_depth):
      """Test that the model summary correctly computes the input- and output shapes."""
      device = torch.device(device_str)
      model = UnorderedModel().to(device)
      model.train()
      summary = summarize(model, max_depth=max_depth)
      assert summary.in_sizes == [
          [2, 10],
          [2, 7],
          [2, 3],
          [2, 7],
          UNKNOWN_SIZE,
      ]  # layer 2  # combine  # layer 1  # relu
      assert summary.out_sizes == [
          [2, 2],
          [2, 9],
          [2, 5],
          [2, 7],
          UNKNOWN_SIZE,
      ]  # layer 2  # combine  # layer 1  # relu
      assert model.training
      assert model.device == device
  
imports: from collections import OrderedDict
  from typing import Any
  import pytest
  import torch
  import torch.nn
  from lightning.fabric.utilities.imports import _TORCH_GREATER_EQUAL_2_0
  from lightning.pytorch import LightningModule, Trainer
  from lightning.pytorch.demos.boring_classes import BoringModel
  from lightning.pytorch.utilities.model_summary.model_summary import LEFTOVER_PARAMS_NAME, NOT_APPLICABLE, UNKNOWN_SIZE, ModelSummary, summarize
  from tests_pytorch.helpers.advanced_models import ParityModuleRNN
  from tests_pytorch.helpers.runif import RunIf
label_desc: Use image node_id 3 for calling a global function with example usage: test_linear_model_summary_shapes(device_str, max_depth) without return types