본문 바로가기
Programming/python

[python] argparse 구문 jupyter 에서 사용하기

by 단창 2019. 5. 27.

argparse는 python3에 기본적으로 들어있는 pytyhon input variable 처리 라이브러리다. 

 

사용법> 

 

def main():
    # Training settings
    parser = argparse.ArgumentParser(description='PyTorch MNIST Example')
    parser.add_argument('--batch-size', type=int, default=64, metavar='N',
                        help='input batch size for training (default: 64)')
    parser.add_argument('--test-batch-size', type=int, default=1000, metavar='N',
                        help='input batch size for testing (default: 1000)')
    parser.add_argument('--epochs', type=int, default=10, metavar='N',
                        help='number of epochs to train (default: 10)')
    parser.add_argument('--lr', type=float, default=0.01, metavar='LR',
                        help='learning rate (default: 0.01)')
    parser.add_argument('--momentum', type=float, default=0.5, metavar='M',
                        help='SGD momentum (default: 0.5)')
    parser.add_argument('--no-cuda', action='store_true', default=False,
                        help='disables CUDA training')
    parser.add_argument('--seed', type=int, default=1, metavar='S',
                        help='random seed (default: 1)')
    parser.add_argument('--log-interval', type=int, default=10, metavar='N',
                        help='how many batches to wait before logging training status')
    
    parser.add_argument('--save-model', action='store_true', default=False,
                        help='For Saving the current Model')
    args = parser.parse_args()
    
    ## 본문시행.. 
    
if __name__ == '__main__':
    main()

그러나, jupyter 와 같은 ipython환경에선 동작하지 않고, 변수선언을 따로 해주면 console에서 돌릴때와 코드가 구분되어야하고 귀찮음. 

그럴때 easydict을 쓰면 args형태를 만들수있다 .

import easydict
 
args = easydict.EasyDict({
        "batchsize": 100,
        "epoch": 20,
        "gpu": 0,
        "out": "result",
        "resume": False,
        "unit": 1000
})

 

또는 console 에서 입력하는 input parameter을 이런식으로 사용할수도 있음.

 

ex) python -s 5000 ./graphdata/graph.data

args_str = '-s 5000 ./graphdata/graph.data'
FLAGS, _ = parser.parse_known_args(args=args_str.split())

gs = main(FLAGS)

 

반응형