일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 파라미터 수
- mPLUG-2
- MLLM
- 가중치 없이 모델 로드
- 주식
- 3C4P
- pretrained model layer
- Multimodal Large Language Model
- 논문리뷰
- layer 추출
- DeepNet
- 가상환경
- KOSMOS-2
- def validation
- 특정 layer 동결
- 모델 동결
- 특정 layer 추출
- def train
- mqtt
- 논문 작성
- cnn
- 논문 작성 요령
- 주식 용어정리
- Video Understanding
- 강화학습
- Instruction dataset
- 파라미터 수 확인
- 모델 구조 변경
- Foundation Transformers
- 모델 freeze
- Today
- Total
목록인공지능/딥러닝 및 파이토치 기타 정리 (12)
시작은 미약하였으나 , 그 끝은 창대하리라
► Pretrained되어 있는 모델을 load를 하면 Freeze(bias=False)되어 있는 것도 있고 Trainable한 파라미터(bias=True) 인 것도 있다. 어떤 문제를 해결할 것이냐에 따라 Freeze가 유용할수도 있고 아닐 수도 있다. 이번 글에서는 Freeze를 하는 방법에 대해 소개와 동시에 필요한 layer만 Trainable하게 설정하는 방법을 알아보겠다. → 특정 layer만을 Trainable 하게하는 방법은 다음과 같다. 1. 모든 layer에 대해 False로 설정 (=Freeze). 2. 그 후 원하는 layer들에 대해서만 True로 설정. 1. 모델로드→ DETR모델 활용중from transformers import DetrForObj..
목차모델 로드특정 Layer 만을 추출backbone 모델추출구체적인 특정 layer만 추출 1. 모델 로드from transformers import DetrForObjectDetectionmodel_DETR= DetrForObjectDetection.from_pretrained("facebook/detr-resnet-50", revision="no_timm")# Model 의 key 값 확인for i in model_DETR.state_dict().keys(): print(i) → model 의 key 값 출력 결과model.backbone.conv_encoder.model.embedder.embedder.convolution.weightmodel.backbone.conv_encoder.m..
1. 가중치 없이 모델 로드 ► 우리는 허깅페이스에서 weight, bias가 최적화 되어있는 pretrained된 모델을 사용한다. 하지만 모델의 weight, bias를 제외하고 아키텍쳐만 필요할 때가 있다. Hugging Face에서는 친절하게도 이러한 기능을 제공을 해준다. - Huggingface에 원하는 모델을 검색후 config를 사용하면 된다. (아래예시는 DETR예시) (상단 코드 weight load 안함, 하단 코드 weight load 함) # load without weight and bias # Initializing a DETR facebook/detr-resnet-50 style configuration from transformers import DetrForObjectDe..
궁금증: mPLUG-2 논문을 보니 concat이라는 부분이 있었는데 깃허브 코드를 확인해보았을때는 concat의 부분이 보이지 않음. 찾아보디 Conv3d에서 인자값으로 group이 존재. 1. group 기능 : Grouped Convolution 은 입력 값의 채널들을 여러 개의 그룹으로 나누어 독립적으로 Convolution 연산을 수행하는 방식. ex) in_channels =4, group=2 이면 → 2개씩 묶어서 진행후 마지막 출력을 concat함. (그래야 쪼개진 입력차원에 대한 정보(차원크기)를 복원할 수 있으니, 예를들어 ) 기타 (딥러닝에 사용되는 다양한 Convolution 기법) : https://eehoeskrap.tistory.com/431#8.-grouped-convolut..
용도: visual studio 로 c언어를 작성해본적이 있다면 빨간점을 클릭하면 그 부분에 대해서 자세히 들어가며 디버깅을 할 수 있다. 사용 : Visual studio code 의 ipynb 확장자로 코드를 작성후 디버깅하고 싶은 부분에 import pdb;pdb.set_trace() 를 추가하면 새로운 창이 나온다. 그 줄을 기준으로 이전의 변수, 값 들은 다 할당을 받은 상태임. visual studio 의 디버깅 기능과 동일하다 보면 됨. 사용법 : 창이 나오면 n (next), q(quit), s(step) 등의 명령어를 통해 진행할 수 있다. n를 사용하면 다음줄로 넘어가고, s로 하면 그 단계에서 있는 내부 함수등으로 들어가고 q를 하면 종료 된다. 이것외에도 명령어가 있는데 공식 문서를..
. Numpy → Tensor output = torch.Tensor(input) # 새로운 메모리에 할당. output = torch.from_numpy(input) # 기존 메모리에 할당. (where input is Numpy type, output is Tensor type) 2. Tensor → Numpy output= np.array(input) (where input is Tensor type, output is Numpy type) (암기도 하려고 노력해야 외워진다.)
상황: 딥러닝을 하다보면 1차원을 추가 및 제거를 위한 단계가 필요하게 된다. 1. squeeze : 1차원 제거 역할. import torch x= torch.ones(5,4,1,4,1) x1 = x.squeeze() # 모든 1차원 제거 print(x1.size()) # torch.Size([5, 4, 4]) x2= x.squeeze(dim = 2) print(x2.size()) # torch.Size([5, 4, 4, 1]) x3= x.squeeze(dim = -1) # dim=4 와 같음 print(x3.size()) # torch.Size([5, 4, 1, 4]) x4= x.squeeze(dim = 1) # 잘못된 차원 삭제 불가능. print(x4.size()) # torch.Size([5, ..
문제 발생 : kaggle에서 과제를 진행하는데 자꾸 에러가 뜨는것이다. 정확히 기억은 안나는데 type이 안맞다고....근데 print를 찍어보면 심지어 문제없이 잘 나오는것이다.....(조교한테 질문함) 문제 상황 : 딥러닝 학습에서 loss 값은 y_predict 와 y_ground truth 값으로 계산을 수행한다. 하지만 y_ground truth 값 즉, index( label)의 값이 항상 0부터 시작하지는 않는다. 문제 해결 : index(label) 이 항상 0 부터 시작해야함. 즉, 1부터 시작하는 label 이라면 -1을 해서 0 부터 시작 지점을 만들어야 함. (아래 사진을 보면 class indices in the range [0 ,C) 라고 명시되어 있다.)