Batch_size zbyt mały.

0

Witam,
uczę się deep learningu. Próbuję swoich sił w konkursie kaggle. Niestety mój GPU to tylko GTX 1050. Mój problem jest taki, że maksymalny batch size to 4. Który nie powoduje błędu. Czy da się jakoś to poprawić? Korzystam z MASK_RCNN.

    # Train on 1 GPU and 8 images per GPU. We can put multiple images on each
    # GPU because the images are small. Batch size is 8 (GPUs * images/GPU).
    GPU_COUNT = 1
    IMAGES_PER_GPU = 8
    
    BACKBONE = 'resnet50'
    
    NUM_CLASSES = 2  # background + 1 pneumonia classes
    
    IMAGE_MIN_DIM = 256
    IMAGE_MAX_DIM = 256
    RPN_ANCHOR_SCALES = (16, 32, 64, 128)
    TRAIN_ROIS_PER_IMAGE = 32

Jeżeli zmienie 256 na 128 też wyskakują mi jakieś błedy i uczenie się przerywa.
Wiem, że kernele w kaggle dają możliwość korzystania z ich GPU. Ale niestety 6h trwa... a w polowie wyskoczy jakiś błąd, żeby odswiezyc skrypt. To czlowieka krew zalewa...

Z góry dziękuje :)

1

tldr ten blad to brak pamieci w gpu na 99% ale jak chcesz pomocy to wklej wiadomosc kazdego errora (zreszta batch size nie ma az tak duzego znaczenia jesli odpowiednio dobierzesz siec)
plus widze ze korzystasz z czyjegos kodu i ta osoba podala informacje ->
# Train on 1 GPU and 8 images per GPU. We can put multiple images on each -> pewnie trenowal na gpu z 4/6GB ramu a ty masz 2GB

0

tutaj podaje kod, który analizuje:
https://www.kaggle.com/hmendonca/mask-rcnn-and-coco-transfer-learning-lb-0-155

errory za chwilę też wstawie

1

Nie musisz juz widze ze koles testowal to na 11GB ramu -> totalMemory: 11.17GiB freeMemory: 11.10GiB ty masz na swojej 2GB wiec musisz trenowac na mniejszych batchach

0

Dzięki za odpowiedz :)

to co zmieniłem to zmniejszylem rozmiar zdjęcia do 128 i zostawiłem batch_size i niby cały proces się wykonuje. Niestety wyniki o rząd wielkości gorsze, a sam model jest przeuczony. Chciałbym też zapytać, czy jeżeli w terminalu dostaje taki error:

2019-02-15 16:01:39.899338: W tensorflow/core/common_runtime/bfc_allocator.cc:211] Allocator (GPU_0_bfc) ran out of memory trying to allocate 2.82GiB. The caller indicates that this is not a failure, but may mean that there could be performance gains if more memory were available.
2019-02-15 16:01:40.156360: W tensorflow/core/common_runtime/bfc_allocator.cc:211] Allocator (GPU_0_bfc) ran out of memory trying to allocate 2.82GiB. The caller indicates that this is not a failure, but may mean that there could be performance gains if more memory were available.
2019-02-15 16:01:40.257689: W tensorflow/core/common_runtime/bfc_allocator.cc:211] Allocator (GPU_0_bfc) ran out of memory trying to allocate 2.25GiB. The caller indicates that this is not a failure, but may mean that there could be performance gains if more memory were available.
2019-02-15 16:01:41.250851: W tensorflow/core/common_runtime/bfc_allocator.cc:211] Allocator (GPU_0_bfc) ran out of memory trying to allocate 2.39GiB. The caller indicates that this is not a failure, but may mean that there could be performance gains if more memory were available.

To mogę go olać skoro ostatecznie w notebooku proces się wykonuje, czy taki komunikat może negatywnie wpływać na końcowy wynik?

0

Tak mozesz go olac.
Wielkosc batcha ma znaczenie przy procesie nauczania musisz dobrac odpowiednio learning rate plus mniejszy batch daje czesto lepsze rezultaty ale trenuje sie go dluzej. -> https://blog.openai.com/science-of-ai/
Co do wynikow masz duzo gorsze wyniki bo przeskalowales zdjecia w dol nie dobierajac odpowiednio wielkosci sieci (mniejsza zlozonosc danych a siec tych samych rozmiarow = overfitting)

1 użytkowników online, w tym zalogowanych: 0, gości: 1