naver-airush / NAVER-AI-RUSH

41 stars 20 forks source link

Score가 계속 0이 나옵니다. #68

Closed jjxxmiin closed 4 years ago

jjxxmiin commented 4 years ago

Informations

CLI

WEB

What is your login ID?

jjeamin

Question

제출은 정상적으로 동작하는데 score가 계속 0.0이 나오네요.. 0.0이 나오는게 쉽지 않을것 같은데 혹시 이럴 때 생각할 수 있는 문제가 무엇이 있을까요??

def preprocess_test_info(test_dir):
    dataset_info = {
        'img_path': []
    }
    paths = [path for path in (Path(test_dir) / 'test_data').glob('*.*') if path.suffix not in ['.gif', '.GIF']]
    for path in paths:
        dataset_info['img_path'].append(str(path))

    test_info = pd.DataFrame(dataset_info)

    return test_info

def tester(model, test_dir, device='cuda'):
    mean, std = [0.5, 0.5, 0.5], [0.5, 0.5, 0.5]

    tfms = transforms.Compose([transforms.ToTensor(),
                               transforms.Normalize(mean, std)])

    test_info = preprocess_test_info(test_dir)
    test_dataset = SpamDataset(test_info.img_path.values,
                               test_info.index.values,
                               tfms=tfms,
                               test=True)

    test_loader = torch.utils.data.DataLoader(test_dataset,
                                              batch_size=1,
                                              shuffle=False)

    print(test_info)

    y_pred = []
    files = []

    for image, file in test_loader:
        image = image.to(device)
        files.append(file[0])

        pred = model(image)
        _, predicted = torch.max(pred, 1)
        y_pred += predicted.cpu().numpy().tolist()

    print(y_pred)
    ret = pd.DataFrame({'filename': files, 'y_pred': y_pred})
    print(ret)

    return ret

def bind_model(model, model_name='model.pth'):
    def save(dirname, **kwargs):
        checkpoint = {
            'model': model.state_dict()
        }
        torch.save(checkpoint, os.path.join(dirname, model_name))

    def load(dirname, **kwargs):
        checkpoint = torch.load(os.path.join(dirname, model_name))
        model.load_state_dict(checkpoint['model'])

    def infer(test_dir, **kwargs):
        return tester(model, test_dir)

    nsml.bind(save=save, load=load, infer=infer)
nsml-admin commented 4 years ago

안녕하세요

사용하셨던 명령어와 0점이 뜬 서브밋 세션의 이름을 알려주실래요 ??

jjxxmiin commented 4 years ago

명령어

nsml submit jjeamin/spam-1/135 6

서브밋은 방금 삭제해서.. 140 세션으로 다시 했습니다

감사합니다!

hjlee9182 commented 4 years ago

@nsml-admin 저도 nsml submit hjlee9182/spam-1/325 best nsml submit hjlee9182/spam-1/323 best

제출하였을떄 0점이 나왔는데 확인한번 부탁드립니다.

nsml-admin commented 4 years ago

@jjeamin @hjlee9182 두분다 값을 확인해봤는데요, infer에서 똑같은 값만 return하는거 같습니다.

submit -t 로 결과값을 확인해보시기 바랍니다.

hjlee9182 commented 4 years ago

@nsml-admin image 두 경우다 이렇게 출력됩니다. image 그리고 웹상에서는 저 문구를 출력이후로 running이라 되어있긴한데 아무런 반응이 없네요

nsml-admin commented 4 years ago

infer 함수 안에서 print로 찍은 값이 nsml submit 일 경우엔 안보이지만 nsml submit -t은 보입니다.

submit -t로 생성된 세션에 nsml logs 명령어를 요청하면 print로 찍은값을 확인할수 있습니다.

https://n-clair.github.io/nlp-challenge-docs/_build/html/ko_KR/contents/session/submit_a_session.html

jjxxmiin commented 4 years ago

제가 추론을 잘못하였네요.. 감사합니다!!