簡體   English   中英

Python 中的多處理 freeze_support() 錯誤

[英]Multiprocessing freeze_support() error in Python

我是深度學習概念的新手,到目前為止一直在使用 google colab 來運行深度學習模型。 當我對 pycharm 進行同樣的嘗試時,出現了這個錯誤。 Project_name=model,file_name=model.py

from __future__ import print_function, division
import torch
import torch.nn as nn
import torch.optim as optim
from torch.optim import lr_scheduler
import torch.backends.cudnn as cudnn
import numpy as np
import torchvision
from torchvision import datasets, models, transforms
import matplotlib.pyplot as plt
import time
import os
import copy

cudnn.benchmark = True
plt.ion()   # interactive mode


 

data_transforms = {
    'train': transforms.Compose([
        transforms.RandomResizedCrop(224),
        transforms.RandomHorizontalFlip(),
        transforms.ToTensor(),
        transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
    ]),
    'val': transforms.Compose([
        transforms.Resize(256),
        transforms.CenterCrop(224),
        transforms.ToTensor(),
        transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
    ]),
}

data_dir = '.\hymenoptera_data'

image_datasets = {x: datasets.ImageFolder(os.path.join(data_dir, x),
                                          data_transforms[x])
                  for x in ['train', 'val']}
dataloaders = {x: torch.utils.data.DataLoader(image_datasets[x], batch_size=4,
                                             shuffle=True, num_workers=4)
              for x in ['train', 'val']}
dataset_sizes = {x: len(image_datasets[x]) for x in ['train', 'val']}
class_names = image_datasets['train'].classes

device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")


##visualize the model

def imshow(inp, title=None):
    """Imshow for Tensor."""
    inp = inp.numpy().transpose((1, 2, 0))
    mean = np.array([0.485, 0.456, 0.406])
    std = np.array([0.229, 0.224, 0.225])
    inp = std * inp + mean
    inp = np.clip(inp, 0, 1)
    plt.imshow(inp)
    if title is not None:
        plt.title(title)
    plt.pause(0.001)  # pause a bit so that plots are updated


 
inputs, classes = next(iter(dataloaders['train']))
 
out = torchvision.utils.make_grid(inputs)

imshow(out, title=[class_names[x] for x in classes])








我沒有任何主要方法,直接運行model.py,這是否合法?idk

錯誤:



(venv) PS C:\Users\prasa\PycharmProjects\model> python model.py
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\python 39\lib\multiprocessing\spawn.py", line 116, in spawn_main
    exitcode = _main(fd, parent_sentinel)
  File "C:\python 39\lib\multiprocessing\spawn.py", line 125, in _main
    prepare(preparation_data)
  File "C:\python 39\lib\multiprocessing\spawn.py", line 236, in prepare
    _fixup_main_from_path(data['init_main_from_path'])
  File "C:\python 39\lib\multiprocessing\spawn.py", line 287, in _fixup_main_from_path
    main_content = runpy.run_path(main_path,
  File "C:\python 39\lib\runpy.py", line 268, in run_path
    return _run_module_code(code, init_globals, run_name,
  File "C:\python 39\lib\runpy.py", line 97, in _run_module_code
                ...

        The "freeze_support()" line can be omitted if the program
        is not going to be frozen to produce an executable.



如果您的應用程序沒有main() function 但在導入期間執行它的代碼,則multiprocessing標准庫模塊無法正常工作。

解決方案是將代碼移動到main() function 之類的

import ...
...


def main():
     # your code here....


if __name__ == "__main__":
     main()

暫無
暫無

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

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