일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- semi supervised learnin 가정
- CGAN
- SSL
- CycleGAN
- simclrv2
- UnderstandingDeepLearning
- 최린컴퓨터구조
- shrinkmatch
- adamatch paper
- Meta Pseudo Labels
- tent paper
- 컴퓨터구조
- shrinkmatch paper
- GAN
- conjugate pseudo label paper
- dcgan
- dann paper
- 딥러닝손실함수
- Pseudo Label
- mocov3
- BYOL
- CoMatch
- Pix2Pix
- Entropy Minimization
- ConMatch
- 백준 알고리즘
- remixmatch paper
- mme paper
- cifar100-c
- WGAN
- Today
- Total
목록딥러닝 (76)
Hello Computer Vision
코드를 공부하는데 argmax의 keepdim = True라는 것을 보았다. 이전부터 보았던 건데 왜 공부안했는지 싶어서 남겨두려고 한다. 일단 직관적으로 유지할 수 있다는 것을 알 수 있다. arr = torch.rand(2, 3, 4) pred = arr.argmax(2, keepdim = False) print(pred) print(pred.shape) tensor([[0, 2, 1], [0, 2, 1]]) torch.Size([2, 3]) 크기가 (2, 3, 4)인 텐서에 argmax를 취해주면 가장 높은 값을 기준으로 주어진 인자에 따라 차원 한개가 사라지는 것을 볼 수 있다. arr = torch.rand(2, 3, 4) pred = arr.argmax(2, keepdim = True) pri..
Transformer 구조를 살펴보다 보면 input에 대하여 Embedding을 입힌 후 Positional Encoding하는 과정을 거치는 것을 확인할 수 있다. ViT에서는 안하는 추세이지만 NLP에서는 위치가 중요하다. Positional Encoding 사용 이유 RNN, LSTM 과 다르게 Transformer에서는 가장 큰 특징인 병렬화를 사용하기 때문에 각 단어 토큰에 대한 순서를 보장하지 않는다. 예를 들어 "I do want to buy ice cream, but i can not' 'i do not want to but ice cream, but i can' 방금 급조한 두개의 문장을 비교해본다면 들어간 단어는 똑같으나 단어의 순서에 따라 의미가 확 변하는 것을 확인할 수 있다. 그..
딥러닝 배울 때부터 많은 강의에서 오버피팅을 방지하는 방법으로는 데이터셋을 단순히 Training / Test 데이터 셋으로 나누는 것이 아니라 Train / Valid / Test 데이터 셋으로 나누는 것이라고 한다. 사실 그때는 그냥 그런갑다 하고 배웠는데 지금은 조금 제대로 알고 넘어가야한다고 생각해 정리해보려고 한다. 여러 글들을 보고 제 개인적인 이해 입니다. Train data 가장 간단하다. 모델을 훈련하기 위해 사용되는 데이터이다. 데이터셋에서 80%의 데이터를 모델에 훈련하는데 사용한다. 그러나 Training 정확도와 에러가 이상적이더라도 실제 환경에서 성능이 잘 나올 확신은 없기 때문에 이를 잘 일반화하는 것이 중요하다. Test data 훈련에 필요한 80% 데이터를 제외한 20%가..
여러 글을 보고 제 개인적인 이해를 담았습니다. 아래 참조있습니다. Zero shot learning이란 무엇인가? 기존의 supervised learning은 레이블링된 학습 데이터 세트를 사용하여 모델을 학습하지만 이에 반해 zero-shot learning은 학습 데이터에 없는 클래스를 인식하거나 예측하는 방법이다. 예를 들자면 말 이미지들만 train 단계에서 활용한 후 zebra 이미지를 test시에 input값으로 준다면 이를 잘 분류할 수 있다. 여기서 중요한 점은 구체적인 클래스로 분류할 수는 없다. 왜냐하면 Zero shot learning에서 새로운 unseen data에 대해서는 어떤 클래스로 분류할지 모르기 때문이다. 그러나 만약 110개의 새로운 클래스가 들어왔을 경우 잘 분류하는..
가끔씩 코드를 보면은 copy.copy / copy.deepcopy가 나와서 이전부터 궁금했었는데 이번에 한번 알아보려고 한다. 복사와 비슷한 개념인 할당을 한번 해보자. a = [1,2,3,4] b = a print(b) [1, 2, 3, 4] 리스트 a를 정의해주고 이를 b에 할당한 모습이다. b[3] = 2 print(a) [1, 2, 3, 2] 그리고 b의 원소를 바꾸고 a를 출력해보면 똑같이 a의 원소도 바뀐 것을 확인할 수 있다. a[3] = 4 print(b) [1, 2, 3, 4] 이는 반대로 a의 원소를 바꾸어도 b의 원소가 바뀐 것을 확인할 수 있는데 할당을 한다면 두 객체가 같은 주소를 쓰기 때문이다. print(id(a)) print(id(b)) 2435534720448 243553..
Contrastive Learning에 대해 공부하면서 두 벡터 간의 유사도에 대해서 Cosine Similarity가 많이 쓰여 이번 기회에 한번 알아보려고 한다. 코사인 유사도란? 벡터와 벡터 간의 유사도를 비교할 때 두 벡터간의 사잇각을 구해 얼마나 유사한지 수치로 나타낸 것. 예를 들어 90도일 경우 두 벡터간의 연관성은 없다고 보며, 방향이 비슷할 수록 유사하다고 본다. 이를 잘 나타내는 이미지는 다음과 같다. 그리고 값에 대해서는 다음과 같은 수식으로 구한다. pytorch에서는 구하는 함수를 제공해준다. import torch import torch.nn as nn vec1 = torch.rand(1, 128) vec2 = torch.rand(1, 128) cos = nn.CosineSimi..
이번에 ViT를 공부하면서 Inductive bias 가 CNN에 비해 부족하다는 말을 한다. 사실 이 부분은 이전에 공부했을 때부터 많이 들었던 말인데 이전에 공부했을 때도 잘 이해되지 않아 일단 넘겼던 기억이 있는데 이번에 다른 자료로 공부해보니 이해가 잘되서 빨리 기록으로 남기려고 한다. 일단 CNN의 대표적인 특징을 살펴보자 이렇듯 기본적으로 각각의 filter를 통해서 지역적인 정보를 습득하는데 이러한 방식은 이미지를 다룰 때 '지역적인 정보는 중요하다' 라는 가정이 깔려있는 것이다(그랬으니 이러한 알고리즘으로 CNN을 만들었겠지?). CNN의 특징을 살펴봤으니 그렇다면 이제 Inductive Bias가 무엇인지 한번 알아보자. 우리가 기본적으로 딥러닝 모델을 만든다고 하면은 기존 훈련데이터에만..
경량화 모델 중 하나인 ShuffleNet의 코드를 살펴보던 중 view, transpose를 사용하는 코드들을 발견하였는데 제대롤 이해해야 나중에 잘 활용할 수 있겠다 생각해 알아보았다. 내가 직접 짜지않고 보고 이해하는 것은 할 수 있었으나 실제로 어떤 기능으로 활용되는지는 잘 알 수 없었다. view 예시 우리가 네트워크를 짜는 도중에 input값을 맞출 때 자주 사용된다. x = torch.rand(2,3,4) print(x) tensor([[[0.1796, 0.9432, 0.8833, 0.7571], [0.9830, 0.5509, 0.6370, 0.2307], [0.9010, 0.7599, 0.1854, 0.5038]], [[0.8308, 0.9059, 0.2282, 0.1945], [0.002..