近重新調試一段pytorch 程式碼,以前的伺服器上完全沒問題,但換了一台機械,從頭安裝了新版本的cuda, anaconda ,pytorch 等,之前的程式碼泛起各種版本不合適的問題。
問題:
目下當今說說這個問題。網頁設計運行pytorch 時出現的環境以下:
- RuntimeError:
- An attempt has been made to start a new process before the
- current process has finished its bootstrapping phase.
-
- This probably means that you are not using fork to start your
- child processes and you have forgotten to use the proper idiom
- in the main module:
-
- if __name__ == '__main__':
- freeze_support()
- ...
-
- The "freeze_support()" line can be omitted if the program
- is not going to be frozen to produce an executable.
複製代碼
- from ultralytics import YOLO
-
- # Load a model
- model = YOLO("yolov8n.yaml") # build a new model from scratch
- model = YOLO("yolov8n.pt") # load a pretrained model (recommended for training)
-
- if __name__ == '__main__':
- # Use the model
- model.train(data="coco128.yaml", epochs=3) # train the model
- metrics = model.val() # evaluate model performance on the validation set
- results = model("https://ultralytics.com/images/bus.jpg") # predict on an image
- path = model.export(format="onnx") # export the model to ONNX format
複製代碼
緣由:
在網上查找成果,緣由是多曆程的原因。具體可參考博文:Python 中的if __name__ == '__main__' 該若何理解。
解決方式:
既然是多履行緒的原因,那麼可以從兩個角度解決問題:
1. 程式碼在運行 epoch 之前,加上 if __name__=='__main__'
試過,有用,一次經由過程。
2. 不使用多線程,也就是去掉num_workers 參數,或設定 num_workers=0。
(今朝還沒試過,因為我還是想用多履行緒。)
文章出處: NetYea 網頁設計
參考文章
https://blog.csdn.net/u014546828/article/details/109235539
以下文章來自:
留言列表