LSTM Cross Entropy Metric 메트릭 얻기 - ISEL-HGU/IntegratedDPModel GitHub Wiki
툴 소개
SurprisedBasedMetricsExpDataExtractor툴에서 뽑은 커밋 소스코드 데이터를 이용하여 LSTM 모델을 훈련시킨 후 LSTM Cross Entropy 값을 추출하여 소프트웨어 메트릭으로 만드는 툴이다.
Manual script steps
-
conda 이용해서 pytorch 설치해야한다. (아래와 같은 설정에서 실험 돌렸음)
- python version: 3.7.3
- conda version: 4.8.3
- pytorch version: 1.4.0
- GPU 사용
-
git clone https://github.com/ISEL-HGU/LSTMCrossEntropyMetricExtractor.git
-
LSTMCrossEntropyMetricExtractor/run_GPU0_line_single.sh
와 같이 스크립트들을 실행시킨다.#!/bin/sh # Single LSTM for projectname in "ace" "ant-ivy" "bigtop" "bval" "camel" "cayenne" "cordova-android" "creadur-rat" "crunch" "deltaspike" "gora" "groovy" "guacamole-client" "incubator-dolphinscheduler" "incubator-hivemall"; do python main_line_GPU0.py --batch_size 32 --test_batch_size 32 --epochs 20 --lr 0.01 --seq_size 32 --embedding_size 64 --lstm_size 64 --gradients_norm 5 --input_csv_metric_file [SurprisedBasedMetricsExpDataExtractor_PATH]/Output/DP/label_DP/${projectname}_developer.csv --output_csv_metric_file ./data/test/${projectname}_Line_Single_LSTM_Metric.csv --train_file [SurprisedBasedMetricsExpDataExtractor_PATH]/TrainData/${projectname}_AllCommitsAddedLines.txt --test_file [SurprisedBasedMetricsExpDataExtractor_PATH]/TrainData/Commit/${projectname}/ done
SurprisedBasedMetricsExpDataExtractor
툴에서 만든 training data들의 path를 —train_file 옵션에 넣어주고 test data의 path를 —test_file 옵션에 넣어준다. 그리고 *_developer.csv 파일을 —input_csv_metric_file 옵션에 넣어준다. 그리고 LSTM C.E. 메트릭이 추가된 출력물의 위치를 —output_csv_metric_file을 통해 지정해준다. [SurprisedBasedMetricsExpDataExtractor_PATH]에 올바른 값을 넣어줘야 실행이 된다.
-
위처럼 다른 실행파일들도 실행시키면 된다 (run_GPU1_concat_single.sh, run_multi_GPU_concat_master.sh, run_multi_GPU_line_master.sh)
-
output_csv_metric_file 파일에서 필요없는 metric들은 지워주고 뒤에 두 개 콜럼의 위치를 바꿔서 맨 마지막 컬럼에 class label이 오게 한 뒤 ARFF 파일로 만들어준다. https://github.com/ISEL-HGU/IntegratedDPModel/blob/master/src/main/java/edu/handong/csee/isel/weka/CSV2Arff.java을 실행시킨다. 이때 i 옵션에 바꾸고 싶은 input csv path를 입력한다. 이클립스에서 하나하나 실행시켜도 되고 아래처럼 실행파일을 만들어 스크립트를 돌려도 된다.
Options
"usage: main_multi_GPU_line_master.py [-h] [--batch_size N]
[--test_batch_size N] [--epochs N]
[--lr LR] --train_file TRAIN_FILE
[--seq_size SEQ_SIZE]
[--embedding_size EMBEDDING_SIZE]
[--lstm_size LSTM_SIZE]
[--gradients_norm GRADIENTS_NORM]
LSTM Cross-Entropy Metric
optional arguments:
-h, --help show this help message and exit
--batch_size N input batch size for training (default: 16)
--test_batch_size N input batch size for testing (default: 16)
--epochs N number of epochs to train (default: 100)
--lr LR learning rate (default: 0.01)
--train_file TRAIN_FILE
path of training set
--seq_size SEQ_SIZE sequence size
--embedding_size EMBEDDING_SIZE
embedding size
--lstm_size LSTM_SIZE
lstm size
--gradients_norm GRADIENTS_NORM
norm to clip gradients"