{"id":15567242,"url":"https://github.com/iml1111/pytorch_study","last_synced_at":"2025-07-19T16:40:03.597Z","repository":{"id":103823050,"uuid":"285441492","full_name":"iml1111/pytorch_study","owner":"iml1111","description":"자연어처리 / 파이토치 스터디","archived":false,"fork":false,"pushed_at":"2021-03-07T12:14:45.000Z","size":1181,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-03T15:55:47.818Z","etag":null,"topics":["nlp","pytorch","pytorch-tutorial","text-classification","tutorial","word2vec"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iml1111.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-08-06T01:16:26.000Z","updated_at":"2023-03-07T07:16:36.000Z","dependencies_parsed_at":"2023-07-17T19:55:33.333Z","dependency_job_id":null,"html_url":"https://github.com/iml1111/pytorch_study","commit_stats":{"total_commits":95,"total_committers":2,"mean_commits":47.5,"dds":"0.49473684210526314","last_synced_commit":"cecd0490d10ff7dc14281fa2fb0771c70749757c"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iml1111%2Fpytorch_study","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iml1111%2Fpytorch_study/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iml1111%2Fpytorch_study/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iml1111%2Fpytorch_study/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iml1111","download_url":"https://codeload.github.com/iml1111/pytorch_study/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246145014,"owners_count":20730494,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["nlp","pytorch","pytorch-tutorial","text-classification","tutorial","word2vec"],"created_at":"2024-10-02T17:10:28.147Z","updated_at":"2025-03-29T05:35:00.913Z","avatar_url":"https://github.com/iml1111.png","language":"HTML","readme":"# pytorch_study\n제가 Pytorch(주로 자연어처리)를 공부하면서 다룬 실습 코드들을 모아둔 repo입니다.\n\n해당 실습 코드를 구현하기 위해 참고한 References는 맨 아래의 링크들을 참고해주세요.\n\n\n\n# Indexes\n\n1. linear_regression_model\n2. mnist_tutorial\n3. mnist_autoencoder\n4. advanced_pytorch\n5. cnn\n6. transfer_learning\n7. rnn\n8. preprocessing\n9. word_embedding\n10. text_classification\n12. Seq2Seq\n13. Transformer\n\nAppendix-1. LDA\n\nAppendix-2. Word2Vec\n\n\n\n## Linear Regression\n\n파이토치의 가장 기본적인 사용 방법에 대한 이해를 위해, 간단한 선형 회귀 예측을 구현한 코드입니다.\n\ndata set 또한 굉장히 작기 때문에, 01_data.csv로 디렉터리에 함께 동봉되어 있습니다.\n\n실행 코드 또한 main.py 코드 한개입니다.\n\n\n\n## Mnist Tutorial\n\n마찬가지로 파이토치의 기본적인 사용 방법 이해를 위한 Mnist Tutorial 코드입니다.\n\nutils.py의 load_mnist Function을 통해 **Mnist Dataset를 자동으로 다운받아 학습을 시작**합니다.\n\n또한, 코드 구조화를 위해 다음과 같이 코드 파일을 구분하였습니다.\n\n- **train.py (메인 학습 실행 코드)**\n\n- model.py (신경망 구조 클래스)\n- trainer.py (학습기 클래스)\n- utils.py (유틸 함수 모음)\n- **predict.py (모델 예측 실행 코드)**\n\n\n\n## Mnist Autoencoder\n\n간단한 오토 인코더를 구현해보는 코드로, Mnist로 실습을 수행하였습니다. 기본적으로 위의 Mnist Tutorial 코드와 같은 구조를 가집니다.\n\n\n\n## Advanced Pytorch\n\n### 1. Custom Dataset\n\nPytorch에 지원하는 커스텀 데이터셋 클래스를 사용해보는 실습입니다. Dataset으로는 Sklearn의 유방암 데이터셋을 사용하였습니다.\n\n### 2. Pytorch ignite\n\n위에서 사용한 커스텀 데이터셋과 더불어, Pytorch 확장 프레임워크인 Ignite를 사용하여 코드 구조화에 사용하였습니다. Dataset은 Mnist이며, 이후에 모든 코드는 Ignite를 통해 구현되었습니다.\n\n\n\n## CNN\n\nMnist를 CNN을 사용하여 구현한 코드입니다.\n\n\n\n## Transfer Learning\n\ntorchvision에서 제공하는 model을 기반으로 전이 학습을 실시하는 코드입니다. Dataset은 Mnist이며, **\"resnet\", \"alexnet\", \"vgg\", \"squeezenet\", \"densenet\"**을 이용해 전이학습을 수행합니다.\n\n전이 학습시, 사전에 기록된 기존 모델의 parameter을 동결시킬 것인지 말지를 결정할 수 있으며, 마지막 Output 단의 Classification의 Class 수를 재정의하여 전이학습을 수행합니다.\n\n\n\n## RNN\n\nMnist를 RNN을 사용하여 구현한 코드입니다.\n\n\n\n## Preprocessing\n\n해당 챕터는 모델 학습 관련 코드가 아닙니다. 자연어처리에서 데이터 전처리시에 사용되는**, Tokenize, Regular Expression, Subword Segmentation** 등에 대하여 다룹니다.\n\n또한, **torchtext**에 제공하는 Dataset 기능을 사용해보았습니다.\n\n\n\n## Word Embedding\n\nWord Embedding 실습을 위해, Facebook의 FastText를 통해 임베딩 벡터를 구하는 실습입니다.\n\n(FastText의 경우, Gensim 라이브러리를 통해서 Python 단에서 학습시킬 수 있습니다) \n\n\n\n## Text Classification\n\n**영화 리뷰 데이터를 기반으로 감정 분석 (긍정/부정)을 수행하는 Text Classification 학습 코드**입니다.\n\nDataset인 영화 리뷰 데이터의 경우, 저작권 문제로 올리지 않았습니다.\n\n(Dataset 규격은 TSV로 각 라인당, 아래와 같이 구성되어 있습니다.)\n\n```sh\n# label: 1 or 0\n# text: 영화 리뷰 텍스트\n\u003clabel\u003e\\t\u003ctext\u003e\n\u003clabel\u003e\\t\u003ctext\u003e\n\u003clabel\u003e\\t\u003ctext\u003e\n...\n```\n\n전이 학습을 사용하지 않을 경우, 사용 가능한 모델은 위에서 실습했던 **CNN, RNN**입니다.\n\n전이 학습을 사용할 경우, BERT를 이용한 finetuning이 가능합니다.\n\ndefault로 사용된 BERT 모델은 **\"beomi/kcbert-base\"** 입니다.\n\n\n\n## Seq2Seq\n\n시퀀스 투 시퀀스 모델을 이용하여 기계 번역기를 구현한 코드입니다.\n\n학습에 사용된 Dataset은 AI-HUB에서 제공된 Open Data를 사용하였습니다.\n\nhttps://www.aihub.or.kr/aidata/87\n\nModel에는 **Tearch Forcing으로 인하여 학습(foward)과 추론(search) 함수가 존재**하며, 추론시 성능 향상을 도울 수 있는 **Beam Search**까지 구현되어 있습니다.\n\n그 밖에 Trainer에는 **Gradient Accumulation** 및 **Gradient Clipping**이 구현이 되어 있습니다.\n\n\n\n## Transformer\n\n트랜스포머 모델을 이용하여 기계 번역기를 구현한 코드입니다.\n\n학습된 데이터를 포함하여, 모델의 Input Output까지 위의 Seq2Seq와 구조가 일치하기 때문에 신경망을 제외한 대부분의 코드가 일치합니다.\n\n단, 기존 Paper 방식인 Post-LN 방식의 경우, 하이퍼 파라미터 튜닝에 까다로운 점이 있기 때문에 **Pre-LN을 기반하여 구현**하였습니다.\n\n\n\n\n# References\n\nhttps://github.com/kh-kim/nlp_with_pytorch_examples\n\nhttps://github.com/kh-kim/simple-nmt\n\n[PyTorch - Word Embedding](https://www.tutorialspoint.com/pytorch/pytorch_word_embedding.htm)\n\n[jojonki/word2vec-pytorch](https://github.com/jojonki/word2vec-pytorch)\n\n[PengFoo/word2vec-pytorch](https://github.com/PengFoo/word2vec-pytorch)\n\n[ray1007/pytorch-word2vec](https://github.com/ray1007/pytorch-word2vec)\n\nhttps://greeksharifa.github.io/pytorch/2018/11/02/pytorch-usage-00-references/\n\nhttps://wikidocs.net/52460\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiml1111%2Fpytorch_study","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiml1111%2Fpytorch_study","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiml1111%2Fpytorch_study/lists"}