02 전이 학습 코드 분석

2024. 3. 22. 00:01

 

glob.glob 은 정규식 처럼 생각하면됨 여기서target_path 를 보면 

경로 + 찾고자 하는 형식 을 넣어서 그 형식에 해당하는 path 를 paht_list 에 넣은뒤 return 값을 내놓음 

 

인덱스에 해당하는 파일경로를 뽑은뒤 

파일 경로르르 image.open 에 넣으면 크기 사이즈 [높이] [너비] [색 ] 을 알수 있다. 

 

이경로중 하나를  self.transform ()에 넣는데 이때 클래스를 실행하기때문에 /ImageTransform 의__call__ 함수가 실행되면서 이미지가 변경되는것을 볼수 있다. 

 

여기서 __call__ 이 실행되면서 위의 __init__ 이실행되는것을 볼수 있다!

 

# 그림판으로 모델 연결시킨거 도식화하기 

 

 

 

 

 

# named_parameters()

 

우리가 쓰는 모델은 이미 완성된 모델이기 때문에 . parameter 당 이름이 있다.  

 

 

# 맨마지막에 넣었던 새로운 linear 안에 들어있는 bias 와 weight 를 확인하는 식

 

 

  로딩바 같은 효과라고 생각하면 된다. 

# torch.set_grad_enabled()

  with torch.set_grad_enabled(phase == 'train'):

 

이건 하나의 공식이여서 그냥.. 외우면 되는거라고 생각하고넘어가도 될듯

 

 

 

 

 

 

#

 

 

# batch 와 loss 그리고 SGD 이란?

https://www.youtube.com/watch?v=vMh0zPT0tLI

 

# cross_entropy loss 를 구해보자 

 

 

entropy 는불안정성이라고 생각하면되늗네 

내가 예측한 값이 얼마나 불안정한지 그것을 값으로 나타낸 값이다. 

위의 그림에서 첫번째 그래프 실제의 값이 1 인데 내가 예측한 값이 만약 0 에 가깝게 예측이 됬다면 당연히 불안정성 이 높아지기때문에 .  곱하면 값이 커지게 되는데 

 

 

 

이렇게 엔트로피를 계산할수 있다,,,,,,

 

그러면 이것을 신경망에서 어떻게 사용하는지 설명하겠다. 

 

cross entropy 는 softmax 함수에서 많이 사용된다. 

이전의 이진 분류처럼 이거 아니면 저거 가 아닌 많은 후보들이 이 있고 그 후보들도 각각의 에측값들이 나올때 

이중에서 가장높은 결과값을 보이는 것이 실제로는 맞는 답인가? 즉 맞게 설계된 알고리즘인가? 일때 이 cross entropy 를 사용하게 되는데 

 

 

여기서 나머지 observed == label 들 값들은 0 으로 설정 되있기 때문에 ( 데이터 셋에서 ) 이 나머지들은 신경 안써도 된다. 

그리고  -1 * log( predicted (setosa)) 의 식에서 -1 도 label 로 설정되 어 있는 값 == 예측값이다.. 

 

그럼이제 이 cross entropy 를 이용해서 backpropagation 을 해보ㅗ자

 

 

https://www.youtube.com/watch?v=xBEh66V9gZo&list=PLblh5JKOoLUIxGDQs4LFFD--41Vzf-ME1&index=13

 

# back propagation 을 뜯어보자 

cross entropy 에 넣은 예측값은 softmax 에서 나온 값이고 

 

 

 

우리는 b3 를 구하고 싶다. 왜냐면 알고리즘을 정확하게 만들고 싶으니까..그럼 b3를 어떻게 변하게 할까?

 

이렇게 연결되있으니까 chain rule 이라 하는거다.

이번에는 보라

 

 

이렇게 보면

 

virgininca 는 b3에 직접적인 영향을 끼치는것은 아니라는것을 알수 있다. 

 

 

 

결국은

 

이렇게 결과가 쉽게 나오는것을 알수 있다. 

 

 

이 sum 을 slop 에 넣고 learning rate ( 임의로 설정)

 

해서 step size 를 정했다.

 

 

# batch 와 미니 batch 와 에포크

 

배치 : 하나의 바구니라고 생각하면된다. 

미니배치들은 배치로 잘려진 애들을 미니배치라고 생각하면된다. 

 

https://www.youtube.com/watch?v=87Q2LIlMWoY 

 

이 강의를 내가 정리함

 

여기서x와 y 가 헷갈릴수도 있는데 

 

어쩌피 알고리즘의 마지막  다음이 y 이다.

 

# cnn 에서 backpropagation 이란?

 

 

여기서 ㅣoss 는 cross entropy loss 이다.