naver-airush / NAVER-AI-RUSH

41 stars 20 forks source link

Unlabeled data를 다른 파일에 재저장해도 되나요? #89

Closed fenneccat closed 4 years ago

fenneccat commented 4 years ago

Informations

CLI

WEB

What is your login ID?

Question 각 계정별로 데이터 위치인 /data/hate_2/train/가 다르게 접근이 되는건지 궁금합니다. 이 폴더 내에 새로운 파일을 만들어서 저장하려고 하는데, 대회 규정상 문제가 없나요?

fenneccat commented 4 years ago

저장을 시도하니 read only file system 이라는 에러가 생성되네요. 파일을 만들어서 불러오는 방식은 전혀 불가능하고, 해당 데이터들을 메모리에 올려서 사용하는 방법밖에는 없나요?

bluebrush commented 4 years ago

아래 두 문서가 참고가 되실지모르겠네요. https://github.com/Naver-AI-Hackathon/AI-Speech/issues/111 https://github.com/ai-starthon/AI_Starthon2019/issues/124#issuecomment-514906947

bluebrush commented 4 years ago

@fenneccat 님, 클라우드 외부로 전송하지 않으면, 데이터 변형하여 저장하고 다시 사용하는 것은 가능합니다.

fenneccat commented 4 years ago

저와 비슷한 어려움을 겪을 분들을 위해. nsml save와 load를 통해 파일을 불러오고 object를 받아오는 방법.

json파일로 저장된 다른 세션의 리스트를 받아와서 로드하는 방법입니다.

def bind_json(examples):
    def save(dirname, *args):
        pass

    def load(dirname, *args):
        with open(os.path.join(dirname, 'data.json'), "r") as json_file:
            examples.extend(json.load(json_file))

    def infer(raw_data, **kwargs):
        pass

    nsml.bind(save=save, load=load, infer=infer)

wrapper로 사용한 bind_json에서 받아오는 object에 수정을 가해주면 data를 넘겨줄 수 있습니다.

위의 코드의 경우, examples가 list였는데요, 위 코드처럼 받아온 object를 수정해주시면 됩니다