From cab2defd8566d4f3f90f656d43a71936bfbc63a1 Mon Sep 17 00:00:00 2001 From: kebinC <1678073914@qq.com> Date: Sun, 30 Sep 2018 20:36:49 +0800 Subject: [PATCH] support python3 --- fluid/metric_learning/losses/datareader.py | 27 +++++++++---------- fluid/metric_learning/losses/emlloss.py | 10 +++---- fluid/metric_learning/losses/metrics.py | 4 ++- .../metric_learning/losses/quadrupletloss.py | 10 +++---- fluid/metric_learning/losses/tripletloss.py | 2 +- fluid/metric_learning/models/resnet.py | 2 +- fluid/metric_learning/models/se_resnext.py | 2 +- fluid/metric_learning/train.py | 2 +- fluid/metric_learning/utility.py | 3 ++- 9 files changed, 32 insertions(+), 30 deletions(-) diff --git a/fluid/metric_learning/losses/datareader.py b/fluid/metric_learning/losses/datareader.py index c3f04eb9..286bf950 100644 --- a/fluid/metric_learning/losses/datareader.py +++ b/fluid/metric_learning/losses/datareader.py @@ -1,7 +1,6 @@ import os import math import random -import cPickle import functools import numpy as np import paddle @@ -44,9 +43,9 @@ for i, item in enumerate(test_list): test_data[label] = [] test_data[label].append(path) -print "train_data size:", len(train_data) -print "test_data size:", len(test_data) -print "test_data image number:", len(test_image_list) +print("train_data size:", len(train_data)) +print("test_data size:", len(test_data)) +print("test_data image number:", len(test_image_list)) random.shuffle(test_image_list) @@ -213,11 +212,11 @@ def eml_iterator(data, color_jitter=False, rotate=False): def reader(): - labs = data.keys() + labs = list(data.keys()) lab_num = len(labs) - ind = range(0, lab_num) + ind = list(range(0, lab_num)) assert batch_size % samples_each_class == 0, "batch_size % samples_each_class != 0" - num_class = batch_size/samples_each_class + num_class = batch_size // samples_each_class for i in range(iter_size): random.shuffle(ind) for n in range(num_class): @@ -244,9 +243,9 @@ def quadruplet_iterator(data, color_jitter=False, rotate=False): def reader(): - labs = data.keys() + labs = list(data.keys()) lab_num = len(labs) - ind = range(0, lab_num) + ind = list(range(0, lab_num)) for i in range(iter_size): random.shuffle(ind) ind_sample = ind[:class_num] @@ -254,7 +253,7 @@ def quadruplet_iterator(data, for ind_i in ind_sample: lab = labs[ind_i] data_list = data[lab] - data_ind = range(0, len(data_list)) + data_ind = list(range(0, len(data_list))) random.shuffle(data_ind) anchor_ind = data_ind[:samples_each_class] @@ -276,15 +275,15 @@ def triplet_iterator(data, color_jitter=False, rotate=False): def reader(): - labs = data.keys() + labs = list(data.keys()) lab_num = len(labs) - ind = range(0, lab_num) + ind = list(range(0, lab_num)) for i in range(iter_size): random.shuffle(ind) ind_pos, ind_neg = ind[:2] lab_pos = labs[ind_pos] pos_data_list = data[lab_pos] - data_ind = range(0, len(pos_data_list)) + data_ind = list(range(0, len(pos_data_list))) random.shuffle(data_ind) anchor_ind, pos_ind = data_ind[:2] @@ -345,7 +344,7 @@ def quadruplet_train(class_num, samples_each_class): def triplet_train(batch_size): assert(batch_size % 3 == 0) - return triplet_iterator(train_data, 'train', batch_size, iter_size = batch_size/3 * 100, \ + return triplet_iterator(train_data, 'train', batch_size, iter_size = batch_size//3 * 100, \ shuffle=True, color_jitter=False, rotate=False) def test(): diff --git a/fluid/metric_learning/losses/emlloss.py b/fluid/metric_learning/losses/emlloss.py index 2349cedb..362b0ae0 100644 --- a/fluid/metric_learning/losses/emlloss.py +++ b/fluid/metric_learning/losses/emlloss.py @@ -1,9 +1,9 @@ -import datareader as reader import math import numpy as np import paddle.fluid as fluid -from metrics import calculate_order_dist_matrix -from metrics import get_gpu_num +from . import datareader as reader +from .metrics import calculate_order_dist_matrix +from .metrics import get_gpu_num class emlloss(): def __init__(self, train_batch_size = 40, samples_each_class=2): @@ -11,9 +11,9 @@ class emlloss(): self.samples_each_class = samples_each_class self.train_batch_size = train_batch_size assert(train_batch_size % num_gpus == 0) - self.cal_loss_batch_size = train_batch_size / num_gpus + self.cal_loss_batch_size = train_batch_size // num_gpus assert(self.cal_loss_batch_size % samples_each_class == 0) - class_num = train_batch_size / samples_each_class + class_num = train_batch_size // samples_each_class self.train_reader = reader.eml_train(train_batch_size, samples_each_class) self.test_reader = reader.test() diff --git a/fluid/metric_learning/losses/metrics.py b/fluid/metric_learning/losses/metrics.py index 08b9d6f6..51805bde 100644 --- a/fluid/metric_learning/losses/metrics.py +++ b/fluid/metric_learning/losses/metrics.py @@ -20,12 +20,14 @@ def recall_topk(fea, lab, k = 1): import subprocess import os + def get_gpu_num(): visibledevice = os.getenv('CUDA_VISIBLE_DEVICES') if visibledevice: devicenum = len(visibledevice.split(',')) else: - devicenum = subprocess.check_output(['nvidia-smi', '-L']).count('\n') + devicenum = subprocess.check_output( + [str.encode('nvidia-smi'), str.encode('-L')]).decode('utf-8').count('\n') return devicenum import paddle as paddle diff --git a/fluid/metric_learning/losses/quadrupletloss.py b/fluid/metric_learning/losses/quadrupletloss.py index 8615a20f..b80af96e 100644 --- a/fluid/metric_learning/losses/quadrupletloss.py +++ b/fluid/metric_learning/losses/quadrupletloss.py @@ -1,8 +1,8 @@ import numpy as np -import datareader as reader import paddle.fluid as fluid -from metrics import calculate_order_dist_matrix -from metrics import get_gpu_num +from . import datareader as reader +from .metrics import calculate_order_dist_matrix +from .metrics import get_gpu_num class quadrupletloss(): def __init__(self, @@ -14,9 +14,9 @@ class quadrupletloss(): self.samples_each_class = samples_each_class self.train_batch_size = train_batch_size assert(train_batch_size % num_gpus == 0) - self.cal_loss_batch_size = train_batch_size / num_gpus + self.cal_loss_batch_size = train_batch_size // num_gpus assert(self.cal_loss_batch_size % samples_each_class == 0) - class_num = train_batch_size / samples_each_class + class_num = train_batch_size // samples_each_class self.train_reader = reader.quadruplet_train(class_num, samples_each_class) self.test_reader = reader.test() diff --git a/fluid/metric_learning/losses/tripletloss.py b/fluid/metric_learning/losses/tripletloss.py index 65f0cebf..02ad989c 100644 --- a/fluid/metric_learning/losses/tripletloss.py +++ b/fluid/metric_learning/losses/tripletloss.py @@ -1,4 +1,4 @@ -import datareader as reader +from . import datareader as reader import paddle.fluid as fluid class tripletloss(): diff --git a/fluid/metric_learning/models/resnet.py b/fluid/metric_learning/models/resnet.py index 77d0256a..7fbe65b6 100644 --- a/fluid/metric_learning/models/resnet.py +++ b/fluid/metric_learning/models/resnet.py @@ -75,7 +75,7 @@ class ResNet(): num_filters=num_filters, filter_size=filter_size, stride=stride, - padding=(filter_size - 1) / 2, + padding=(filter_size - 1) // 2, groups=groups, act=None, bias_attr=False) diff --git a/fluid/metric_learning/models/se_resnext.py b/fluid/metric_learning/models/se_resnext.py index 828f5872..16cc31bc 100644 --- a/fluid/metric_learning/models/se_resnext.py +++ b/fluid/metric_learning/models/se_resnext.py @@ -127,7 +127,7 @@ class SE_ResNeXt(): num_filters=num_filters, filter_size=filter_size, stride=stride, - padding=(filter_size - 1) / 2, + padding=(filter_size - 1) // 2, groups=groups, act=None, bias_attr=False) diff --git a/fluid/metric_learning/train.py b/fluid/metric_learning/train.py index 4ef75b26..d3705bf5 100644 --- a/fluid/metric_learning/train.py +++ b/fluid/metric_learning/train.py @@ -93,7 +93,7 @@ def train(args): elif loss_name == "emlloss": metricloss = emlloss( train_batch_size = args.train_batch_size, - samples_each_class=2 + samples_each_class = args.samples_each_class ) cost_metric = metricloss.loss(out[0]) avg_cost_metric = fluid.layers.mean(x=cost_metric) diff --git a/fluid/metric_learning/utility.py b/fluid/metric_learning/utility.py index 506e6007..d8fe4164 100644 --- a/fluid/metric_learning/utility.py +++ b/fluid/metric_learning/utility.py @@ -17,6 +17,7 @@ from __future__ import absolute_import from __future__ import division from __future__ import print_function import distutils.util +import six import numpy as np from paddle.fluid import core @@ -37,7 +38,7 @@ def print_arguments(args): :type args: argparse.Namespace """ print("----------- Configuration Arguments -----------") - for arg, value in sorted(vars(args).iteritems()): + for arg, value in sorted(six.iteritems(vars(args))): print("%s: %s" % (arg, value)) print("------------------------------------------------") -- GitLab