【계속】 기계 학습 초보자가 Pytorch 튜토리얼을 개조해 CIFAR10의 정밀도를 준다
-1 (6월 11일 추기) 코멘트 받은 것
@t-ae씨의 지적에 의해 극히 당연한 문제가 발각되었습니다.
고칠 것이라고도 생각했지만, 받은 조언은 후의 장에서 수정하는데 도움이 되도록(듯이) 해,
반면 교사로서 그대로 남겨두려고 생각합니다.
a: "2"에서 말했듯이 피라미드형으로 늘렸지만 활성화 함수가 붙어 있지 않다
→ 이것은 선형 변환이 되어 버리기 때문에, 층을 늘리는 메리트가 전혀 없어진다.
b : nn.Conv2d 인수에 0 패딩이 있음
→ 수동으로하는 것은 매우보기 어렵기 때문에 꼭 이것을 사용합시다.
0 소개
2%의 정확도가 올랐습니다!
89% 도달입니다!
라는 기쁨의 외침에서 시작. 계속됩니다.
지난번에는 다음 기사에서 CIFAR10에서 87%를 달성했습니다.
htps : // 코 m/다이키 cㄹ테/있어 ms/020f12778200460f73f4
(해보면 85%부터 앞이 좀처럼 오르지 않아서···)
ResNet은 사용하지 않고 Pytorch 튜토리얼의 개조로 90%의 달성이 목표입니다.
크게 편집한 개소는 2개소입니다.
1 dropout 레이어를 지웠다.
과학을 일으키는 것을 알 수 있습니다. 그래프 보면.
다만, 조사해 보면, Batchnorm와 dropout는 병용하면 추론시에 그다지 좋은 영향을 미치지 않는 것 같습니다.
<참고가 되는 논문>
htps : // 아 rぃ v. rg/아bs/1801.05134
그래서 일단 Dropout 레이어를 지우면
굉장히 학습 빠르다!
이것은 모두 실험이 어색하다 ...라고하는 것과 무엇보다
빠르지만 정확도의 최대 값은 변하지 않습니다.
그래서 지워 보았습니다.
2 Pyramid형으로 필터를 늘린다
오히려,
입력 레이어(필터:3)
conv(필터:64)
라는데 무리를 느끼고 있었다. 그렇게 갑자기 정보량을 늘려갈 수 있을까.
라고 하는 곳에서 「MaxPooling으로 필터를 2배로 한다」라고 하는 수법보다, 「조금씩 필터를 증가시켜 가는」 쪽이 좋다고 소문으로 들었습니다.
어떻게 하는 것이 좋은지 몰랐지만, 1*1 conv층에서 1층째까지 조금씩 필터를 증가시켜 나가도록 해 보았습니다.
입력층(3층)
1×1 conv(필터:6)
1×1 conv(필터:12)
1×1 conv(필터:24)
1×1 conv(필터:48)
3×3 conv(필터:64)
로 보았습니다.
결론
짧습니다만, dropout 없이도 성능이 변하지 않는다는데 놀라움을 기억해, 기사로 해 버렸습니다.
다음은 90% 달성했을 때 주려고 합니다.
출처
파라미터 수
Conv2d-1 [-1, 6, 32, 32] 24
Conv2d-2 [-1, 12, 32, 32] 84
Conv2d-3 [-1, 24, 32, 32] 312
BatchNorm2d-4 [-1, 24, 32, 32] 48
Conv2d-5 [-1, 48, 32, 32] 1,200
BatchNorm2d-6 [-1, 48, 32, 32] 96
ConstantPad2d-7 [-1, 48, 34, 34] 0
Conv2d-8 [-1, 64, 32, 32] 27,712
BatchNorm2d-9 [-1, 64, 32, 32] 128
ConstantPad2d-10 [-1, 64, 34, 34] 0
Conv2d-11 [-1, 64, 32, 32] 36,928
ConstantPad2d-12 [-1, 64, 34, 34] 0
Conv2d-13 [-1, 64, 32, 32] 36,928
MaxPool2d-14 [-1, 64, 16, 16] 0
ConstantPad2d-15 [-1, 64, 18, 18] 0
Conv2d-16 [-1, 128, 16, 16] 73,856
BatchNorm2d-17 [-1, 128, 16, 16] 256
ConstantPad2d-18 [-1, 128, 18, 18] 0
Conv2d-19 [-1, 128, 16, 16] 147,584
ConstantPad2d-20 [-1, 128, 18, 18] 0
Conv2d-21 [-1, 128, 16, 16] 147,584
MaxPool2d-22 [-1, 128, 8, 8] 0
ConstantPad2d-23 [-1, 128, 10, 10] 0
Conv2d-24 [-1, 256, 8, 8] 295,168
BatchNorm2d-25 [-1, 256, 8, 8] 512
ConstantPad2d-26 [-1, 256, 10, 10] 0
Conv2d-27 [-1, 256, 8, 8] 590,080
ConstantPad2d-28 [-1, 256, 10, 10] 0
Conv2d-29 [-1, 256, 8, 8] 590,080
MaxPool2d-30 [-1, 256, 4, 4] 0
BatchNorm2d-31 [-1, 256, 4, 4] 512
Conv2d-32 [-1, 100, 4, 4] 25,700
Conv2d-33 [-1, 10, 1, 1] 16,010
Net-34 [-1, 10] 0
=================================================================
Total params: 1,990,802
Trainable params: 1,990,802
Non-trainable params: 0
-----------------------------------------------------------------
Input size (MB): 0.01
Forward/backward pass size (MB): 7.86
Params size (MB): 7.59
Estimated Total Size (MB): 15.47
-----------------------------------------------------------------
Reference
이 문제에 관하여(【계속】 기계 학습 초보자가 Pytorch 튜토리얼을 개조해 CIFAR10의 정밀도를 준다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/daikiclimate/items/0c1677c893203025a107
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
2%의 정확도가 올랐습니다!
89% 도달입니다!
라는 기쁨의 외침에서 시작. 계속됩니다.
지난번에는 다음 기사에서 CIFAR10에서 87%를 달성했습니다.
htps : // 코 m/다이키 cㄹ테/있어 ms/020f12778200460f73f4
(해보면 85%부터 앞이 좀처럼 오르지 않아서···)
ResNet은 사용하지 않고 Pytorch 튜토리얼의 개조로 90%의 달성이 목표입니다.
크게 편집한 개소는 2개소입니다.
1 dropout 레이어를 지웠다.
과학을 일으키는 것을 알 수 있습니다. 그래프 보면.
다만, 조사해 보면, Batchnorm와 dropout는 병용하면 추론시에 그다지 좋은 영향을 미치지 않는 것 같습니다.
<참고가 되는 논문>
htps : // 아 rぃ v. rg/아bs/1801.05134
그래서 일단 Dropout 레이어를 지우면
굉장히 학습 빠르다!
이것은 모두 실험이 어색하다 ...라고하는 것과 무엇보다
빠르지만 정확도의 최대 값은 변하지 않습니다.
그래서 지워 보았습니다.
2 Pyramid형으로 필터를 늘린다
오히려,
입력 레이어(필터:3)
conv(필터:64)
라는데 무리를 느끼고 있었다. 그렇게 갑자기 정보량을 늘려갈 수 있을까.
라고 하는 곳에서 「MaxPooling으로 필터를 2배로 한다」라고 하는 수법보다, 「조금씩 필터를 증가시켜 가는」 쪽이 좋다고 소문으로 들었습니다.
어떻게 하는 것이 좋은지 몰랐지만, 1*1 conv층에서 1층째까지 조금씩 필터를 증가시켜 나가도록 해 보았습니다.
입력층(3층)
1×1 conv(필터:6)
1×1 conv(필터:12)
1×1 conv(필터:24)
1×1 conv(필터:48)
3×3 conv(필터:64)
로 보았습니다.
결론
짧습니다만, dropout 없이도 성능이 변하지 않는다는데 놀라움을 기억해, 기사로 해 버렸습니다.
다음은 90% 달성했을 때 주려고 합니다.
출처
파라미터 수
Conv2d-1 [-1, 6, 32, 32] 24
Conv2d-2 [-1, 12, 32, 32] 84
Conv2d-3 [-1, 24, 32, 32] 312
BatchNorm2d-4 [-1, 24, 32, 32] 48
Conv2d-5 [-1, 48, 32, 32] 1,200
BatchNorm2d-6 [-1, 48, 32, 32] 96
ConstantPad2d-7 [-1, 48, 34, 34] 0
Conv2d-8 [-1, 64, 32, 32] 27,712
BatchNorm2d-9 [-1, 64, 32, 32] 128
ConstantPad2d-10 [-1, 64, 34, 34] 0
Conv2d-11 [-1, 64, 32, 32] 36,928
ConstantPad2d-12 [-1, 64, 34, 34] 0
Conv2d-13 [-1, 64, 32, 32] 36,928
MaxPool2d-14 [-1, 64, 16, 16] 0
ConstantPad2d-15 [-1, 64, 18, 18] 0
Conv2d-16 [-1, 128, 16, 16] 73,856
BatchNorm2d-17 [-1, 128, 16, 16] 256
ConstantPad2d-18 [-1, 128, 18, 18] 0
Conv2d-19 [-1, 128, 16, 16] 147,584
ConstantPad2d-20 [-1, 128, 18, 18] 0
Conv2d-21 [-1, 128, 16, 16] 147,584
MaxPool2d-22 [-1, 128, 8, 8] 0
ConstantPad2d-23 [-1, 128, 10, 10] 0
Conv2d-24 [-1, 256, 8, 8] 295,168
BatchNorm2d-25 [-1, 256, 8, 8] 512
ConstantPad2d-26 [-1, 256, 10, 10] 0
Conv2d-27 [-1, 256, 8, 8] 590,080
ConstantPad2d-28 [-1, 256, 10, 10] 0
Conv2d-29 [-1, 256, 8, 8] 590,080
MaxPool2d-30 [-1, 256, 4, 4] 0
BatchNorm2d-31 [-1, 256, 4, 4] 512
Conv2d-32 [-1, 100, 4, 4] 25,700
Conv2d-33 [-1, 10, 1, 1] 16,010
Net-34 [-1, 10] 0
=================================================================
Total params: 1,990,802
Trainable params: 1,990,802
Non-trainable params: 0
-----------------------------------------------------------------
Input size (MB): 0.01
Forward/backward pass size (MB): 7.86
Params size (MB): 7.59
Estimated Total Size (MB): 15.47
-----------------------------------------------------------------
Reference
이 문제에 관하여(【계속】 기계 학습 초보자가 Pytorch 튜토리얼을 개조해 CIFAR10의 정밀도를 준다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/daikiclimate/items/0c1677c893203025a107
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
오히려,
입력 레이어(필터:3)
conv(필터:64)
라는데 무리를 느끼고 있었다. 그렇게 갑자기 정보량을 늘려갈 수 있을까.
라고 하는 곳에서 「MaxPooling으로 필터를 2배로 한다」라고 하는 수법보다, 「조금씩 필터를 증가시켜 가는」 쪽이 좋다고 소문으로 들었습니다.
어떻게 하는 것이 좋은지 몰랐지만, 1*1 conv층에서 1층째까지 조금씩 필터를 증가시켜 나가도록 해 보았습니다.
입력층(3층)
1×1 conv(필터:6)
1×1 conv(필터:12)
1×1 conv(필터:24)
1×1 conv(필터:48)
3×3 conv(필터:64)
로 보았습니다.
결론
짧습니다만, dropout 없이도 성능이 변하지 않는다는데 놀라움을 기억해, 기사로 해 버렸습니다.
다음은 90% 달성했을 때 주려고 합니다.
출처
파라미터 수
Conv2d-1 [-1, 6, 32, 32] 24
Conv2d-2 [-1, 12, 32, 32] 84
Conv2d-3 [-1, 24, 32, 32] 312
BatchNorm2d-4 [-1, 24, 32, 32] 48
Conv2d-5 [-1, 48, 32, 32] 1,200
BatchNorm2d-6 [-1, 48, 32, 32] 96
ConstantPad2d-7 [-1, 48, 34, 34] 0
Conv2d-8 [-1, 64, 32, 32] 27,712
BatchNorm2d-9 [-1, 64, 32, 32] 128
ConstantPad2d-10 [-1, 64, 34, 34] 0
Conv2d-11 [-1, 64, 32, 32] 36,928
ConstantPad2d-12 [-1, 64, 34, 34] 0
Conv2d-13 [-1, 64, 32, 32] 36,928
MaxPool2d-14 [-1, 64, 16, 16] 0
ConstantPad2d-15 [-1, 64, 18, 18] 0
Conv2d-16 [-1, 128, 16, 16] 73,856
BatchNorm2d-17 [-1, 128, 16, 16] 256
ConstantPad2d-18 [-1, 128, 18, 18] 0
Conv2d-19 [-1, 128, 16, 16] 147,584
ConstantPad2d-20 [-1, 128, 18, 18] 0
Conv2d-21 [-1, 128, 16, 16] 147,584
MaxPool2d-22 [-1, 128, 8, 8] 0
ConstantPad2d-23 [-1, 128, 10, 10] 0
Conv2d-24 [-1, 256, 8, 8] 295,168
BatchNorm2d-25 [-1, 256, 8, 8] 512
ConstantPad2d-26 [-1, 256, 10, 10] 0
Conv2d-27 [-1, 256, 8, 8] 590,080
ConstantPad2d-28 [-1, 256, 10, 10] 0
Conv2d-29 [-1, 256, 8, 8] 590,080
MaxPool2d-30 [-1, 256, 4, 4] 0
BatchNorm2d-31 [-1, 256, 4, 4] 512
Conv2d-32 [-1, 100, 4, 4] 25,700
Conv2d-33 [-1, 10, 1, 1] 16,010
Net-34 [-1, 10] 0
=================================================================
Total params: 1,990,802
Trainable params: 1,990,802
Non-trainable params: 0
-----------------------------------------------------------------
Input size (MB): 0.01
Forward/backward pass size (MB): 7.86
Params size (MB): 7.59
Estimated Total Size (MB): 15.47
-----------------------------------------------------------------
Reference
이 문제에 관하여(【계속】 기계 학습 초보자가 Pytorch 튜토리얼을 개조해 CIFAR10의 정밀도를 준다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/daikiclimate/items/0c1677c893203025a107
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
파라미터 수
Conv2d-1 [-1, 6, 32, 32] 24
Conv2d-2 [-1, 12, 32, 32] 84
Conv2d-3 [-1, 24, 32, 32] 312
BatchNorm2d-4 [-1, 24, 32, 32] 48
Conv2d-5 [-1, 48, 32, 32] 1,200
BatchNorm2d-6 [-1, 48, 32, 32] 96
ConstantPad2d-7 [-1, 48, 34, 34] 0
Conv2d-8 [-1, 64, 32, 32] 27,712
BatchNorm2d-9 [-1, 64, 32, 32] 128
ConstantPad2d-10 [-1, 64, 34, 34] 0
Conv2d-11 [-1, 64, 32, 32] 36,928
ConstantPad2d-12 [-1, 64, 34, 34] 0
Conv2d-13 [-1, 64, 32, 32] 36,928
MaxPool2d-14 [-1, 64, 16, 16] 0
ConstantPad2d-15 [-1, 64, 18, 18] 0
Conv2d-16 [-1, 128, 16, 16] 73,856
BatchNorm2d-17 [-1, 128, 16, 16] 256
ConstantPad2d-18 [-1, 128, 18, 18] 0
Conv2d-19 [-1, 128, 16, 16] 147,584
ConstantPad2d-20 [-1, 128, 18, 18] 0
Conv2d-21 [-1, 128, 16, 16] 147,584
MaxPool2d-22 [-1, 128, 8, 8] 0
ConstantPad2d-23 [-1, 128, 10, 10] 0
Conv2d-24 [-1, 256, 8, 8] 295,168
BatchNorm2d-25 [-1, 256, 8, 8] 512
ConstantPad2d-26 [-1, 256, 10, 10] 0
Conv2d-27 [-1, 256, 8, 8] 590,080
ConstantPad2d-28 [-1, 256, 10, 10] 0
Conv2d-29 [-1, 256, 8, 8] 590,080
MaxPool2d-30 [-1, 256, 4, 4] 0
BatchNorm2d-31 [-1, 256, 4, 4] 512
Conv2d-32 [-1, 100, 4, 4] 25,700
Conv2d-33 [-1, 10, 1, 1] 16,010
Net-34 [-1, 10] 0
=================================================================
Total params: 1,990,802
Trainable params: 1,990,802
Non-trainable params: 0
-----------------------------------------------------------------
Input size (MB): 0.01
Forward/backward pass size (MB): 7.86
Params size (MB): 7.59
Estimated Total Size (MB): 15.47
-----------------------------------------------------------------
Reference
이 문제에 관하여(【계속】 기계 학습 초보자가 Pytorch 튜토리얼을 개조해 CIFAR10의 정밀도를 준다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/daikiclimate/items/0c1677c893203025a107
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Conv2d-1 [-1, 6, 32, 32] 24
Conv2d-2 [-1, 12, 32, 32] 84
Conv2d-3 [-1, 24, 32, 32] 312
BatchNorm2d-4 [-1, 24, 32, 32] 48
Conv2d-5 [-1, 48, 32, 32] 1,200
BatchNorm2d-6 [-1, 48, 32, 32] 96
ConstantPad2d-7 [-1, 48, 34, 34] 0
Conv2d-8 [-1, 64, 32, 32] 27,712
BatchNorm2d-9 [-1, 64, 32, 32] 128
ConstantPad2d-10 [-1, 64, 34, 34] 0
Conv2d-11 [-1, 64, 32, 32] 36,928
ConstantPad2d-12 [-1, 64, 34, 34] 0
Conv2d-13 [-1, 64, 32, 32] 36,928
MaxPool2d-14 [-1, 64, 16, 16] 0
ConstantPad2d-15 [-1, 64, 18, 18] 0
Conv2d-16 [-1, 128, 16, 16] 73,856
BatchNorm2d-17 [-1, 128, 16, 16] 256
ConstantPad2d-18 [-1, 128, 18, 18] 0
Conv2d-19 [-1, 128, 16, 16] 147,584
ConstantPad2d-20 [-1, 128, 18, 18] 0
Conv2d-21 [-1, 128, 16, 16] 147,584
MaxPool2d-22 [-1, 128, 8, 8] 0
ConstantPad2d-23 [-1, 128, 10, 10] 0
Conv2d-24 [-1, 256, 8, 8] 295,168
BatchNorm2d-25 [-1, 256, 8, 8] 512
ConstantPad2d-26 [-1, 256, 10, 10] 0
Conv2d-27 [-1, 256, 8, 8] 590,080
ConstantPad2d-28 [-1, 256, 10, 10] 0
Conv2d-29 [-1, 256, 8, 8] 590,080
MaxPool2d-30 [-1, 256, 4, 4] 0
BatchNorm2d-31 [-1, 256, 4, 4] 512
Conv2d-32 [-1, 100, 4, 4] 25,700
Conv2d-33 [-1, 10, 1, 1] 16,010
Net-34 [-1, 10] 0
=================================================================
Total params: 1,990,802
Trainable params: 1,990,802
Non-trainable params: 0
-----------------------------------------------------------------
Input size (MB): 0.01
Forward/backward pass size (MB): 7.86
Params size (MB): 7.59
Estimated Total Size (MB): 15.47
-----------------------------------------------------------------
Reference
이 문제에 관하여(【계속】 기계 학습 초보자가 Pytorch 튜토리얼을 개조해 CIFAR10의 정밀도를 준다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/daikiclimate/items/0c1677c893203025a107텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)