code: def test_cosine_schedule(self) -> None:
      self.assertAlmostEqual(
          cosine_schedule(1, 10, 0.99, 1.0), 0.99030154, 6
      )
      self.assertAlmostEqual(
          cosine_schedule(95, 100, 0.7, 2.0), 1.99477063, 6
      )
      self.assertAlmostEqual(cosine_schedule(0, 1, 0.996, 1.0), 1.0, 6)
      self.assertAlmostEqual(cosine_schedule(10, 10, 0.0, 1.0), 1.0, 6)
      with self.assertRaises(ValueError):
          cosine_schedule(-1, 1, 0.0, 1.0)
      with self.assertRaises(ValueError):
          cosine_schedule(0, 0, 0.0, 1.0)
      with self.assertRaises(ValueError):
          cosine_schedule(1, 0, 0.0, 1.0)
      with self.assertWarns(
          RuntimeWarning,
          msg="Current step number 11 exceeds max_steps 10.",
      ):
          cosine_schedule(11, 10, 0.0, 1.0)
  
file_path: lightly/tests/utils/test_scheduler.py
imports: import unittest
  import torch
  from torch import nn
  from lightly.utils.scheduler import CosineWarmupScheduler, cosine_schedule
label_desc: Use image node_id 1 for calling the TestScheduler obj's underlying member method code with example usage: obj.test_cosine_schedule() without return types