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 によって収集されたすべての メトリクス (loss や keras_model.compile() に渡されたもの) から履歴 データを自動的に ログ します。
WandbCallback は、“best” の トレーニング ステップに関連付けられた run の概要 メトリクス を設定します。ここで、“best” は monitor および mode 属性によって定義されます。これはデフォルトで最小の val_loss を持つ エポック になります。WandbCallback は、デフォルトで best の epoch に関連付けられた model を保存します。
WandbCallback は、オプションで 勾配 と パラメータ のヒストグラムを ログ できます。
WandbCallback は、オプションで wandb が 可視化 するための トレーニング データ と 検証データ を保存できます。
  
      
          | Arg |  | 
  
  
      
          | monitor | (str) 監視する メトリクス の名前。デフォルトは val_lossです。 | 
      
          | mode | (str) { auto,min,max} のいずれか。min- monitor が最小化されたときに model を保存しますmax- monitor が最大化されたときに model を保存しますauto- model を保存するタイミングを推測しようとします (デフォルト)。 | 
      
          | save_model | True - monitor が以前のすべての エポック より優れている場合に model を保存します False - model を保存しません | 
      
          | save_graph | (boolean) True の場合、model グラフを wandb に保存します (デフォルトは True)。 | 
      
          | save_weights_only | (boolean) True の場合、model の重みのみが保存されます ( model.save_weights(filepath))。それ以外の場合は、完全な model が保存されます (model.save(filepath))。 | 
      
          | log_weights | (boolean) True の場合、model のレイヤーの重みのヒストグラムを保存します。 | 
      
          | log_gradients | (boolean) True の場合、トレーニング 勾配 のヒストグラムを ログ します | 
      
          | training_data | (tuple) model.fitに渡されるのと同じ形式(X,y)。これは 勾配 を計算するために必要です。log_gradientsがTrueの場合は必須です。 | 
      
          | validation_data | (tuple) model.fitに渡されるのと同じ形式(X,y)。wandb が 可視化 するための データの セット。これが設定されている場合、すべての エポック で、wandb は少数の 予測 を行い、後で 可視化 するために 結果 を保存します。画像データを扱っている場合は、正しく ログ するためにinput_typeとoutput_typeも設定してください。 | 
      
          | generator | (generator) wandb が 可視化 するための 検証データ を返す generator。この generator は、タプル (X,y)を返す必要があります。wandb が特定の データ 例を 可視化 するには、validate_dataまたは generator のいずれかを設定する必要があります。画像データを扱っている場合は、正しく ログ するためにinput_typeとoutput_typeも設定してください。 | 
      
          | validation_steps | (int) validation_dataが generator の場合、完全な 検証セット に対して generator を実行するステップ数。 | 
      
          | labels | (list) wandb で データを 可視化 している場合、この ラベル のリストは、多クラス分類器を構築している場合に数値出力を理解可能な文字列に変換します。バイナリ分類器を作成している場合は、2 つの ラベル のリスト [“false の ラベル “, “true の ラベル “] を渡すことができます。 validate_dataと generator が両方とも false の場合、これは何も行いません。 | 
      
          | predictions | (int) 各 エポック で 可視化 するために行う 予測 の数。最大は 100 です。 | 
      
          | input_type | (string) 可視化 を支援するための model 入力のタイプ。次のいずれかになります: ( image,images,segmentation_mask,auto)。 | 
      
          | output_type | (string) 可視化 を支援するための model 出力のタイプ。次のいずれかになります: ( image,images,segmentation_mask,label)。 | 
      
          | log_evaluation | (boolean) True の場合、各 エポック で 検証データ と model の 予測 を含む Table を保存します。詳細については、 validation_indexes、validation_row_processor、およびoutput_row_processorを参照してください。 | 
      
          | class_colors | ([float, float, float]) 入力または出力が セグメンテーションマスク の場合、各クラスの rgb タプル (範囲 0 ~ 1) を含む配列。 | 
      
          | log_batch_frequency | (integer) None の場合、 コールバック はすべての エポック を ログ します。整数に設定すると、 コールバック は log_batch_frequencyバッチごとに トレーニング メトリクス を ログ します。 | 
      
          | log_best_prefix | (string) None の場合、追加の概要 メトリクス は保存されません。文字列に設定すると、監視対象の メトリクス と エポック にこの 値 が付加され、概要 メトリクス として保存されます。 | 
      
          | validation_indexes | ([wandb.data_types._TableLinkMixin]) 各 検証 例に関連付ける インデックス キー の順序付きリスト。log_evaluation が True で、 validation_indexesが指定されている場合、 検証データ の Table は作成されず、代わりに各 予測 がTableLinkMixinで表される行に関連付けられます。このような キー を取得する最も一般的な方法は、行 キー のリストを返すTable.get_index()を使用することです。 | 
      
          | validation_row_processor | (Callable) 検証データ に適用する関数。通常は データを 可視化 するために使用されます。この関数は、 ndx(int) とrow(dict) を受け取ります。model に単一の入力がある場合、row["input"]はその行の入力 データ になります。それ以外の場合は、入力 スロット の名前に基づいて キー が設定されます。fit 関数が単一のターゲットを受け取る場合、row["target"]はその行のターゲット データ になります。それ以外の場合は、出力 スロット の名前に基づいて キー が設定されます。たとえば、入力 データ が単一の ndarray であるが、データを Image として 可視化 したい場合は、lambda ndx, row: {"img": wandb.Image(row["input"])}を プロセッサ として指定できます。log_evaluation が False の場合、またはvalidation_indexesが存在する場合は無視されます。 | 
      
          | output_row_processor | (Callable) validation_row_processorと同じですが、model の出力に適用されます。row["output"]には、model 出力の 結果 が含まれます。 | 
      
          | infer_missing_processors | (bool) validation_row_processorとoutput_row_processorが見つからない場合に推論する必要があるかどうかを決定します。デフォルトは True です。labelsが指定されている場合は、必要に応じて分類タイプの プロセッサ を推論しようとします。 | 
      
          | log_evaluation_frequency | (int) 評価 結果 を ログ する頻度を決定します。デフォルトは 0 (トレーニング の最後にのみ) です。すべての エポック で ログ する場合は 1 に、他のすべての エポック で ログ する場合は 2 に設定します。log_evaluation が False の場合は効果がありません。 | 
      
          | compute_flops | (bool) Keras Sequential または Functional model の FLOP を GigaFLOP 単位で計算します。 | 
  
メソッド
get_flops
View source
推論モードで tf.keras.Model または tf.keras.Sequential model の FLOPS [GFLOPs] を計算します。
内部的には tf.compat.v1.profiler を使用します。
set_model
View source
set_params
View source
 
    
	
  
    
    
	
    
    
	2 - WandbEvalCallback
    
	
モデルの予測の可視化のために Keras の callback を構築するための抽象基底クラス。
WandbEvalCallback(
    data_table_columns: List[str],
    pred_table_columns: List[str],
    *args,
    **kwargs
) -> None
分類、オブジェクト検出、セグメンテーションなどのタスクのために、model.fit() に渡すことができる on_epoch_end でモデルの予測を可視化するための callback を構築できます。
これを使用するには、この基底 callback クラスを継承し、add_ground_truth と add_model_prediction メソッドを実装します。
基底クラスは、以下を処理します。
- 正解をログするための data_tableと、予測のためのpred_tableを初期化します。
- data_tableにアップロードされたデータは、- pred_tableの参照として使用されます。これは、メモリフットプリントを削減するためです。- data_table_refは、参照されたデータにアクセスするために使用できるリストです。その方法については、以下の例を確認してください。
- テーブルを W&B に W&B Artifacts として記録します。
- 新しい 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 メソッドを実装できます。
メソッド
add_ground_truth
ソースを表示
@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 または同等の hook で 1 回呼び出されます。
add_model_predictions
ソースを表示
@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 または同等の hook で呼び出されます。
init_data_table
ソースを表示
init_data_table(
    column_names: List[str]
) -> None
検証データ 用の W&B Tables を初期化します。
このメソッドを on_train_begin または同等の hook で呼び出します。これに続いて、テーブルに行ごとまたは列ごとにデータを追加します。
  
      
          | Args |  | 
  
  
      
          | column_names | (list) W&B Tables の列名。 | 
  
init_pred_table
ソースを表示
init_pred_table(
    column_names: List[str]
) -> None
モデル評価用の W&B Tables を初期化します。
このメソッドを on_epoch_end または同等の hook で呼び出します。これに続いて、テーブルに行ごとまたは列ごとにデータを追加します。
  
      
          | Args |  | 
  
  
      
          | column_names | (list) W&B Tables の列名。 | 
  
log_data_table
ソースを表示
log_data_table(
    name: str = "val",
    type: str = "dataset",
    table_name: str = "val_data"
) -> None
data_table を W&B artifact としてログに記録し、それに対して use_artifact を呼び出します。
これにより、評価テーブルは、すでにアップロードされたデータ (画像、テキスト、スカラーなど) の参照を、再アップロードせずに使用できます。
  
      
          | Args |  | 
  
  
      
          | name | (str) この Artifact の人間が読める名前。UI でこの Artifact を識別したり、use_artifact 呼び出しで参照したりする方法です。(デフォルトは ‘val’) | 
      
          | type | (str) Artifact のタイプ。Artifact を整理および区別するために使用されます。(デフォルトは ‘dataset’) | 
      
          | table_name | (str) UI に表示されるテーブルの名前。(デフォルトは ‘val_data’)。 | 
  
log_pred_table
ソースを表示
log_pred_table(
    type: str = "evaluation",
    table_name: str = "eval_data",
    aliases: Optional[List[str]] = None
) -> None
モデル評価用の W&B Tables をログに記録します。
テーブルは複数回ログに記録され、新しいバージョンが作成されます。これを使用して、さまざまな間隔でモデルをインタラクティブに比較します。
  
      
          | Args |  | 
  
  
      
          | type | (str) Artifact のタイプ。Artifact を整理および区別するために使用されます。(デフォルトは ’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 は、コールバックメソッドが wandb に引数として取る logs 辞書を自動的に ログ 記録します。
このコールバックは、以下のものを自動的に 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 は、トレーニングデータセットのカーディナリティとバッチサイズの積として計算できます。
  
      
          | 引数 |  | 
  
  
      
          | log_freq | (“epoch”、“batch”、または int) “epoch” の場合、各エポックの最後にメトリクスをログ記録します。“batch” の場合、各バッチの最後にメトリクスをログ記録します。整数である場合、その数のバッチの最後にメトリクスをログ記録します。デフォルトは “epoch” です。 | 
      
          | initial_global_step | (int) initial_epochからトレーニングを再開し、学習率スケジューラを使用している場合は、この引数を使用して学習率を正しくログ記録します。これはstep_size * initial_stepとして計算できます。デフォルトは 0 です。 | 
  
メソッド
set_model
set_params
 
    
	
  
    
    
	
    
    
	4 - WandbModelCheckpoint
    
	
Keras の model または model の重みを定期的に保存するチェックポイントです。
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 にアップロードされます。
この callback は tf.keras.callbacks.ModelCheckpoint からサブクラス化されているため、
チェックポイントのロジックは親の callback によって処理されます。詳細については、
こちらをご覧ください: https://www.tensorflow.org/api_docs/python/tf/keras/callbacks/ModelCheckpoint
この callback は、model.fit() を使用した training と組み合わせて使用し、
model または重み (チェックポイントファイル内) を一定の間隔で保存します。 model のチェックポイントは、W&B Artifacts としてログに記録されます。詳細については、こちらをご覧ください:
https://docs.wandb.ai/guides/artifacts
この callback は、次の機能を提供します。
- 「monitor」に基づいて「最高のパフォーマンス」を達成した model を保存します。
- パフォーマンスに関係なく、エポックの最後に毎回 model を保存します。
- エポックの終わり、または固定数の training バッチの後に model を保存します。
- model の重みのみを保存するか、model 全体を保存します。
- SavedModel 形式または .h5形式で model を保存します。
  
      
          | Args |  | 
  
  
      
          | filepath | (Union[str, os.PathLike]) model ファイルを保存するパス。 filepathには、epochの値とlogs(on_epoch_endで渡される) のキーによって入力される名前付きの書式設定オプションを含めることができます。たとえば、filepathがmodel-{epoch:02d}-{val_loss:.2f}の場合、model のチェックポイントは、ファイル名にエポック番号と検証損失を付けて保存されます。 | 
      
          | monitor | (str) 監視するメトリクスの名前。デフォルトは “val_loss” です。 | 
      
          | verbose | (int) 冗長モード、0 または 1。モード 0 はサイレントで、モード 1 は callback がアクションを実行するときにメッセージを表示します。 | 
      
          | save_best_only | (bool) save_best_only=Trueの場合、model が「最高」と見なされる場合にのみ保存され、監視対象の量に応じて、最新の最高の model は上書きされません。filepathに{epoch}のような書式設定オプションが含まれていない場合、filepathはローカルで新しいより良い model によって上書きされます。 Artifact としてログに記録された model は、引き続き正しいmonitorに関連付けられます。 Artifacts は継続的にアップロードされ、新しい最高の model が見つかると、個別にバージョン管理されます。 | 
      
          | save_weights_only | (bool) True の場合、model の重みのみが保存されます。 | 
      
          | mode | (Mode) {‘auto’, ‘min’, ‘max’} のいずれか。 val_accの場合、これはmaxである必要があり、val_lossの場合、これはminである必要があります。 | 
      
          | save_freq | (Union[SaveStrategy, int]) epochまたは整数。'epoch'を使用すると、callback は各エポックの後に model を保存します。整数を使用すると、callback はこの多数のバッチの終わりに model を保存します。val_accやval_lossなどの検証メトリクスを監視する場合、これらのメトリクスはエポックの最後にのみ使用可能であるため、save_freq を “epoch” に設定する必要があることに注意してください。 | 
      
          | initial_value_threshold | (Optional[float]) 監視対象のメトリクスの浮動小数点初期「最良」値。 | 
  
Methods
set_model
set_params