code: def test_linear_warmup_cosine_annealing_lr(
      tmpdir, lr, warmup_epochs, max_epochs, warmup_start_lr, eta_min
  ):
      layer1 = nn.Linear(10, 1)
      layer2 = nn.Linear(10, 1)
      optimizer1 = Adam(layer1.parameters(), lr=lr)
      optimizer2 = Adam(layer2.parameters(), lr=lr)
  
      scheduler1 = LinearWarmupCosineAnnealingLR(
          optimizer1,
          warmup_epochs=warmup_epochs,
          max_epochs=max_epochs,
          warmup_start_lr=warmup_start_lr,
          eta_min=eta_min,
      )
  
      scheduler2 = LinearWarmupCosineAnnealingLR(
          optimizer2,
          warmup_epochs=warmup_epochs,
          max_epochs=max_epochs,
          warmup_start_lr=warmup_start_lr,
          eta_min=eta_min,
      )
  
      # compares closed form lr values against values of get_lr function
      for epoch in range(max_epochs):
          scheduler1.step(epoch)
          expected_lr = scheduler1.get_last_lr()[0]
          current_lr = scheduler2.get_last_lr()[0]
  
          assert math.isclose(expected_lr, current_lr, rel_tol=1e-12)
          optimizer1.step()
          optimizer2.step()
          scheduler2.step()
  
imports: import math
  import pytest
  from flash.core.optimizers import LinearWarmupCosineAnnealingLR
  from flash.core.utilities.imports import _TOPIC_CORE_AVAILABLE
  from torch import nn
  from torch.optim import Adam
label_desc: Use image node_id 1 for calling a global function with example usage: test_linear_warmup_cosine_annealing_lr(tmpdir, lr, warmup_epochs, max_epochs, warmup_start_lr, eta_min) without return types