
previous layer에서 받아 온 activation map은 28x28x192입니다. 왼쪽에서부터 순서대로 살펴보겠습니다. → 1x1 conv 64 → 28x28x64 → 1x1 conv 96 → 3x3 conv 128 → 28x28x128 → 1x1 conv 16 → 5x5 conv 32 → 28x28x32 → 3x3 max pooling, s=1, same 높이와 너비가 28x28로 유지해서 다른 결과와 엮을 수 있음 → 28x28x192 (input과 같음, 채널이 너무 많아 보임. 추가) → 1x1 conv,32 → 28x28x32 참고로 1x1 conv이 마지막에 오면 또 다른 1x1 conv가 필요하지는 않습니다. 마지막으로 사이즈가 동일한 이 블록들을 모아서 연결해줍니다. 이를 cha..

인셉션 모듈은 필터의 크기나 풀링을 결정하는 대신 그것들을 전부 다 적용해서 출력들을 다 엮어낸 뒤, 네트워크가 스스로 원하는 변수나 필터 크기의 조합을 학습합니다. 이렇게 설계하게 된 이전 모델들의 문제점으로는 큰 계산 비용 꼽았습니다. 5x5 filter로 예시를 들어 보면, 해당 필터 32개로 28x28x32의 출력이 나옵니다. input size: 28x28x192 filter: 5x5x192, 32개 output: 28x28x32 필요한 총 곱의 수는 각각의 출력 값을 계산하기 위한 곱의 수에다가 출력 값의 개수를 곱한 수가 됨. 이 모든 수를 곱하면 1억 2천만 정도가 됩니다. → 28x28x32 x 5x5x192 = 120m 1x1 conv는 1/10 정도로 연산을 줄입니다. Using 1x..

일반적인 컨볼루션 연산은 위와 같이 진행됩니다. FxFxK size를 갖는 L개의 필터는 L개의 feature map을 쌓습니다. 1x1 convolution 연산도 같습니다. K개의 feature map에 맞게 depth를 동일하게 유지시켜주고, L개의 필터는 L개의 feature maps을 만듭니다. 예를 들어, 하나의 뉴런이 32개의 숫자를 입력 받고, 32개의 숫자를 각각 같은 높이와 너비에 해당하는 채널 각각에 곱해주고 relu를 해주면 해당하는 값이 하나의 숫자로 나옵니다. FC layer를 36개의 위치에 각각 적용해서 32개의 숫자를 입력값으로 받고 필터의 수만큼 출력하는 것입니다. n[l+1]c 만약 높이와 너비를 줄이려면 pooling layer를 사용하면 됩니다. 그럼 채널..

배치 정규화는 왜 효과가 있는 것일까? 입력값 x1,x2,x3을 받아 레이어를 통과 시켜 추정치 ˆy을 얻습니다. 여기서 큰 데이터일 경우, 배치 사이즈를 정해 mini-batch만큼 학습을 시키게 되는데, 이렇게 들어오는 입력값에 따라 데이터의 분포가 바뀔 가능성이 있습니다. 이를 covariate shift라 합니다. 따라서 미니 배치 사이즈 단위로 정규화를 해주면, 입력값이 바뀌어서 발생하는 문제를 안정화 시키고, 분포가 바뀌더라도 평균과 분산이 0과 1로 맞춰지니 조금씩 바뀌게 됩니다. 즉, 앞쪽 레이어에서 계속 학습하며 값이 바뀌더라도 뒤쪽 레이어에서 겪는 부담이 줄어듭니다. 중요한 것은 결국 좋은 추정치를 얻기 위한 매개변수를 학습하여 얻는 것인데, 앞과 뒤에서 발생하는..

Error명: Runtimeerror: cuda error: device-side assert triggered cuda kernel errors might be asynchronously reported at some other api call,so the stacktrace below might be incorrect. for debugging consider passing cuda_launch_blocking=1. 이런 에러가 발생했습니다. GPU 메모리가 부족한 것인가? 다시 런타임을 종료하고 시작해보면 다시 model이 device에 올라가긴 했는데, 결국 같은 오류가 반복적으로 발생합니다. 해당 오류명으로 구글에 검색해보면 핵심은 내 코드에 무슨 문제가 있는지 디버깅을 해야하는데, 이 오류가 ..

파이썬에서 List와 Array type으로 서로 변경 필요할 때 1. List to Array import numpy as np lst = [1,2,3,4] lst_to_arr = np.array(lst) print(lst_to_arr) print(type(lst_to_arr)) 2. Array to List import numpy as np arr = np.random.radn(4) lst = arr.tolist() print(lst) print(type(lst)) 기본적인 것은 이제 외우자 ...
- Total
- Today
- Yesterday
- CNN
- Unsupervised learning
- NLP
- 도커 작업
- 리눅스 나노
- 프롬프트
- 파이썬 클래스 다형성
- 도커
- 퓨샷러닝
- prompt learning
- few-shot learning
- docker
- 파이썬 딕셔너리
- 파이썬 클래스 계층 구조
- 도커 컨테이너
- 구글드라이브연동
- python
- linux nano
- 파이썬
- Prompt
- 리눅스 nano
- 딥러닝
- 서버구글드라이브연동
- 리눅스 나노 사용
- stylegan
- clip
- cs231n
- 리눅스
- support set
- style transfer
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |