1 - WandbCallback
    
	
WandbCallback은 keras를 wandb와 자동으로 통합합니다.
WandbCallback(
    monitor="val_loss", verbose=0, mode="auto", save_weights_only=(False),
    log_weights=(False), log_gradients=(False), save_model=(True),
    training_data=None, validation_data=None, labels=None, predictions=36,
    generator=None, input_type=None, output_type=None, log_evaluation=(False),
    validation_steps=None, class_colors=None, log_batch_frequency=None,
    log_best_prefix="best_", save_graph=(True), validation_indexes=None,
    validation_row_processor=None, prediction_row_processor=None,
    infer_missing_processors=(True), log_evaluation_frequency=0,
    compute_flops=(False), **kwargs
)
예시:
model.fit(
    X_train,
    y_train,
    validation_data=(X_test, y_test),
    callbacks=[WandbCallback()],
)
WandbCallback은 keras에서 수집한 모든 메트릭에서 히스토리 데이터를 자동으로 로깅합니다. 손실 및 keras_model.compile()에 전달된 모든 것.
WandbCallback은 “최고” 트레이닝 단계와 관련된 run에 대한 요약 메트릭을 설정합니다.
여기서 “최고"는 monitor 및 mode 속성에 의해 정의됩니다. 이것은 기본적으로 최소 val_loss를 갖는 에포크입니다. WandbCallback은 기본적으로 최고의 epoch와 관련된 모델을 저장합니다.
WandbCallback은 선택적으로 그레이디언트 및 파라미터 히스토그램을 로깅할 수 있습니다.
WandbCallback은 시각화를 위해 트레이닝 및 검증 데이터를 wandb에 선택적으로 저장할 수 있습니다.
  
      
          | Args | 
           | 
      
  
  
      
          monitor | 
          (str) 모니터링할 메트릭 이름. 기본값은 val_loss입니다. | 
      
      
          mode | 
          (str) {auto, min, max} 중 하나입니다. min - 모니터가 최소화될 때 모델 저장 max - 모니터가 최대화될 때 모델 저장 auto - 모델을 저장할 시기를 추측하려고 시도합니다(기본값). | 
      
      
          save_model | 
          True - 모니터가 이전의 모든 에포크보다 좋을 때 모델을 저장합니다. False - 모델을 저장하지 않습니다. | 
      
      
          save_graph | 
          (boolean) True인 경우 모델 그래프를 wandb에 저장합니다 (기본값은 True). | 
      
      
          save_weights_only | 
          (boolean) True인 경우 모델의 가중치만 저장됩니다 (model.save_weights(filepath)), 그렇지 않으면 전체 모델이 저장됩니다 (model.save(filepath)). | 
      
      
          log_weights | 
          (boolean) True인 경우 모델 레이어 가중치의 히스토그램을 저장합니다. | 
      
      
          log_gradients | 
          (boolean) True인 경우 트레이닝 그레이디언트의 히스토그램을 로깅합니다. | 
      
      
          training_data | 
          model.fit에 전달된 것과 동일한 형식 (X,y)입니다. 이것은 그레이디언트를 계산하는 데 필요합니다. log_gradients가 True인 경우 필수입니다. | 
      
      
          validation_data | 
          model.fit에 전달된 것과 동일한 형식 (X,y)입니다. wandb가 시각화할 데이터 세트입니다. 이것이 설정되면 매 에포크마다 wandb는 적은 수의 예측값을 만들고 나중에 시각화할 수 있도록 결과를 저장합니다. 이미지 데이터를 사용하는 경우 올바르게 로깅하려면 input_type 및 output_type도 설정하십시오. | 
      
      
          generator | 
          wandb가 시각화할 검증 데이터를 반환하는 제너레이터입니다. 이 제너레이터는 튜플 (X,y)를 반환해야 합니다. wandb가 특정 데이터 예제를 시각화하려면 validate_data 또는 제너레이터를 설정해야 합니다. 이미지 데이터를 사용하는 경우 올바르게 로깅하려면 input_type 및 output_type도 설정하십시오. | 
      
      
          validation_steps | 
          validation_data가 제너레이터인 경우 전체 검증 세트에 대해 제너레이터를 실행할 단계 수입니다. | 
      
      
          labels | 
          wandb로 데이터를 시각화하는 경우 이 레이블 목록은 다중 클래스 분류기를 구축하는 경우 숫자 출력을 이해 가능한 문자열로 변환합니다. 이진 분류기를 만드는 경우 두 개의 레이블 목록 [“false에 대한 레이블”, “true에 대한 레이블”]을 전달할 수 있습니다. validate_data와 제너레이터가 모두 false인 경우 아무 작업도 수행하지 않습니다. | 
      
      
          predictions | 
          각 에포크에서 시각화를 위해 만들 예측 수이며 최대값은 100입니다. | 
      
      
          input_type | 
          시각화를 돕기 위한 모델 입력 유형입니다. 다음 중 하나일 수 있습니다. (image, images, segmentation_mask, auto). | 
      
      
          output_type | 
          시각화를 돕기 위한 모델 출력 유형입니다. 다음 중 하나일 수 있습니다. (image, images, segmentation_mask, label). | 
      
      
          log_evaluation | 
          True인 경우 각 에포크에서 검증 데이터와 모델의 예측값을 포함하는 Table을 저장합니다. 자세한 내용은 validation_indexes, validation_row_processor 및 output_row_processor를 참조하십시오. | 
      
      
          class_colors | 
          입력 또는 출력이 세분화 마스크인 경우 각 클래스에 대한 rgb 튜플(범위 0-1)을 포함하는 배열입니다. | 
      
      
          log_batch_frequency | 
          None인 경우 콜백은 모든 에포크를 로깅합니다. 정수로 설정하면 콜백은 log_batch_frequency 배치마다 트레이닝 메트릭을 로깅합니다. | 
      
      
          log_best_prefix | 
          None인 경우 추가 요약 메트릭이 저장되지 않습니다. 문자열로 설정하면 모니터링되는 메트릭과 에포크가 이 값으로 시작하여 요약 메트릭으로 저장됩니다. | 
      
      
          validation_indexes | 
          각 검증 예제와 연결할 인덱스 키의 정렬된 목록입니다. log_evaluation이 True이고 validation_indexes가 제공되면 검증 데이터의 Table이 생성되지 않고 대신 각 예측이 TableLinkMixin으로 표시되는 행과 연결됩니다. 이러한 키를 얻는 가장 일반적인 방법은 행 키 목록을 반환하는 Table.get_index()를 사용하는 것입니다. | 
      
      
          validation_row_processor | 
          검증 데이터에 적용할 함수로, 일반적으로 데이터를 시각화하는 데 사용됩니다. 함수는 ndx(int)와 row(dict)를 받습니다. 모델에 단일 입력이 있는 경우 row["input"]은 행에 대한 입력 데이터가 됩니다. 그렇지 않으면 입력 슬롯의 이름을 기반으로 키가 지정됩니다. 적합 함수가 단일 대상을 사용하는 경우 row["target"]은 행에 대한 대상 데이터가 됩니다. 그렇지 않으면 출력 슬롯의 이름을 기반으로 키가 지정됩니다. 예를 들어 입력 데이터가 단일 ndarray이지만 데이터를 이미지로 시각화하려는 경우 lambda ndx, row: {"img": wandb.Image(row["input"])}를 프로세서로 제공할 수 있습니다. log_evaluation이 False이거나 validation_indexes가 있는 경우 무시됩니다. | 
      
      
          output_row_processor | 
          validation_row_processor와 동일하지만 모델의 출력에 적용됩니다. row["output"]에는 모델 출력 결과가 포함됩니다. | 
      
      
          infer_missing_processors | 
          누락된 경우 validation_row_processor 및 output_row_processor를 추론해야 하는지 여부를 결정합니다. 기본값은 True입니다. labels가 제공되면 적절한 분류 유형 프로세서를 추론하려고 시도합니다. | 
      
      
          log_evaluation_frequency | 
          평가 결과를 로깅할 빈도를 결정합니다. 기본값은 0입니다(트레이닝 종료 시에만). 모든 에포크를 로깅하려면 1로 설정하고, 다른 모든 에포크를 로깅하려면 2로 설정하는 식입니다. log_evaluation이 False인 경우에는 효과가 없습니다. | 
      
      
          compute_flops | 
          Keras Sequential 또는 Functional 모델의 FLOP 수를 GigaFLOPs 단위로 계산합니다. | 
      
  
Methods
get_flops
View source
추론 모드에서 tf.keras.Model 또는 tf.keras.Sequential 모델에 대한 FLOPS [GFLOPs]를 계산합니다.
내부적으로 tf.compat.v1.profiler를 사용합니다.
set_model
View source
set_params
View source
 
    
	
  
    
    
	
    
    
	2 - WandbEvalCallback
    
	
모델 예측 시각화를 위한 Keras 콜백을 빌드하는 추상 기본 클래스입니다.
WandbEvalCallback(
    data_table_columns: List[str],
    pred_table_columns: List[str],
    *args,
    **kwargs
) -> None
분류, 오브젝트 검출, 분할 등 작업을 위해 model.fit()에 전달될 수 있는 on_epoch_end에서 모델 예측을 시각화하기 위한 콜백을 빌드할 수 있습니다.
이를 사용하려면 이 기본 콜백 클래스에서 상속받아 add_ground_truth 및 add_model_prediction 메소드를 구현합니다.
기본 클래스는 다음 사항을 처리합니다.
- 그라운드 트루스 로깅을 위한 
data_table 및 예측을 위한 pred_table을 초기화합니다. 
data_table에 업로드된 데이터는 pred_table에 대한 참조로 사용됩니다. 이는 메모리 공간을 줄이기 위함입니다. data_table_ref는 참조된 데이터에 액세스하는 데 사용할 수 있는 목록입니다. 아래 예제를 통해 수행 방법을 확인하십시오. 
- 테이블을 W&B Artifacts로 W&B에 로그합니다.
 
- 각 새 
pred_table은 에일리어스와 함께 새 버전으로 로그됩니다. 
예시:
class WandbClfEvalCallback(WandbEvalCallback):
    def __init__(self, validation_data, data_table_columns, pred_table_columns):
        super().__init__(data_table_columns, pred_table_columns)
        self.x = validation_data[0]
        self.y = validation_data[1]
    def add_ground_truth(self):
        for idx, (image, label) in enumerate(zip(self.x, self.y)):
            self.data_table.add_data(idx, wandb.Image(image), label)
    def add_model_predictions(self, epoch):
        preds = self.model.predict(self.x, verbose=0)
        preds = tf.argmax(preds, axis=-1)
        data_table_ref = self.data_table_ref
        table_idxs = data_table_ref.get_index()
        for idx in table_idxs:
            pred = preds[idx]
            self.pred_table.add_data(
                epoch,
                data_table_ref.data[idx][0],
                data_table_ref.data[idx][1],
                data_table_ref.data[idx][2],
                pred,
            )
model.fit(
    x,
    y,
    epochs=2,
    validation_data=(x, y),
    callbacks=[
        WandbClfEvalCallback(
            validation_data=(x, y),
            data_table_columns=["idx", "image", "label"],
            pred_table_columns=["epoch", "idx", "image", "label", "pred"],
        )
    ],
)
보다 세분화된 제어를 위해 on_train_begin 및 on_epoch_end 메소드를 재정의할 수 있습니다. N개 배치 후 샘플을 기록하려면 on_train_batch_end 메소드를 구현하면 됩니다.
Methods
add_ground_truth
View source
@abc.abstractmethod
add_ground_truth(
    logs: Optional[Dict[str, float]] = None
) -> None
그라운드 트루스 데이터를 data_table에 추가합니다.
이 메소드를 사용하여 init_data_table 메소드를 사용하여 초기화된 data_table에 유효성 검사/트레이닝 데이터를 추가하는 로직을 작성합니다.
예시:
for idx, data in enumerate(dataloader):
    self.data_table.add_data(idx, data)
이 메소드는 on_train_begin 또는 이와 동등한 훅에서 한 번 호출됩니다.
add_model_predictions
View source
@abc.abstractmethod
add_model_predictions(
    epoch: int,
    logs: Optional[Dict[str, float]] = None
) -> None
모델의 예측값을 pred_table에 추가합니다.
이 메소드를 사용하여 init_pred_table 메소드를 사용하여 초기화된 pred_table에 대한 유효성 검사/트레이닝 데이터에 대한 모델 예측을 추가하는 로직을 작성합니다.
예시:
# 데이터 로더가 샘플을 섞지 않는다고 가정합니다.
for idx, data in enumerate(dataloader):
    preds = model.predict(data)
    self.pred_table.add_data(
        self.data_table_ref.data[idx][0],
        self.data_table_ref.data[idx][1],
        preds,
    )
이 메소드는 on_epoch_end 또는 이와 동등한 훅에서 호출됩니다.
init_data_table
View source
init_data_table(
    column_names: List[str]
) -> None
유효성 검사 데이터를 위한 W&B Tables를 초기화합니다.
이 메소드를 on_train_begin 또는 이와 동등한 훅에서 호출합니다. 그 뒤에 테이블 행 또는 열 단위로 데이터를 추가합니다.
  
      
          | Args | 
           | 
      
  
  
      
          column_names | 
          (list) W&B Tables의 열 이름입니다. | 
      
  
init_pred_table
View source
init_pred_table(
    column_names: List[str]
) -> None
모델 평가를 위한 W&B Tables를 초기화합니다.
이 메소드를 on_epoch_end 또는 이와 동등한 훅에서 호출합니다. 그 뒤에 테이블 행 또는 열 단위로 데이터를 추가합니다.
  
      
          | Args | 
           | 
      
  
  
      
          column_names | 
          (list) W&B Tables의 열 이름입니다. | 
      
  
log_data_table
View source
log_data_table(
    name: str = "val",
    type: str = "dataset",
    table_name: str = "val_data"
) -> None
data_table을 W&B 아티팩트로 기록하고 그에 대해 use_artifact를 호출합니다.
이를 통해 평가 테이블은 이미 업로드된 데이터(이미지, 텍스트, 스칼라 등)의 참조를 다시 업로드하지 않고 사용할 수 있습니다.
  
      
          | Args | 
           | 
      
  
  
      
          name | 
          (str) 이 Artifacts에 대한 사람이 읽을 수 있는 이름입니다. UI에서 이 Artifacts를 식별하거나 use_artifact 호출에서 참조하는 방법입니다. (기본값은 ‘val’) | 
      
      
          type | 
          (str) Artifacts의 유형으로, Artifacts를 구성하고 차별화하는 데 사용됩니다. (기본값은 ‘dataset’) | 
      
      
          table_name | 
          (str) UI에 표시될 테이블의 이름입니다. (기본값은 ‘val_data’) | 
      
  
log_pred_table
View source
log_pred_table(
    type: str = "evaluation",
    table_name: str = "eval_data",
    aliases: Optional[List[str]] = None
) -> None
모델 평가를 위한 W&B Tables를 기록합니다.
테이블은 새 버전을 생성하여 여러 번 기록됩니다. 이를 사용하여 다른 간격으로 모델을 대화식으로 비교합니다.
  
      
          | Args | 
           | 
      
  
  
      
          type | 
          (str) Artifacts의 유형으로, Artifacts를 구성하고 차별화하는 데 사용됩니다. (기본값은 ’evaluation') | 
      
      
          table_name | 
          (str) UI에 표시될 테이블의 이름입니다. (기본값은 ’eval_data') | 
      
      
          aliases | 
          (List[str]) 예측 테이블의 에일리어스 목록입니다. | 
      
  
set_model
set_params
 
    
	
  
    
    
	
    
    
	3 - WandbMetricsLogger
    
	
시스템 메트릭을 W&B에 보내는 로거입니다.
WandbMetricsLogger(
    log_freq: Union[LogStrategy, int] = "epoch",
    initial_global_step: int = 0,
    *args,
    **kwargs
) -> None
WandbMetricsLogger는 콜백 메소드가 인수로 사용하는 logs 사전을 자동으로 wandb에 기록합니다.
이 콜백은 다음을 W&B run 페이지에 자동으로 기록합니다.
- 시스템 (CPU/GPU/TPU) 메트릭,
 
model.compile에 정의된 트레이닝 및 유효성 검사 메트릭, 
- 학습률 (고정 값 및 학습률 스케줄러 모두)
 
참고 사항:
initial_epoch를 model.fit에 전달하여 트레이닝을 재개하고 학습률 스케줄러를 사용하는 경우, initial_global_step을 WandbMetricsLogger에 전달해야 합니다. initial_global_step은 step_size * initial_step입니다. 여기서 step_size는 에포크당 트레이닝 단계 수입니다. step_size는 트레이닝 데이터셋의 Cardinality와 배치 크기의 곱으로 계산할 수 있습니다.
  
      
          | Args | 
           | 
      
  
  
      
          log_freq | 
          (“epoch”, “batch”, 또는 int) “epoch"인 경우 각 에포크가 끝날 때 메트릭을 기록합니다. “batch"인 경우 각 배치 끝날 때 메트릭을 기록합니다. 정수인 경우 해당 배치 수만큼 끝날 때 메트릭을 기록합니다. 기본값은 “epoch"입니다. | 
      
      
          initial_global_step | 
          (int) initial_epoch에서 트레이닝을 재개하고 학습률 스케줄러를 사용하는 경우 학습률을 올바르게 기록하려면 이 인수를 사용하십시오. step_size * initial_step으로 계산할 수 있습니다. 기본값은 0입니다. | 
      
  
Methods
set_model
set_params
 
    
	
  
    
    
	
    
    
	4 - WandbModelCheckpoint
    
	
주기적으로 Keras 모델 또는 모델 가중치를 저장하는 체크포인트입니다.
WandbModelCheckpoint(
    filepath: StrPath,
    monitor: str = "val_loss",
    verbose: int = 0,
    save_best_only: bool = (False),
    save_weights_only: bool = (False),
    mode: Mode = "auto",
    save_freq: Union[SaveStrategy, int] = "epoch",
    initial_value_threshold: Optional[float] = None,
    **kwargs
) -> None
저장된 가중치는 wandb.Artifact 로 W&B에 업로드됩니다.
이 콜백은 tf.keras.callbacks.ModelCheckpoint 의 서브클래스이므로 체크포인트 로직은 상위 콜백에서 처리합니다. 자세한 내용은 https://www.tensorflow.org/api_docs/python/tf/keras/callbacks/ModelCheckpoint 에서 확인할 수 있습니다.
이 콜백은 model.fit() 을 사용한 트레이닝과 함께 사용하여 특정 간격으로 모델 또는 가중치 (체크포인트 파일)를 저장합니다. 모델 체크포인트는 W&B Artifacts 로 기록됩니다. 자세한 내용은 https://docs.wandb.ai/guides/artifacts 에서 확인할 수 있습니다.
이 콜백은 다음과 같은 기능을 제공합니다.
- “monitor"를 기반으로 “최고 성능"을 달성한 모델을 저장합니다.
 
- 성능에 관계없이 모든 에포크가 끝날 때마다 모델을 저장합니다.
 
- 에포크가 끝날 때 또는 고정된 수의 트레이닝 배치 후에 모델을 저장합니다.
 
- 모델 가중치만 저장하거나 전체 모델을 저장합니다.
 
- SavedModel 형식 또는 
.h5 형식으로 모델을 저장합니다. 
  
      
          | Args | 
           | 
      
  
  
      
          filepath | 
          (Union[str, os.PathLike]) 모델 파일을 저장할 경로입니다. filepath 에는 epoch 의 값과 logs 의 키 ( on_epoch_end 에 전달됨)로 채워지는 명명된 형식 옵션이 포함될 수 있습니다. 예를 들어 filepath 가 model-{epoch:02d}-{val_loss:.2f} 이면 모델 체크포인트는 에포크 번호와 파일 이름의 유효성 검사 손실과 함께 저장됩니다. | 
      
      
          monitor | 
          (str) 모니터링할 메트릭 이름입니다. 기본값은 “val_loss"입니다. | 
      
      
          verbose | 
          (int) 상세 모드, 0 또는 1입니다. 모드 0은 자동, 모드 1은 콜백이 작업을 수행할 때 메시지를 표시합니다. | 
      
      
          save_best_only | 
          (bool) save_best_only=True 인 경우 모델이 “최고"로 간주될 때만 저장되고 모니터링되는 수량에 따라 최신 최고 모델이 덮어쓰여지지 않습니다. filepath 에 {epoch} 와 같은 형식 옵션이 포함되어 있지 않으면 filepath 는 각 새로운 더 나은 모델에 의해 로컬로 덮어쓰여집니다. 아티팩트로 기록된 모델은 여전히 올바른 monitor 와 연결됩니다. Artifacts 는 새로운 최고 모델이 발견되면 지속적으로 업로드되고 버전이 분리됩니다. | 
      
      
          save_weights_only | 
          (bool) True인 경우 모델의 가중치만 저장됩니다. | 
      
      
          mode | 
          (Mode) {‘auto’, ‘min’, ‘max’} 중 하나입니다. val_acc 의 경우 max 여야 하고 val_loss 의 경우 min 여야 합니다. | 
      
      
          save_freq | 
          (Union[SaveStrategy, int]) epoch 또는 정수입니다. 'epoch' 를 사용하면 콜백은 각 에포크 후에 모델을 저장합니다. 정수를 사용하면 콜백은 이 많은 배치가 끝날 때 모델을 저장합니다. val_acc 또는 val_loss 와 같은 유효성 검사 메트릭을 모니터링할 때 save_freq는 해당 메트릭이 에포크가 끝날 때만 사용할 수 있으므로 “epoch” 로 설정해야 합니다. | 
      
      
          initial_value_threshold | 
          (Optional[float]) 모니터링할 메트릭의 부동 소수점 초기 “최고” 값입니다. | 
      
  
메소드
set_model
set_params