GithubHelp home page GithubHelp logo

deeplearning101's People

Contributors

8a496b avatar justin-a avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

deeplearning101's Issues

MNIST 학습

딥러닝대해서 공부하는 중인데
MNIST를 기존에 제공하는것 말고 제가 그린 이미지로 학습하고 싶은데 데이터를 불러와서 하는 방법을 알고 싶습니다. 아직 인터넷에 Tensorflow위주로 하는 것이 많아서 pytorch에 관한 정보가 잘 없는데......

파이토치 - cuda 관련 문의사항

안녕하십니까 해당 교제 구매 후, 공부하고 있는 학생입니다.
cuda 11.2버전을 설치 후 파이토치 설치 과정에서 cuda 버전을 10.2와 11.3 중에 고르게 되어있어 11.3버전으로 체크 후 설치를 진행하였습니다. ( cudnn은 cuda 11.5와 10.2 중에 고르라고 되어있어 같은 11.x라고 판단되는 11.5를 다운 받았습니다.)
이렇게 설치 후 torch.cuda.is._available('cuda')를 통해 확인 해본 결과 False가 출력되어 제대로 호환이 안됨을 알게되었습니다.

이같은 경우에 3개가 다 같은 버전인 10.2로 맞추어 설치를 진행해야 하나요? 감사합니다.

PART02 (p59~60) 코드 내용 제보

안녕하세요.
다른 책과는 다르게 자세하고 어려운 주제도 다루어 주셔서, 책 잘 읽고있습니다.

아래와 같이 코드 설명 중 잘못된 부분이 있어서 글 남깁니다.
p59~60에 보면, (4), (5) 코드 설명이 잘못 매칭된 것 같습니다.

오타 제보 - PART 04. 컴퓨터 비전

오타 제보 - PART 04. 컴퓨터비전

1. 코드

  • p.136, 주석 6번행 들여쓰기 오류
  • p.159, 코드 56번, out = F.avg_pool2d(out, 8s) -> out = F.avg_pool2d(out, 8)
  • p.176, 코드 7번, transforms.C[Enter]Crop(224) -> transforms.CenterCrop(224)

2. 내용

  • p.121, 마지막문단, 예상치못한 URL이 포함되어 있음(확인결과 오픈마켓 한돈 암돼지1등급이... ^^ㅋ)
  • p.124, 아래서 2번째 문단, "사각형 안의 픽셀 값을 뽑으면 'max pooling'~" -> "사각형 안의 최대 픽셀 값을 뽑으면 'max pooling'~"
  • p.134, code의 optimizer와 주석 내용 상이함
  • p.147, 위에서 4째줄, [그림 4-12] -> [그림 4-14]
  • p.147, 2번째 문단, [그림 4-13] -> [그림 4-15]
  • p.148, 그림 참고 2개, [그림 4-14] -> [그림 4-16]
  • p.152, 그림 참고, [그림 4-15] -> [그림 4-17]
  • p.153, 그림 참고, [그림 4-18] -> [그림 4-20]
  • p.155, 첫째줄 내용 확인 필요, [그림 4-20]을 확대한 부분이 Inception 모듈입니다. -> [그림 4-22]의 확대한 부분이 Inception 모듈입니다.
  • p.156, ResNet 설명 문단 그림 참고, [그림 4-22] -> [그림 4-24]
  • p.177, 코드 7번에 대한 설명이 CenterCrop에 대한 설명이 아니라 RandomResizedCrop에 대한 설명으로 보입니다.
  • p.177, 코드 8번에 대한 설명이 코드와 상이합니다.
  • p.184, pretrained model 학습에 대한 코드 설명은 있으나 해당되는 코드는 없습니다.(전체코드에는 있음)
  • p.189, 11번 코드 부분 optimizer 이하 부분이 2번 반복되고 있음

3. 질문

  • 예제4-6, ResNet18 pretrained model 학습시 전체 네트워크를 학습하는 것인지요? Transfer Learning 내용 소개에서는 weight freezing에 대한 설명과 함께 fully connected 부분만 학습하는 것으로 소개되는데 코드에서는 별다른 언급이 없는것 같아서 문의드립니다.

2장 loss값 계산 관련

2장뿐만이 아니라 전체적으로 loss값 계산할 때 보면 len(test_loader.dataset)으로 나누게 되는데 loss값은 len(test_loader)로 나눠야 맞는게 아닌건가 싶어 여쭤봅니다. 감사합니다.
예제 코드는 아래와 같습니다.

''' 9. 학습되는 과정 속에서 검증 데이터에 대한 모델 성능을 확인하는 함수 정의 '''
def evaluate(model, test_loader):
model.eval()
test_loss = 0
correct = 0

with torch.no_grad():
    for image, label in test_loader:
        image = image.to(DEVICE)
        label = label.to(DEVICE)
        output = model(image)
        test_loss += criterion(output, label).item() #이부분입니다.
        prediction = output.max(1, keepdim = True)[1]
        correct += prediction.eq(label.view_as(prediction)).sum().item()

test_loss /= len(test_loader.dataset) #이부분입니다.
test_accuracy = 100. * correct / len(test_loader.dataset)
return test_loss, test_accuracy  

학습한 모델 저장하고 다른 프로그램에 사용하기

기존 학습하고 난 모델은 pth파일로 저장 한 다음 다른 프로그램에 불러와서 학습된 데이터를 잘 돌아가는지 확인 하고 싶은데,
다을 프로그램에서 초기 모델 설정한 클래스가 있어서 돌릴수 있다고 하는데 혹시 초기 네트워크 없는 상태에서 학습된 모델을 사용하는 방법이 있습니까?

Transfer Learning 예제 오류

안녕하세요. 책 잘 보고 있습니다.
Google Colab으로 예제 코드들을 돌려보고 있는데, transfer learning 예제에서 오류가 뜹니다(직접 일일이 복붙을 했는데도 불구하고).
cuda()를 처음 사용하는 시점, model = models.resnet18(pretrained = False).cuda(), 에서
CUDA error: device-side assert triggered
라는 오류가 뜹니다.
어떻게 해결해야 하나요?
감사합니다.

p92 개념 수식 재확인 부탁해요.

안녕하세요

오타 및 오개념으로 인해 고생하며 책 공부하고 있는 독자입니다.
책 내용구성은 가능한한 많은 내용을 두루 담으려고 노력하신것 같아 좋은데,
오타가 너무 많고, 특히, 오개념은 학습도중 발목을 잡습니다.. ㅠ

92쪽에 LeCun Uniform Initialization 식이 He Initialization 부분에 씌여져 있네요..
모르고 지나쳤더라면 마치 He 수식인걸로 착각했을 것 같습니다...

그리고 He initialization 수식은 없네요. (일부러 안적으신건지..)
실전에서 적용시 문제가 되는 레이어에서의 input 값들의 분포가 어떠한 양상을 띠고, 활성화 함수가 무엇이냐에 따라 초기화 조건이 달라져야 하는데 그래서 초기화 관련 수식은 반드시 있어야 한다고 생각합니다. loss값 감소가 더디거나 진행에 문제가 있을 때 문제되는 레이어에서 input 값의 분포를 보고 어떤 초기화 방법을 사용할지 결정하게 되기 때문입니다.

그리고 He Initialization의 경우 독자가 "그래서 He Initialization이 무엇인가요?"하고 물었을 때 책에 있는 내용은 제대로 된 설명이 되지 못하는 것 같습니다. ReLU 활성화 함수 사용시 Xavier가 최종 결과값을 0으로 만들어버리는 단점을 극복하기 위해 He 초기화를 사용한다고 하였는데, 그래서 He가 어떤 초기화 방법인지에 대한것인지는 안적어주셨어요. 설명해주셨으면 더 좋았을것 같습니다.

또한 Initialization 관련하여 Glorot Initialization은 가장 많이 사용되는 초기화 방법중의 하나인데 하필 이 부분만 책에서 쏙 빼 놓은 점도 약간 의아스럽습니다....

아무튼 수식관련 내용은 수정 부탁드립니다.
감사합니다.

(p.63) PART 02 예제 2-1의 '5. 데이터 확인하기' 부분 문의 드립니다.

안녕하세요.
딥러닝에 관심은 있었는데 어디부터 시작해야될지 몰라서 고민하던 차에 이 책을 구입하게 되었습니다.
수학, 통계와는 거리가 먼 전공이라 많이 어렵지만 그래도 이 책 덕분에 한걸음씩 배울 수 있어 감사 드립니다.

제가 드릴 질문은 63페이지에 있는, 사람의 손글씨 데이터를 이용한 예제의 설명 부분인데요,
페이지 윗부분의 코드인 '5. 데이터 확인하기' 에 대한 설명이 보이질 않습니다.

해당 코드 아래부분의 설명인
//
다운로드한 후 Mini-batch...
(중략)
...torch.LongTensor 형태라는 것도 확인할 수 있습니다.
//
내용은 62페이지 하단의 '4. 데이터 확인하기'의 설명과 동일합니다.

제 생각입니다만, 편집 과정 중 해당 부분이 중복으로 실리고,
원래의 '5. 데이터 확인하기'에 대한 설명이 누락된 것으로 추정됩니다.

이 책의 장점 중 하나가 처음보는 라이브러리나 함수에 대해서도 해당 예제를 이해하는데는 무리없을 정도로 설명이 되어 있다는 점 인데요,
오늘 해당 부분을 읽다보니 해당 부분의 설명이 없어 글을 쓰게 되었네요.

항상 건강하시고, 좋은 하루 되시길 바랍니다.

Philip Kim 드림.

run 에러

5-2_model_imbd_scratch 코드 에러가 납니다.

`

Check batch data

sample_for_check = next(iter(train_iterator))
print(sample_for_check)
print(sample_for_check.text)
print(sample_for_check.label)`

여기서 keyError가 발생하고, 연달아 뒤에 모델 학습하는 부분에서도 keyError가 발생합니다.

확인 부탁드려도 될까요?

loss값 계산 관련

안녕하세요, loss값 계산 부분에 관련하여 issue 남기게 되었습니다.

p.136의 코드를 예시로 들면

def evaluate(model, test_loader):
    model.eval()
    test_loss = 0
    correct = 0
    with torch.no_grad():
        for image, label in test_loader:
            image = image.to(DEVICE)
            label = label.to(DEVICE)
            output = model(image)
            test_loss += criterion(output, label).item()
            prediction = output.max(1, keepdim=True)[1]
            correct += prediction.eq(label.view_as(prediction)).sum().item()
    test_loss /= len(test_loader.dataset)
    test_accuracy = 100. * correct / len(test_loader.dataset)
    
    return test_accuracy, test_loss

이 부분에서 test_loss 변수에 criterion(output, label).item()의 값을 모두 저장한 후 len(test_loader.dataset)로 나눠주는 부분이 있는데, 이 부분을 test_loss /= (len(test_loader.dataset) / BATCH_SIZE)로 바꾸면 loss값이 Epoch 한 번의 평균 값으로 출력이 잘 됩니다.

criterion = nn.CrossEntropyLoss()를 수행할 때 reduction argument의 기본 값이 "mean"이므로 해당 Batch에 Loss의 평균 값이 리턴되는 것으로 이해했는데(https://pytorch.org/docs/stable/generated/torch.nn.CrossEntropyLoss.html 를 참고했습니다.), 특별히 다른 값을 지정하지 않고 사용하였으니 test_loss /= (len(test_loader.dataset) / BATCH_SIZE) 이처럼 나눠주는 것이 맞다고 생각합니다.

이 부분 어떻게 생각하시나요??

Originally posted by @kalibianw in #14 (comment)

5-3_model_imdb_glove.ipynb 파일 keyerror

안녕하세요. 파이썬 딥러닝 파이토치로 딥러닝 학습중인 직장인입니다.

5-3_model_imdb_glove.ipynb 진행 중에.. 아래와 같이 KeyError 가 발생하는데,
내용상으로는 TEXT.vocab 에 없는 단어에서 발생하는 것으로 추측됩니다.

그런데, OOV가 있는 경우에도 unk_token='[UNK]' 으로 입력되어, Error가
발생하지 않게 되어 있지 않나요? 어떻게 오류를 해결할 수 있을까요?


KeyError Traceback (most recent call last)
in
1 # Check batch data
----> 2 sample_for_check = next(iter(valid_iterator))
3 print(sample_for_check)
4 print(sample_for_check.text)
5 print(sample_for_check.label)

D:\Anaconda\envs\py38_pytorch\lib\site-packages\torchtext\legacy\data\iterator.py in iter(self)
158 else:
159 minibatch.sort(key=self.sort_key, reverse=True)
--> 160 yield Batch(minibatch, self.dataset, self.device)
161 if not self.repeat:
162 return

D:\Anaconda\envs\py38_pytorch\lib\site-packages\torchtext\legacy\data\batch.py in init(self, data, dataset, device)
32 if field is not None:
33 batch = [getattr(x, name) for x in data]
---> 34 setattr(self, name, field.process(batch, device=device))
35
36 @classmethod

D:\Anaconda\envs\py38_pytorch\lib\site-packages\torchtext\legacy\data\field.py in process(self, batch, device)
229 """
230 padded = self.pad(batch)
--> 231 tensor = self.numericalize(padded, device=device)
232 return tensor
233

D:\Anaconda\envs\py38_pytorch\lib\site-packages\torchtext\legacy\data\field.py in numericalize(self, arr, device)
328 if self.use_vocab:
329 if self.sequential:
--> 330 arr = [[self.vocab.stoi[x] for x in ex] for ex in arr]
331 else:
332 arr = [self.vocab.stoi[x] for x in arr]

D:\Anaconda\envs\py38_pytorch\lib\site-packages\torchtext\legacy\data\field.py in (.0)
328 if self.use_vocab:
329 if self.sequential:
--> 330 arr = [[self.vocab.stoi[x] for x in ex] for ex in arr]
331 else:
332 arr = [self.vocab.stoi[x] for x in arr]

D:\Anaconda\envs\py38_pytorch\lib\site-packages\torchtext\legacy\data\field.py in (.0)
328 if self.use_vocab:
329 if self.sequential:
--> 330 arr = [[self.vocab.stoi[x] for x in ex] for ex in arr]
331 else:
332 arr = [self.vocab.stoi[x] for x in arr]

KeyError: 'rauol'

74-75페이지 오타 확인해주세요

74쪽 분류모형 표 값 정정해주세요.

TN FP FN TP 내용은 기본적으로 다른 책에서도 다 다루는 내용인데 이런 부분에서 실수는 없어야 합니다.... ㅠㅠㅠ
처음 하는 사람들은 이런 오타때문에 몇 시간 헤맬수도 있어요 ㅠㅠ

그리고 75페이지도 정상적으로 된 것인가요?

정밀도(Precision) 부분에 분자는 TP로 되어있는데 설명은 옳게 분류된 불량 데이서 수라고 나와서요...

블로그나 다른 사이트 찾아보면 반대로 설명되어있는것 같기도 하고..

헷갈립니다.

74-75페이지 전체적으로 확인 부탁드립니다.

  • 추가:
    75페이지 계속 보다보니 F1 Measure 영어단어도 오타 있네요; ;;
    흠... draft 쓰고 오타 검토는 제대로 하신건가요..? 한 페이지에서 이렇게 많이.. ㅠ
    그 밑에 수식에도 오타있고요.... 참..
    공부하다가 짜증이 밀려옵니다 ㅠㅠ 아..

Chapter 6 제보

오타.
p.274 minimax식 이후 : '경찰'의 입장에서는 D(x)가 1이고(진짜 데이터를 1로 구분) 'D(G(z))'가 0일때
-> 위의 문장에서 따옴표 안의 단어들이 빠져있습니다.

수정 제안.
p.282 : 그런데 (1,1)에서 왼쪽으로 '또는' 위로 가는 Action은
'또는'이라는 단어를 넣어주는 것이 읽을 때 매끄럽다고 생각됩니다.

PART 04 컴퓨터비전 p.182~p.185 Transfer Learning 실습 중 오류 질문

안녕하세요 파이썬 딥러닝 파이토치 책을 구매해서 공부 중인 학생입니다
''' 10. 미리 학습되지 않은 ResNet18 학습 실행하며 Train, Test set의 Loss 및 Test set Accuracy 확인하기 '''
''' 11. IMAGENET 데이터로 미리 학습이 된 ResNet18 모델을 불러온 후 개미, 벌 이미지 데이터에 맞게 Fine Tuning 해보기 '''
실행 중에 IndexError: Target 2 is out of bounds. 오류가 발생했는데 원인이 무엇인지 모르겠어서 질문 드립니다.
CPU 환경이라 model.cuda() 구문을 model.to(DEVICE)로 바꾼 것 말고는 예제 코드를 수정 한 게 없는데 어떤 이유인가요...

오류 업
오류

코드 오류

안녕하세요 책구매하였고 클래스 수업도 잘 듣고 있습니다.

5-2_model_imdb_scratch 파일 코드에서 몇가지 문의사항있습니다.

  1. 우선 torchtext 로 imdb 파일을 부르는게 잘 안되더라고요. legacy 를 넣어서 해결해야 하는건가요? legacy 를 넣어서 해보니까 잘 돌아가긴 합니다만,
  2. sample_for_check =next(iter(train_iterator)) 이 부분에 대한 문의입니다.
    data.BucketIterator.splits 이후에 저 코드를 돌려보니 에러가 뜨거든요. next 가 안되는 것 같긴한데...

63 page 에 중복된 설명이 있습니다.

''' 4. 데이터 확인하기 (1) '''
for (X_train, y_train) in train_loader:
print('X_train:', X_train.size(), 'type:', X_train.type())
print('y_train:', y_train.size(), 'type:', y_train.type())
break

62 p와 63 p에 걸쳐 중복된 설명이 두번 있습니다.

''' 5. 데이터 확인하기 (2) '''
pltsize = 1
plt.figure(figsize=(10 * pltsize, pltsize))
for i in range(10):
plt.subplot(1, 10, i + 1)
plt.axis('off')
plt.imshow(X_train[i, :, :, :].numpy().reshape(28, 28), cmap = "gray_r")
plt.title('Class: ' + str(y_train[i].item()))

여기에 대한 설명이 없어서 그러는데, 여기서 pltsize의 의미와 코드의 의미를 잘 모르겠습니다. 즉 figsize는 행이 10개이고 열이 하나인지, 아니면 x축에는 10개, y 축에는 한개의 글자를 의미하나요? 궁금해서 여쭈어 봅니다.

오타 제보 - PART 03, Deep Learning

알찬 구성으로 어려운 내용을 조금이나마 쉽게 설명하기 위해 노력하셨다는 느낌이 많이 드는 책입니다. 특히 코드 한 줄 마다 주석과 설명을 해주어 많은 도움이 될 것 같습니다. 다만 오타나 문맥이 이상한 곳이 많은 것 같습니다. 읽는중 오타나 이상한 부분이 있다면 issues에 남기도록 하겠습니다.

1. 코드

  • 예제 코드 전반에서 "콜론( : )" 누락된 곳이 많습니다. 특히 if, for, def, class 등에서 거의 콜론이 누락되어 있습니다. Python을 해본 사람은 당연히 알아서 잘 처리하겠지만 Python을 처음 하는 사람이라면 예제코드를 입력하다가 당황할지도 모르겠네요.
  • 예제3-1, Dropout 적용시 p.82에서는 30%를 적용한다고 언급하고, p.83에서 50%를 적용한다고 언급하며 실제 50%를 적용하였습니다. 일관성을 위해 p.82의 30%를 50%를 변경하여야 할 것으로 보입니다

2. 내용

  • p.80, 2번째문단 2째줄, 일반적인 신경망 구조 내용이 중복해서 언급된 것으로 보입니다.
  • p.80, 3번째문단 2째줄, "Dropout한 것인지" --> "Dropout할 것인지" 가 더 적절해 보입니다.
  • p.89, 2번째문단 1째줄, [그림3-7] --> [그림3-9] 가 맞을것 같음
  • p.96, RMSProp 설명 2째줄, "~학습이 오래 진행될수록 부분이 계속 증가해~", 내용이 누락된 것 같음
  • p.99, 4.7 Stacked AutoEncoder 설명부분에서 [그림 3-17] 은 FashionMNIST 데이터 출력입니다. [그림 3-15]가 맞을 것 같음
  • p.104 이후, MNIST와 FashionMNIST 혼합되어 사용되고 있음.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.