inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지

이미지 분류 - 합성곱 신경망(CNN)

모델 평가 부분 질문드립니다.

1945

정찬희

작성한 질문수 23

2

-, predicted = torch.max(outputs.data, 1)

앞에 -, 이부분 코드가 무슨 의미인가요?

빨간색 표시한 부분 혹시 자세하게 코드 해설 가능할까요?

인공신경망 pytorch 딥러닝 머신러닝 배워볼래요? python

답변 1

7

딥러닝호형

안녕하세요!

outputs의 크기가 (배치 크기)x(클래스의 개수)이므로  열이 하나의 이미지의 대응되는 벡터를 나타냅니다. 따라서 행(0), 열(1) 중 열을 기준으로 최댓값을 뽑아 예측값을 하나 만드는 것입니다. 예를 들어서 배치 크기가 2이고 클래스가 3개인 outputs가 있다고 생각해봅니다.

outputs = [[0.1, 0.4, 0.5], [0.2, 0.6, 0,2]] 

여기서의 최댓값의 위치는 2번째(0.5)와 1번째(0.6)입니다. 즉, 첫번째 이미지는 2라고 예측하는 것이고 두번째 이미지는 1이라고 예측을 하게 됩니다. 이를 torch.max를 이용하여 나타냅니다.

torch.max는 최댓값과 최댓값의 위치를 산출해주는데 여기서 우리는 최댓값은 필요가 없으므로 받지 않아도 됩니다. 따라서 _ (언더바)로 처리하여 해당 출력값은 저장하지 않겠다는 의미입니다. 즉, _, predicted는 최댓값의 위치만 predicted에 저장하겠다는 의미입니다.

따라서 _, predicted = torch.max(outputs.data, 1)의 의미는 각 열(1)마다 최댓값의 위치를 예측값으로 사용하겠다는 의미입니다. 마지막으로 .data는 예측값을 계산할 때는 역전파 계산이 필요없기 때문에 데이터만 사용한다는 의미에서 사용된 것입니다. ( 그런데 지금 보니까 with torch.no_grad()를 사용했기 때문에 .data를 없애도 될 것 같습니다.)

열공하세욧 :)

0

정찬희

와우.. 너무 완벽하게 설명해주셔서 감사합니다.

수업자료 제공 부탁드립니다.

0

95

2

코드가 어디에 있는지 모르겠습니다.

0

95

2

논문 구현

0

188

2

overfitting이 나는 이유가 궁금합니다.

1

171

2

분류 성능이 잘 안 나오는 이유

0

218

1

AutoEncoder 차원 질문

1

250

2

사전 학습 모델에서의 layer 변경에 대한 질문

1

221

1

7강 폴더 만들

0

260

1

4-3강 cross-validation에서의 best model 선정 기준

0

450

1

regression 문제에 대한 결과 시각화

0

213

1

Loss function 관련하여 질문드립니다.

0

957

1

early stopping 코드 문의

0

327

1

예측 그래프

0

355

1

데이터 불균형

1

364

1

8강 전이 학습 질문

0

397

2

data의 gpu처리 질문

0

242

1

nn.Linear(1024, 10) 관련 질문드립니다.

0

288

1

학습과 평가시 Loss 함수가 다른 이유

0

249

1

전처리 관련해서 질문 있습니다.

0

225

1

데이터 엔지니어의 역량을 기르려면 어떻게 해야할까요?

0

935

2

역전파 내용 중 미분 관련 질문 드립니다

1

282

1

8강 전이학습에서 kernel size 관련 질문 드립니다.

1

959

1

이미지분류-합성곱신경망(CNN) 피쳐맵 질문입니다.

1

586

1

14강 데이터 불균형 RandomRotation

1

482

1