我想使用 model.fit() 方法訓練一個 keras 模型(比如一個簡單的 FFNN),而不是“手動”進行(即使用此處舉例說明的 gradient.tape 方法)。但是,我需要使用的損失函式非常復雜,無法根據隨機生成的資料批次進行計算。因此,我需要使用“手動”計算的批次資料來訓練模型(即進入每個批次的資料需要具有某些屬性并且不能隨機分配)。
我可以以某種方式將預先計算的批次傳遞給 fit() 方法嗎?
uj5u.com熱心網友回復:
一種解決方案是對Tensorflow Sequence進行子分類。__getitem__
您可以使用該方法為給定索引創建自己的批次。
class MySequence(tf.keras.utils.Sequence):
def __init__(self, x_batch, y_batch) -> None:
super().__init__()
self.x_batch = x_batch # ordered list of batches
self.y_batch = y_batch # idem
self.leny = len(y_batch)
def __len__(self):
return self.leny
def __getitem__(self, idx):
x = self.x_batch[idx]
y = self.y_batch[idx]
return x, y
您可以將此 Sequence 子類的實體傳遞給 Modelfit
方法。
也在shuffle=False
模型fit
引數中設定。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/495335.html