zero-cola / Kakao-Arena-2019

kakao shopping classification competition (6th place)

Home Page:https://arena.kakao.com/c/1

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Kakao-Arena-2019

쇼핑몰 상품 카테고리 분류

https://arena.kakao.com/c/1

Team : 제로콜라

Final score: 1.066355415 (6th)

대/중/소/세 accuracy: 0.913/0.865/0.847/0.867

Download pre-trained ensemble model link here

개발 환경

OS: ubuntu PYTHON: python 3.6.7 tensorflow-gpu 1.12.0

GPU: GeForce GTX 1080ti

실행 방법

1. data 준비

1-1. chunk로 나뉘어진 데이터를 적절한 위치에 두고, config.json에 해당 경로를 설정한다.

1-2. 아래 명령어를 각각 실행한다. (config.json에 설정된 data_path에 새로운 데이터 파일이 생성됨. 총 90GB)

 python data.py make-h5 train
 python data.py make-h5 dev
 python data.py make-h5 test

1-3. 아래 명령어를 순서대로 실행한다. (text데이터에 대한 전처리를 진행하며 새로운 데이터 파일이 생성됨. 총 150GB)

 python data.py preprocessing train
 python data.py preprocessing dev
 python data.py preprocessing test

2. 학습

최종 제출은 3개의 모델을 앙상블하여 예측결과를 생성하였다. 아래는 각 모델의 학습을 실행하는 방법이며, 각각 다른 환경에서 병렬적으로 실행한 뒤 inference할 환경에 학습된 모델을 옮겨서 앙상블 할 수 있다.

2-1. JCCNN_0 모델 학습

 train.py 코드 내부의 model_name 인자를 'JCCNN_0'로 바꿔주고,
 config.json의 dropout_keep의 값을 0.5로 설정한다.
 그 후 python train.py 를 실행한다.

2-2. JCCNN_1 모델 학습

 train.py 코드 내부의 model_name 인자를 'JCCNN_1'로 바꿔주고,
 config.json의 dropout_keep의 값을 0.6로 설정한다.
 그 후 python train.py 를 실행한다.

2-3. JCCNN_2 모델 학습

 train.py 코드 내부의 model_name 인자를 'JCCNN_2'로 바꿔주고,
 config.json의 dropout_keep의 값을 0.7로 설정한다.
 그 후 python train.py 를 실행한다.

epoch이 끝날 때 마다 모델이 ./model/[model_name]에 저장된다. 학습 도중 중단되어도 위의 명령어를 다시 입력하면 최근 저장된 epoch부터 이어서 학습한다.

3. 예측

세 모델이 모두 학습되어 ./model/JCCNN_0, ./model/JCCNN_1, ./model/JCCNN_2에 저장되어 있어야 한다.

3-1. python inference.py

 test데이터에 대해 inference 진행된다.
 완료되면 현재 디렉터리에 result_test.tsv 파일이 생성된다.
 (중간 생성 파일(.tmp)이 존재하기 때문에 72GB의 저장공간이 필요하다.)

About

kakao shopping classification competition (6th place)

https://arena.kakao.com/c/1


Languages

Language:Python 99.9%Language:Shell 0.1%