def download(file_name, url):
with open(file_name, 'wb') as file:
req = requests.get(url, allow_redirects=True)
file.write(req.content)
import requests
for i in range(20):
url = f"https://xml url/{i}.png"
file_name = download(url.split('/')[-1], url)
EffNet 에서 SE Net block 구조를 차용했는데, 각 layer에 대한 역할
위 이미지에서 se block = Global pooling, FC, ReLU, FC, sigmoid 일 때
아래 코드에서 =>
block1a_se_squeeze (GlobalAveragePooling2D) = Global pooling
block1a_se_reshape (Reshape) = FC
block1a_se_reduce (Conv2D) = ReLU
block1a_se_expand (Conv2D) = FC
block1a_se_excite (Multiply) = sigmoid
으로 봐도 되는지?
convolution 연산과정 직접 계산해보기 (밑바닥부터 시작하는 딥러닝 참고)
위 se block에서 Ftr() 식이 단순 convolution이라고 설명되므로, convolution에 대한 이해 필요
모델 변형 아이디어
relu가 특정 범위로 값을 제한하는 역할을 할 때, 각 범위에 따라 모델 성능에 영향을 준다면, 연구실 과제 아이디어로 활용할 수 있음
block1b_se_squeeze (GlobalAver (None, 32) 0 ['block1b_activation[0][0]']
agePooling2D)
block1b_se_reshape (Reshape) (None, 1, 1, 32) 0 ['block1b_se_squeeze[0][0]']
block1b_se_reduce (Conv2D) (None, 1, 1, 8) 264 ['block1b_se_reshape[0][0]']
block1b_se_expand (Conv2D) (None, 1, 1, 32) 288 ['block1b_se_reduce[0][0]']
block1b_se_excite (Multiply) (None, 300, 300, 32 0 ['block1b_activation[0][0]',
) 'block1b_se_expand[0][0]']
신경망, convolution 등 딥러닝에 기초 개념에 대한 이해가 아직 많이 부족하다는 것을 느꼈고, 논문을 읽으며 모르는 것이 나올 때마다 잘 정리하고 기록해둬야겠다고 느꼈다.
밑바닥부터 시작하는 딥러닝(Deep Learning from scratch
block1a_se_reduce가 relu layer(se)가 맞다면 처음 block1a(b,c,d)에서는 1/4, block2a(b,c,d)에서는 1/24로 축소되는데,
1. 논문에선 파라미터값을 어떤 값으로 줬는지,
2. relu로 설정한 이유가 있는지,
3. 값을 변형할 수 있는지 보고, 연구실 classification과제에 적용해봐야겠다.