用Python2跑Cycle-GAN模型(Pytorch)

别问我为什么要用python2跑,毕竟官方都要放弃了。。。
步骤网上一堆,此次跑模型也算是先练习一下,积累一点实战经验
代码:GitHub-pytorch
本次选用的数据集是经典的horse2zebra数据集
如果想按照教程给的方式下载,可以试试下面的命令:

bash ./scripts/download_cyclegan_model.sh horse2zebra

如果你运气好或者熟练掌握技术,就可以,如果实在是下不下来,这里我给出我的百度云链接:c4qh
如果它失效了评论区说一声
弄完后就可以执行下面的命令了:

python train.py --dataroot ./datasets/maps --name maps_cyclegan --model cycle_gan

下面分享一下我在训练中遇到的问题:
1、ImportError:cannot import name ABC
在这里插入图片描述
参考 https://blog.csdn.net/weixin_45250844/article/details/94966415
毕竟是python2,很多地方都不一样,改改代码就好
这个地方还挺多,主要是下面两个文件里:
(注意一下加python版本的地方)
base_model.py

# from abc import ABC, abstractmethod   python3
from abc import ABCMeta, abstractmethod         #python2.7
from . import networks


# class BaseModel(ABC):         python3
class BaseModel():              #python2.7
    """This class is an abstract base class (ABC) for models.
    To create a subclass, you need to implement the following five functions:
        -- <__init__>:                      initialize the class; first call BaseModel.__init__(self, opt).
        -- <set_input>:                     unpack data from dataset and apply preprocessing.
        -- <forward>:                       produce intermediate results.
        -- <optimize_parameters>:           calculate losses, gradients, and update network weights.
        -- <modify_commandline_options>:    (optionally) add model-specific options and set default options.
    """
    __metaclass__ = ABCMeta         #python2.7
    def __init__(self, opt):

base_dataset.py

# from abc import ABC, abstractmethod   python3
from abc import ABCMeta, abstractmethod         #python2.7


# class BaseDataset(data.Dataset, ABC):         python3
class BaseDataset(data.Dataset):                #python2.7
    """This class is an abstract base class (ABC) for datasets.

    To create a subclass, you need to implement the following four functions:
    -- <__init__>:                      initialize the class, first call BaseDataset.__init__(self, opt).
    -- <__len__>:                       return the size of dataset.
    -- <__getitem__>:                   get a data point.
    -- <modify_commandline_options>:    (optionally) add dataset-specific options and set default options.
    """
    __metaclass__ = ABCMeta         #python2.7
    def __init__(self, opt):

2、Non-ASCII character ‘\xef’
在这里插入图片描述
编码问题
在开头加上

# -*- coding: UTF-8 -*- 

就好了
3、CUDA error:out of memory
在这里插入图片描述
因为GPU被占满了
代码里默认用的GPU是0,可以在终端输入nvidia-smi来看一下显卡的情况
用Python2跑Cycle-GAN模型(Pytorch)_第1张图片
当时那个GPU0是30%左右,但GPU1是0%,所以我在命令后面加上了 gpu_ids 1
也就是最后的训练命令如下:

python train.py --dataroot ./datasets/maps --name maps_cyclegan --model cycle_gan --gpu_ids 1

目前来说还没有遇到其他问题,如果有的话后续再添上
训练的截图放一张:
用Python2跑Cycle-GAN模型(Pytorch)_第2张图片
用Python2跑Cycle-GAN模型(Pytorch)_第3张图片

你可能感兴趣的:(机器学习,机器学习)