Example #1
0
    def eval_func(self, label):
        # chainer.functionのtype_checkを通過させるため、[]のwrapperをつける
        xp = cuda.get_array_module(self.pool.variable.data)
        mean_activations = Variable(xp.array(
            [xp.mean(self.pool.variable.data, axis=0)],
            dtype=xp.float32))
        label = Variable(xp.array(label, dtype=xp.int32))

        # cpuに移す
        mean_activations.to_cpu()
        label.to_cpu()
        mean_activations = mean_activations.data
        label = label.data

        # top1, top5の算出
        res_top1 = mean_activations.argmax()
        res_top5 = mean_activations.argsort()[0][-5:]

        top1 = 1.0 if label[0] == res_top1 else 0.0
        top5 = 1.0 if label[0] in res_top5 else 0.0

        report({'top1': top1, 'top5': top5})
Example #2
0
    def eval_func(self, label):
        # chainer.functionのtype_checkを通過させるため、[]のwrapperをつける
        xp = cuda.get_array_module(self.pool.variable.data)

        mean_activations = Variable(xp.array(
            [xp.mean(self.pool.variable.data, axis=0)],
            dtype=xp.float32))
        label = Variable(xp.array(label, dtype=xp.int32))

        # cpuに移す
        mean_activations.to_cpu()
        label.to_cpu()
        mean_activations = mean_activations.data
        label = label.data

        # top1, top5の算出
        res_top1 = mean_activations.argmax()
        res_top5 = mean_activations.argsort()[0][-5:]

        # ndarray(numpy) -> list(pure python)
        label.tolist()
        res_top1 = int(res_top1)
        res_top5.tolist()

        # label[0] は imageに対応する元々のlabel
        # label はcommon_root_labels
        ref_top1 = 1.0 if res_top1 in label             else 0.0
        ref_top5 = 1.0 if set(res_top5) & set(label)    else 0.0
        org_top1 = 1.0 if label[0] == res_top1          else 0.0
        org_top5 = 1.0 if label[0] in res_top5          else 0.0

        report({
            'ref/top1': ref_top1,
            'ref/top5': ref_top5,
            'org/top1': org_top1,
            'org/top5': org_top5 })