class_docstr: Callback that streams epoch results to a CSV file.
  
  Supports all values that can be represented as a string,
  including 1D iterables such as `np.ndarray`.
  
  Args:
      filename: Filename of the CSV file, e.g. `'run/log.csv'`.
      separator: String used to separate elements in the CSV file.
      append: Boolean. True: append if file exists (useful for continuing
          training). False: overwrite existing file.
  
  Example:
  
  ```python
  csv_logger = CSVLogger('training.log')
  model.fit(X_train, Y_train, callbacks=[csv_logger])
  ```
class_docstr_tok: ["Callback","that","streams","epoch","results","to","a","CSV","file",".","Supports","all","values","that","can","be","represented","as","a","string",",","including","1D","iterables","such","as","`","np.ndarray","`",".","Args",":","filename",":","Filename","of","the","CSV","file",",","e.g",".","`","'run\/log.csv","'","`",".","separator",":","String","used","to","separate","elements","in","the","CSV","file",".","append",":","Boolean",".","True",":","append","if","file","exists","(","useful","for","continuing","training",")",".","False",":","overwrite","existing","file",".","Example",":","``","`","python","csv_logger","=","CSVLogger","(","'training.log","'",")","model.fit","(","X_train",",","Y_train",",","callbacks=","[","csv_logger","]",")","``","`"]
code: def __init__(self, filename, separator=",", append=False):
      super().__init__()
      self.sep = separator
      self.filename = file_utils.path_to_string(filename)
      self.append = append
      self.writer = None
      self.keys = None
      self.append_header = True
  
file_path: keras/keras/callbacks/csv_logger.py
imports: import collections
  import csv
  import numpy
  from keras.api_export import keras_export
  from keras.callbacks.callback import Callback
  from keras.utils import file_utils
label_desc: Use image node_id 1 to create a new CSVLogger object from inherited base classes: Callback with example: obj = CSVLogger(filename, separator, append)