class_docstr: Callback that outputs the result of each epoch_number or batch into a CSV file in an atomic matter.
  
  Args:
      filename (str): The filename of the CSV.
      temporary_filename (str, optional): Temporary filename for the CSV file so that it can be written
          atomically.
      batch_granularity (bool): Whether to also output the result of each batch in addition to the epochs.
          (Default value = False)
      separator (str): The separator to use in the CSV.
          (Default value = ',')
      append (bool): Whether to append to an existing file.
class_docstr_tok: ["Callback","that","outputs","the","result","of","each","epoch_number","or","batch","into","a","CSV","file","in","an","atomic","matter",".","Args",":","filename","(","str",")",":","The","filename","of","the","CSV",".","temporary_filename","(","str",",","optional",")",":","Temporary","filename","for","the","CSV","file","so","that","it","can","be","written","atomically",".","batch_granularity","(","bool",")",":","Whether","to","also","output","the","result","of","each","batch","in","addition","to","the","epochs",".","(","Default","value","=","False",")","separator","(","str",")",":","The","separator","to","use","in","the","CSV",".","(","Default","value","=","'",",","'",")","append","(","bool",")",":","Whether","to","append","to","an","existing","file","."]
code: def _on_epoch_end_write(self, epoch_number: int, logs: Dict):
      logs = {**logs, **self._get_current_learning_rates()}
      atomic_lambda_save(
          self.filename,
          self._save_log,
          (logs,),
          temporary_filename=self.temporary_filename,
      )
  
imports: import csv
  import os
  from typing import Dict, Optional, TextIO
  from poutyne.framework.callbacks._utils import atomic_lambda_save
  from poutyne.framework.callbacks.callbacks import Callback
label_desc: Use image node_id 6 for calling the AtomicCSVLogger obj's underlying member method code with example usage: obj._on_epoch_end_write(epoch_number, logs) without return types