遇到过的问题

遇到过的问题以及是如何解决的:

1.迭代无序

        这段代码是cycleGAN中用来读取图片数据的代码。现在用来训练pix2pix,需要图片按照名称一一对应。

def __iter__(self):
    """Return a batch of data"""
    for i, data in enumerate(self.dataloader):
        if i * self.opt.batch_size >= self.opt.max_dataset_size:
            break
        yield data

        这段代码中,self.dataloader里的A_paths和B_paths是存储图片地址有序列表。但当enumerate后,data并不是按顺序遍历的。此时的A_paths和B_paths里取出的图片名称列表就不能按名称对应。

解决办法:self.dataloader是一个自定义类,类中有__getitem__迭代函数,函数中有控制是否随机的变量。只要修改参数就可以不随机返回了。顺带加上一句判断图片名是否相同的语句就可以了。代码如下:

原来的迭代函数:

A_path = self.A_paths[index % self.A_size]  # make sure index is within then range
if self.opt.serial_batches:   # make sure index is within then range
    index_B = index % self.B_size
else:   # randomize the index for domain B to avoid fixed pairs.
    index_B = random.randint(0, self.B_size - 1)
B_path = self.B_paths[index_B]

修改后:

A_path = self.A_paths[index % self.A_size]  # make sure index is within then range
B_path = self.B_paths[index % self.B_size]
if A_path.split('/')[-1] != B_path.split('/')[-1]:
    print("A与B不匹配")

其中,A_path='/home/xq/文档/datasets/OK_20190611_dataset/mask/2019-03-28_10_22_25_876.png'

           B_path='/home/xq/文档/datasets/OK_20190611_dataset/img/2019-03-28_10_22_25_876.png'

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值