簡體   English   中英

Tensorflow2 數據流水線如何優化?

[英]How can the Tensorflow2 data pipeline be optimized?

我使用一個大型圖像數據集,我在第一步將其轉換為 tfrecords,然后在下一步加載到 tf.data.dataset。

但是數據集太大了,盡管有 12 GB GPU,但我無法獲得比 10 更大的批量大小。 現在問題出現了,如何優化圖像的加載,以便達到更大的 batch_size。

有沒有辦法使用 Maybe.fit_generator() 來優化這個過程?

這是我當前加載訓練數據的過程(驗證數據以相同的方式轉換,因此這里也沒有顯示):

train_dataset = dataset.load_tfrecord_dataset(dataset_path, class_names_path, image_size)
train_dataset = train_dataset.shuffle(buffer_size=shuffle_buffer)
train_dataset = train_dataset.batch(batch_size)
train_dataset = train_dataset.map(lambda x, y: (
        dataset.transform_images(x, image_size),
        dataset.transform_targets(y, anchors, anchor_masks, image_size)))
train_dataset = train_dataset.prefetch(batch_size)

我的培訓階段開始:

history = model.fit(train_dataset,
                            epochs=epochs,
                            callbacks=callbacks,
                            validation_data=val_dataset)

不幸的是,無論我們從軟件角度優化多少,都有一些依賴於硬件架構的限制。

在您的情況下,可以增加批量大小的唯一方法是降低圖像的尺寸; 否則您將無法增加批量大小。

tf.data.Dataset() 

是一個用於處理數據的優秀庫,使用正確/必要的預處理步驟(如prefetch )確實可以讓您處理得更快。

然而,由於硬件限制,您無法增加批量大小。 要么減小圖像大小以增加批量大小,要么您需要選擇更大的 GPU >=16 GB VRAM。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM