본문 바로가기

파이썬 & 머신러닝15

FNN, CNN, RNN 장단점 FNN (Fully connected Neural Network) Pros : 단순하고 매우 Powerful함. 많은 관계를 모델링 할 수 있음 Cons : 파라미터의 개수가 매우 많이 필요하여 메모리, 컴퓨팅 파워 필요, Curse of dimension(차원의 저주)로 오버 피팅(over fitting)이 일어나기 쉬움 CNN (Convolutional Neural Network) Pros : 파라미터의 개수를 굉장히 줄었다. local information을 효율적으로 볼 수 있어 컴퓨터 비전 분야에서 가장 많이 사용됨. Cons : Local information은 좋지만 멀리 있는 픽셀 들 간의 관계를 보려면 layer를 많이 쌓아야 한다. 다시 말해 Field of View 늘리려면 Deep .. 2020. 5. 19.
러닝레이트 줄이기 vs 배치사이즈 키우기 "[1] Don't decay the learning rate, increase the batch size" 리뷰, 설명입니다. Learning rate decay 라는 것을 들어보셨나요? 머신 러닝에서 굉장히 중요하고 민감한 learning rate라는 하이퍼 파라미터를, 학습이 진행됨에 따라 점차 줄이는 것입니다. 대부분의 머신 러닝 테크닉이 그렇듯이 learning rate decay를 해보니 generalization이 잘 되더라, 로 시작해서 이러이러해서 잘 되는 것 같다라고 설명합니다. "[2] On large-batch training for deep learning: Generalization gap and sharp minima"라는 논문에서 해답을 찾을 수 있습니다. 1. General.. 2020. 5. 16.
[torchsummary] Pytorch에서 keras처럼 모델 출력하기 [수정 2022/06/12] torchsummary 패키지는 torchinfo 라는 패키지로 업그레이드되며 이름이 바뀌었습니다. pytorch와 함께 사용할 수 있는 torchsummary라는 파이썬 패키지입니다. pip install torchsummary git clone https://github.com/sksq96/pytorch-summary 위와 같이 pip를 통해서 설치할 수 있고, 아래와 같이 직접 깃허브에 있는 소스코드를 다운받아 사용할 수 있습니다. Pytorch는 keras에 비해 모델을 출력했을 때 깔끔하게 볼 수 가 없습니다. keras의 경우는 파라미터의 개수 레이어의 종류, 넘버 등을 표로 정리해서 알려주는 것과 비교해보면 말이죠. 위 torchsummary 라는 패키지가 pyt.. 2020. 5. 6.
[Pytorch] 모델 '적절하게' 저장하기 (+ 여러 모델) 파이토치에는 모델을 저장하는 방법이 여러 가지 있습니다. 단순히 1. torch.save(path, model) 이렇게 하면 모델이 통채로 저장이 되기는 합니다. 2. torch.save(path, model.state_dict()) 이렇게 하면 모델 안에 있는 파라미터들을 저장하는 것입니다. 첫번째 방식의 경우 1. model = torch.load(path) 이렇게 하면 load가 가능하고 두 번째 방식의 경우에는 모델을 선언도 해줘야 하고 모델의 구조가 다르면 안됩니다. model = MODEL().cuda() model.load_state_dict(torch.load(path)) 이렇게 모델을 선언하고, 그 모델에 파라미터들을 대입하는 과정이 필요합니다. 아무리 생각해도 첫 번째 방식이 편한 것 .. 2020. 4. 15.
[Pytorch] Dataloader 다양하게 사용하기 (custom loader) 파이토치의 데이터로더는 아래의 형태와 같이 사용합니다. path = 'C:/test' dataset = torchvision.dataset.ImageFolder(root=path, transform=transforms.Compose([ transforms.Grayscale(), transforms.ToTensor(), ])) dataloader = torch.utils.data.DataLoader(dataset, batch_size=batch_size, shuffle=True) 이미지든 어떠한 형태의 데이터를 모두 다룰 수 있지만, 위에 사용한 ImageFolder는 이미지를 다루는 애고 다른 형식의 데이터는 조금 후에 말하겠습니다. 데이터로더는 만들어진 이유가 Classification 태스크를 다루기.. 2020. 4. 15.