diff --git "a/06-\354\202\254\353\236\214\354\235\230_\354\247\200\353\217\204_\354\227\206\354\235\264_\355\225\231\354\212\265\355\225\230\353\212\224_Autoencoder/README.md" "b/06-\354\202\254\353\236\214\354\235\230_\354\247\200\353\217\204_\354\227\206\354\235\264_\355\225\231\354\212\265\355\225\230\353\212\224_\354\230\244\355\206\240\354\235\270\354\275\224\353\215\224/README.md" similarity index 100% rename from "06-\354\202\254\353\236\214\354\235\230_\354\247\200\353\217\204_\354\227\206\354\235\264_\355\225\231\354\212\265\355\225\230\353\212\224_Autoencoder/README.md" rename to "06-\354\202\254\353\236\214\354\235\230_\354\247\200\353\217\204_\354\227\206\354\235\264_\355\225\231\354\212\265\355\225\230\353\212\224_\354\230\244\355\206\240\354\235\270\354\275\224\353\215\224/README.md" diff --git "a/06-\354\202\254\353\236\214\354\235\230_\354\247\200\353\217\204_\354\227\206\354\235\264_\355\225\231\354\212\265\355\225\230\353\212\224_Autoencoder/assets/autoencoder.png" "b/06-\354\202\254\353\236\214\354\235\230_\354\247\200\353\217\204_\354\227\206\354\235\264_\355\225\231\354\212\265\355\225\230\353\212\224_\354\230\244\355\206\240\354\235\270\354\275\224\353\215\224/assets/autoencoder.png" similarity index 100% rename from "06-\354\202\254\353\236\214\354\235\230_\354\247\200\353\217\204_\354\227\206\354\235\264_\355\225\231\354\212\265\355\225\230\353\212\224_Autoencoder/assets/autoencoder.png" rename to "06-\354\202\254\353\236\214\354\235\230_\354\247\200\353\217\204_\354\227\206\354\235\264_\355\225\231\354\212\265\355\225\230\353\212\224_\354\230\244\355\206\240\354\235\270\354\275\224\353\215\224/assets/autoencoder.png" diff --git "a/06-\354\202\254\353\236\214\354\235\230_\354\247\200\353\217\204_\354\227\206\354\235\264_\355\225\231\354\212\265\355\225\230\353\212\224_Autoencoder/basic_autoencoder.ipynb" "b/06-\354\202\254\353\236\214\354\235\230_\354\247\200\353\217\204_\354\227\206\354\235\264_\355\225\231\354\212\265\355\225\230\353\212\224_\354\230\244\355\206\240\354\235\270\354\275\224\353\215\224/basic_autoencoder.ipynb" similarity index 100% rename from "06-\354\202\254\353\236\214\354\235\230_\354\247\200\353\217\204_\354\227\206\354\235\264_\355\225\231\354\212\265\355\225\230\353\212\224_Autoencoder/basic_autoencoder.ipynb" rename to "06-\354\202\254\353\236\214\354\235\230_\354\247\200\353\217\204_\354\227\206\354\235\264_\355\225\231\354\212\265\355\225\230\353\212\224_\354\230\244\355\206\240\354\235\270\354\275\224\353\215\224/basic_autoencoder.ipynb" diff --git "a/06-\354\202\254\353\236\214\354\235\230_\354\247\200\353\217\204_\354\227\206\354\235\264_\355\225\231\354\212\265\355\225\230\353\212\224_Autoencoder/basic_autoencoder.py" "b/06-\354\202\254\353\236\214\354\235\230_\354\247\200\353\217\204_\354\227\206\354\235\264_\355\225\231\354\212\265\355\225\230\353\212\224_\354\230\244\355\206\240\354\235\270\354\275\224\353\215\224/basic_autoencoder.py" similarity index 100% rename from "06-\354\202\254\353\236\214\354\235\230_\354\247\200\353\217\204_\354\227\206\354\235\264_\355\225\231\354\212\265\355\225\230\353\212\224_Autoencoder/basic_autoencoder.py" rename to "06-\354\202\254\353\236\214\354\235\230_\354\247\200\353\217\204_\354\227\206\354\235\264_\355\225\231\354\212\265\355\225\230\353\212\224_\354\230\244\355\206\240\354\235\270\354\275\224\353\215\224/basic_autoencoder.py" diff --git "a/06-\354\202\254\353\236\214\354\235\230_\354\247\200\353\217\204_\354\227\206\354\235\264_\355\225\231\354\212\265\355\225\230\353\212\224_Autoencoder/denoising_autoencoder.ipynb" "b/06-\354\202\254\353\236\214\354\235\230_\354\247\200\353\217\204_\354\227\206\354\235\264_\355\225\231\354\212\265\355\225\230\353\212\224_\354\230\244\355\206\240\354\235\270\354\275\224\353\215\224/denoising_autoencoder.ipynb" similarity index 100% rename from "06-\354\202\254\353\236\214\354\235\230_\354\247\200\353\217\204_\354\227\206\354\235\264_\355\225\231\354\212\265\355\225\230\353\212\224_Autoencoder/denoising_autoencoder.ipynb" rename to "06-\354\202\254\353\236\214\354\235\230_\354\247\200\353\217\204_\354\227\206\354\235\264_\355\225\231\354\212\265\355\225\230\353\212\224_\354\230\244\355\206\240\354\235\270\354\275\224\353\215\224/denoising_autoencoder.ipynb" diff --git "a/06-\354\202\254\353\236\214\354\235\230_\354\247\200\353\217\204_\354\227\206\354\235\264_\355\225\231\354\212\265\355\225\230\353\212\224_Autoencoder/denoising_autoencoder.py" "b/06-\354\202\254\353\236\214\354\235\230_\354\247\200\353\217\204_\354\227\206\354\235\264_\355\225\231\354\212\265\355\225\230\353\212\224_\354\230\244\355\206\240\354\235\270\354\275\224\353\215\224/denoising_autoencoder.py" similarity index 100% rename from "06-\354\202\254\353\236\214\354\235\230_\354\247\200\353\217\204_\354\227\206\354\235\264_\355\225\231\354\212\265\355\225\230\353\212\224_Autoencoder/denoising_autoencoder.py" rename to "06-\354\202\254\353\236\214\354\235\230_\354\247\200\353\217\204_\354\227\206\354\235\264_\355\225\231\354\212\265\355\225\230\353\212\224_\354\230\244\355\206\240\354\235\270\354\275\224\353\215\224/denoising_autoencoder.py" diff --git "a/08-\353\224\245\353\237\254\353\213\235\354\235\204_\355\225\264\355\202\271\355\225\230\353\212\224_Adversarial_Attack/README.md" "b/08-\353\224\245\353\237\254\353\213\235\354\235\204_\355\225\264\355\202\271\355\225\230\353\212\224_\354\240\201\353\214\200\354\240\201_\352\263\265\352\262\251/README.md" similarity index 100% rename from "08-\353\224\245\353\237\254\353\213\235\354\235\204_\355\225\264\355\202\271\355\225\230\353\212\224_Adversarial_Attack/README.md" rename to "08-\353\224\245\353\237\254\353\213\235\354\235\204_\355\225\264\355\202\271\355\225\230\353\212\224_\354\240\201\353\214\200\354\240\201_\352\263\265\352\262\251/README.md" diff --git "a/08-\353\224\245\353\237\254\353\213\235\354\235\204_\355\225\264\355\202\271\355\225\230\353\212\224_Adversarial_Attack/fgsm_attack.ipynb" "b/08-\353\224\245\353\237\254\353\213\235\354\235\204_\355\225\264\355\202\271\355\225\230\353\212\224_\354\240\201\353\214\200\354\240\201_\352\263\265\352\262\251/fgsm_attack.ipynb" similarity index 100% rename from "08-\353\224\245\353\237\254\353\213\235\354\235\204_\355\225\264\355\202\271\355\225\230\353\212\224_Adversarial_Attack/fgsm_attack.ipynb" rename to "08-\353\224\245\353\237\254\353\213\235\354\235\204_\355\225\264\355\202\271\355\225\230\353\212\224_\354\240\201\353\214\200\354\240\201_\352\263\265\352\262\251/fgsm_attack.ipynb" diff --git "a/08-\353\224\245\353\237\254\353\213\235\354\235\204_\355\225\264\355\202\271\355\225\230\353\212\224_Adversarial_Attack/fgsm_attack.py" "b/08-\353\224\245\353\237\254\353\213\235\354\235\204_\355\225\264\355\202\271\355\225\230\353\212\224_\354\240\201\353\214\200\354\240\201_\352\263\265\352\262\251/fgsm_attack.py" similarity index 100% rename from "08-\353\224\245\353\237\254\353\213\235\354\235\204_\355\225\264\355\202\271\355\225\230\353\212\224_Adversarial_Attack/fgsm_attack.py" rename to "08-\353\224\245\353\237\254\353\213\235\354\235\204_\355\225\264\355\202\271\355\225\230\353\212\224_\354\240\201\353\214\200\354\240\201_\352\263\265\352\262\251/fgsm_attack.py" diff --git "a/08-\353\224\245\353\237\254\353\213\235\354\235\204_\355\225\264\355\202\271\355\225\230\353\212\224_Adversarial_Attack/imagenet_samples/chihuahua.jpg" "b/08-\353\224\245\353\237\254\353\213\235\354\235\204_\355\225\264\355\202\271\355\225\230\353\212\224_\354\240\201\353\214\200\354\240\201_\352\263\265\352\262\251/imagenet_samples/chihuahua.jpg" similarity index 100% rename from "08-\353\224\245\353\237\254\353\213\235\354\235\204_\355\225\264\355\202\271\355\225\230\353\212\224_Adversarial_Attack/imagenet_samples/chihuahua.jpg" rename to "08-\353\224\245\353\237\254\353\213\235\354\235\204_\355\225\264\355\202\271\355\225\230\353\212\224_\354\240\201\353\214\200\354\240\201_\352\263\265\352\262\251/imagenet_samples/chihuahua.jpg" diff --git "a/08-\353\224\245\353\237\254\353\213\235\354\235\204_\355\225\264\355\202\271\355\225\230\353\212\224_Adversarial_Attack/imagenet_samples/corgie.jpg" "b/08-\353\224\245\353\237\254\353\213\235\354\235\204_\355\225\264\355\202\271\355\225\230\353\212\224_\354\240\201\353\214\200\354\240\201_\352\263\265\352\262\251/imagenet_samples/corgie.jpg" similarity index 100% rename from "08-\353\224\245\353\237\254\353\213\235\354\235\204_\355\225\264\355\202\271\355\225\230\353\212\224_Adversarial_Attack/imagenet_samples/corgie.jpg" rename to "08-\353\224\245\353\237\254\353\213\235\354\235\204_\355\225\264\355\202\271\355\225\230\353\212\224_\354\240\201\353\214\200\354\240\201_\352\263\265\352\262\251/imagenet_samples/corgie.jpg" diff --git "a/08-\353\224\245\353\237\254\353\213\235\354\235\204_\355\225\264\355\202\271\355\225\230\353\212\224_Adversarial_Attack/imagenet_samples/imagenet_classes.json" "b/08-\353\224\245\353\237\254\353\213\235\354\235\204_\355\225\264\355\202\271\355\225\230\353\212\224_\354\240\201\353\214\200\354\240\201_\352\263\265\352\262\251/imagenet_samples/imagenet_classes.json" similarity index 100% rename from "08-\353\224\245\353\237\254\353\213\235\354\235\204_\355\225\264\355\202\271\355\225\230\353\212\224_Adversarial_Attack/imagenet_samples/imagenet_classes.json" rename to "08-\353\224\245\353\237\254\353\213\235\354\235\204_\355\225\264\355\202\271\355\225\230\353\212\224_\354\240\201\353\214\200\354\240\201_\352\263\265\352\262\251/imagenet_samples/imagenet_classes.json" diff --git "a/08-\353\224\245\353\237\254\353\213\235\354\235\204_\355\225\264\355\202\271\355\225\230\353\212\224_Adversarial_Attack/imagenet_samples/stoplight.jpg" "b/08-\353\224\245\353\237\254\353\213\235\354\235\204_\355\225\264\355\202\271\355\225\230\353\212\224_\354\240\201\353\214\200\354\240\201_\352\263\265\352\262\251/imagenet_samples/stoplight.jpg" similarity index 100% rename from "08-\353\224\245\353\237\254\353\213\235\354\235\204_\355\225\264\355\202\271\355\225\230\353\212\224_Adversarial_Attack/imagenet_samples/stoplight.jpg" rename to "08-\353\224\245\353\237\254\353\213\235\354\235\204_\355\225\264\355\202\271\355\225\230\353\212\224_\354\240\201\353\214\200\354\240\201_\352\263\265\352\262\251/imagenet_samples/stoplight.jpg" diff --git a/README.md b/README.md index b79649e..ae61db3 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,8 @@ ## 요구사항 +아래 파이토치와 파이썬 버전을 지원합니다. + * PyTorch 1.0 * Python >= 3.6.1 @@ -13,52 +15,99 @@ ## 목차 1. [딥러닝과 파이토치](01-딥러닝과_파이토치) - 딥러닝의 기본 지식을 쌓고 파이토치의 장단점에 대해 알아봅니다. - * [개념] 신경망의 원리 - * [개념] 딥러닝과 신경망 - * [개념] 왜 파이토치인가? + * 인공지능과 머신러닝 + * 지도학습, 비지도학습, 그리고 강화학습 + * 딥러닝과 신경망 + * 파이토치가 개발되기까지 + * 왜 파이토치인가? 2. [파이토치 시작하기](02-파이토치_시작하기) - 파이토치 환경설정과 사용법을 익혀봅니다 - * [프로젝트 1] 파이토치 설치 & 환경구성 - * [프로젝트 2] 파이토치 예제 내려받고 실행해보기 - * [프로젝트 3] 토치비전과 토치텍스트로 데이터셋 불러오기 + * 파이토치 설치 & 환경구성 + * 파이토치 예제 내려받고 실행 확인하기 + * 주피터 노트북 3. [파이토치로 구현하는 ANN](03-파이토치로_구현하는_ANN) - 파이토치를 이용하여 가장 기본적인 신경망을 만들어봅니다. - * [개념] 텐서와 Autograd - * [프로젝트 1] 경사하강법으로 이미지 복원하기 - * [프로젝트 2] 신경망 모델 구현하기 + * 텐서와 Autograd + * [텐서의 차원 자유자재로 다루기](03-파이토치로_구현하는_ANN/tensor_basic.ipynb) + * [텐서를 이용한 연산과 행렬곱](03-파이토치로_구현하는_ANN/tensor_operation.ipynb) + * [Autograd](03-파이토치로_구현하는_ANN/autograd_basic.ipynb) + * [경사하강법으로 이미지 복원하기](03-파이토치로_구현하는_ANN/image_recovery.ipynb) + * 오염된 이미지 문제 + * 오염된 이미지를 복원하는 방법 + * 문제 해결과 코드 구현 + * [신경망 모델 구현하기](03-파이토치로_구현하는_ANN/basic_neural_network.ipynb) + * 인공 신경망(ANN) + * 간단한 분류 모델 구현하기 4. [패션 아이템을 구분하는 DNN](04-패션_아이템을_구분하는_DNN) - Fashion MNIST 데이터셋과 앞서 배운 인공신경망을 이용하여 패션아이템을 구분해봅니다. - * [개념] [Fashion MNIST 데이터셋 설명](04-패션_아이템을_구분하는_DNN/01-fashion-mnist.ipynb) - * [프로젝트 1] [Fashion MNIST 학습하기](04-패션_아이템을_구분하는_DNN/02-neural-network.ipynb) - * [팁] 성능 측정법 알아보기 (Train/Validation/Test) - * [프로젝트 2] [오버피팅과 정규화](04-패션_아이템을_구분하는_DNN/03-overfitting-and-regularization.ipynb) - * 더 보기 -5. [이미지 인식능력이 탁월한 CNN](05-이미지_처리능력이_탁월한_CNN) - * [개념] CNN 기초 - * [프로젝트 1] [CNN 모델 구현하기](05-이미지_처리능력이_탁월한_CNN/01-cnn.ipynb) - * [프로젝트 2] [컬러 데이터셋에 적용하기](05-이미지_처리능력이_탁월한_CNN/02-cifar-cnn.ipynb) - * [팁] [토치비전으로 복잡한 모델 사용하기](05-이미지_처리능력이_탁월한_CNN/03-torcivision-models.ipynb) - * 더 보기 -6. [사람의 지도 없이 학습하는 Autoencoder](06-사람의_지도_없이_학습하는_Autoencoder) - 레이블이 없는 상태서 특징추출을 하는 오토인코더에 대해 배워봅니다. - * [개념] 오토인코더 기초 - * [프로젝트 1] [오토인코더로 이미지의 특징을 압축해보기](06-사람의_지도_없이_학습하는_Autoencoder/01-autoencoder.ipynb) - * [프로젝트 2] Latent 공간 탐험하기 - * 더 보기 + * [Fashion MNIST 데이터셋 알아보기](04-패션_아이템을_구분하는_DNN/fashion-mnist.ipynb) + * [인공 신경망으로 패션 아이템 분류하기](04-패션_아이템을_구분하는_DNN/neural-network.ipynb) + * 환경 설정하기 + * 이미지 분류 문제 + * 이미지 분류를 위한 인공 신경망 구현 + * 성능 측정하기 + * [과적합과 드롭아웃](04-패션_아이템을_구분하는_DNN/overfitting-and-regularization.ipynb) + * 데이터 늘리기 + * 드롭아웃 +5. [이미지 처리능력이 탁월한 CNN](05-이미지_처리능력이_탁월한_CNN) + * CNN 기초 + * 컴퓨터가 보는 이미지 + * 컨볼루션 + * CNN 모델 + * [CNN 모델 구현하기](05-이미지_처리능력이_탁월한_CNN/cnn.ipynb) + * [ResNet으로 컬러 데이터셋에 적용하기](05-이미지_처리능력이_탁월한_CNN/resnet.ipynb) + * ResNet 소개 + * CIFAR-10 데이터셋 + * CNN을 깊게 쌓는 방법 +6. [사람의 지도 없이 학습하는 오토인코더](06-사람의_지도_없이_학습하는_오토인코더) - 레이블이 없는 상태서 특징추출을 하는 오토인코더에 대해 배워봅니다. + * 오토인코더 기초 + * [오토인코더로 이미지의 특징 추출하기](06-사람의_지도_없이_학습하는_오토인코더/basic_autoencoder.ipynb) + * 오토인코더 구현 + * 잠재 변수 들여다보기 + * [오토인코더로 망가진 이미지 복원하기](06-사람의_지도_없이_학습하는_오토인코더/denoising_autoencoder.ipynb) + * 잡음 제거 오토인코더 구현 + * 잡음 제거 시각화하기 7. [순차적인 데이터를 처리하는 RNN](07-순차적인_데이터를_처리하는_RNN) - RNN을 활용하여 영화 리뷰 감정 분석과 기계번역을 해봅니다 - * [개념] RNN 기초 - * [프로젝트 1] [영화 리뷰 감정 분석](07-순차적인_데이터를_처리하는_RNN/01-text-classification.ipynb) - * [프로젝트 2] [Seq2Seq 기계 번역](07-순차적인_데이터를_처리하는_RNN/02-sequence-to-sequence.ipynb) - * 더 보기 -8. [딥러닝을 해킹하는 Adversarial Attack](08-딥러닝을_해킹하는_Adversarial_Attack) - Adversarial Attack - * [개념] Adversarial Attack 이란? - * [프로젝트 1] [FGSM 공격](08-딥러닝을_해킹하는_Adversarial_Attack/01-fgsm-attack.ipynb) + * RNN 개요 + * [영화 리뷰 감정 분석](07-순차적인_데이터를_처리하는_RNN/text-classification.ipynb) + * 자연어 전처리 + * RNN 모델 구현 + * [Seq2Seq 기계 번역](07-순차적인_데이터를_처리하는_RNN/sequence-to-sequence.ipynb) + * Seq2Seq 개요 + * 인코더 + * 디코더 + * Seq2Seq 모델 구현하기 * 더 보기 +8. [딥러닝을 해킹하는 적대적 공격](08-딥러닝을_해킹하는_적대적_공격) - 적대적 공격 + * 적대적 공격 이란 + * 적대적 공격의 종류 + * [FGSM 공격](08-딥러닝을_해킹하는_적대적_공격/fgsm-attack.ipynb) + * 학습된 모델 불러오기 + * 공격할 미이지 불러오기 + * 공격 전 성능 확인하기 + * FGSM 공격 함수 정의 + * 적대적 예제 생성 + * 적대적 예제 성능 확인 9. [경쟁하며 학습하는 GAN](09-경쟁하며_학습하는_GAN) - GAN을 이용하여 새로운 패션 아이템을 만들어봅니다. - * [개념] GAN 기초 - * [프로젝트 1] [GAN으로 새로운 패션아이템 생성하기](09-경쟁하며_학습하는_GAN/01-gan.ipynb) - * [프로젝트 2] [Conditional GAN으로 생성 컨트롤하기](09-경쟁하며_학습하는_GAN/02-conditional-gan.ipynb) + * GAN 기초 + * 생성자와 판별자 + * [GAN으로 새로운 패션아이템 생성하기](09-경쟁하며_학습하는_GAN/gan.ipynb) + * 학습 준비 + * 생성자와 판별자 구현 + * GAN 학습 구현 + * 결과물 시각화 + * [cGAN으로 생성 제어하기](09-경쟁하며_학습하는_GAN/conditional-gan.ipynb) + * cGAN으로 원하는 이미지 생성하기 + * 조건부 생성자와 판별자 + * cGAN 학습 구현 + * 결과물 시각화 * 더 보기 10. [주어진 환경과 상호작용하며 성장하는 DQN](10-주어진_환경과_상호작용하며_성장하는_DQN) - 간단한 게임환경 안에서 스스로 성장하는 DQN 에이전트를 만들어봅니다. - * [개념] 강화학습과 DQN기초 - * [팁] OpenAI Gym - * [프로젝트 1] [카트폴 게임 마스터하기](10-주어진_환경과_상호작용을_통해_학습하는_DQN/01-cartpole-dqn.ipynb) + * 강화학습과 DQN기초 + * [카트폴 게임 마스터하기](10-주어진_환경과_상호작용을_통해_학습하는_DQN/cartpole-dqn.ipynb) + * 하이퍼파라미터 + * DQN 에이전트 + * 이전 경험 기억하기 + * 행동하기 + * 경험으로부터 배우기 + * 학습 시작하기 * 더 보기 diff --git a/test/test_06.py b/test/test_06.py index 047c9b3..7302f0f 100644 --- a/test/test_06.py +++ b/test/test_06.py @@ -4,7 +4,7 @@ # setup path -chapter_name = "06-사람의_지도_없이_학습하는_Autoencoder" +chapter_name = "06-사람의_지도_없이_학습하는_오토인코더" dir_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), ".." , chapter_name) sys.path.append(dir_path) diff --git a/test/test_08.py b/test/test_08.py index 08eeaa3..8456b6e 100644 --- a/test/test_08.py +++ b/test/test_08.py @@ -4,7 +4,7 @@ # setup path -chapter_name = "08-딥러닝을_해킹하는_Adversarial_Attack" +chapter_name = "08-딥러닝을_해킹하는_적대적_공격" dir_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), ".." , chapter_name) sys.path.append(dir_path) diff --git a/test/test_10.py b/test/test_10.py new file mode 100644 index 0000000..448ccb1 --- /dev/null +++ b/test/test_10.py @@ -0,0 +1,26 @@ +import sys +import os +from importlib import import_module + + +# setup path +chapter_name = "08-딥러닝을_해킹하는_Adversarial_Attack" +dir_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), ".." , chapter_name) +sys.path.append(dir_path) + + + +def test_chapter_exmaples(): + mydir_tmp = os.path.join(dir_path) # add the testA folder name + mydir_new = os.chdir(mydir_tmp) # change the current working directory + mydir = os.getcwd() # set the main directory again, now it calls testA + + chapter_examples = [ + "cartpole_dqn", + ] + + for example in chapter_examples: + imported_package = import_module(example) + +if __name__ == "__main__": + test_chapter_exmaples() \ No newline at end of file