본문 바로가기
Programming/Deep learning

ConvNet활용의 예 전에 Conv 레이어 만들기

by OKOK 2018. 1. 18.
c

몇 개의 값을 모을 수가 있을까요. 이것이 중요한 것입니다. 이 값들을 알아야 이 웨이트의 값을 알 수 있습니다. 설계를 할 수 있게 됩니다. 7곱하기 7이고 필터 3곱하기 3이라고 합니다. 이 점에서 한 값입니다. 5곱하기 5가 나옵니다. 오케이요. 똑같은 방법으로 밑으로 5번입니다. 아래로 출력이 5바이5 가 됩니다. 한칸씩 옆으로 움직이는데, 이 값을 스트라이드라고 합니다. 한칸씩 움직인다는 말입니다.  스타라이드가 2이면 2칸씩 움직입니다. 3바이3의 이미지로 아웃풋이 생겨나게 됩니다. 오케이요. 전반적으로 보게 되면 엔곱하기 엔이 입력이 있다고 했을때 에프라고 햇을때 총 몇개의 값이 몇칸 움직일번이가를 나눌까 하고 1을 하면 됩니다. 이미지가 7이고 필터가 3일떄 오케이요. 오케이요. 산수를 하면 이런식으로 됩니다. 이미지가 작아질수록 정보를 읽어버립니다 패딩이라는 것을 사용합니다. 0을 가상적으로 만들어줍니다. 이렇게 하는데 2가지 이유가 있습니다. 급격하게 작아지는 것을 방지하는 것이다. 모서리라는 것을 알려주는 것입니다. 출력값이 얼마나 될까요. 전체이미지가 9바이 9에서 7바이 7에서 원래 이미지를 7바이 7로 넣어주었는데, 같은 사이즈의 이미지가 나오는 것입니다. 오케이요. 이것이 굉장히 패딩을을 해서 원래 입력의 이미지와 출력의 이미지가 같아지게 만들어지게 되어 있습니다. 똑같은 값을 사용하기 떄문에 이런 형태의 이미지가 나타나게 됩니다. 이것을 사이지를 계산하게 됩니다. 다른 필터를 만듭니다. 필터2를 이용해서 만들어 냅니다. 필터 1에서 만든이미지이고 오케이요. 콘볼루션 레이어이 계측입니다. 이런형태로 32곱32곱3의 이미지가 주어졌을떄 콘볼루션과 렐루 6개의 필터를 사용하게 되면 깊이가 6이 됩니다. 오케이요. 여기서 한번더 컨볼루션 여러번을 적용할 수 있습니다. 액티베이션 맵이 있습니다. 10개가 있습니다. 깊이가 6개 있습니다. 앞의 깊이와 같아야 합니다. 10개의 깊이로 만들어져야 합니다. 사이즈는 얼마가 다뢰까요? 사이즈와 관계가 있겠습니다. 우엣일 베리어블 갯수가 얼마나 도니느지 궁금합니다. 웨잇의 갯수는 쉽게 구할 수 있습니다. 이 값들은 어떻게 정해지나요 다른 뉴럴 넷과 마찬가지로 처음에는 초기화를 합니다. 우엣이 사용되는 베리어블 갯수가 몇개인가. 오케이요. 이것이 6개를 사용했으니, 마찬가지 입니다. 어떻게 정해지나요. 이 값들은 다른 뉴럴넷과 마찬가지로 랜덤하게 초기화를 합니다. 그리고 다시 학습하게 되는 것입니다 나머지 전체에 대해서 이야기를 하겠습니다. 


 풀림을 샘플링이라고 보면 됩니다. 컨볼루션 레이어를 만들면 됩니다. 정해지면 됩니다. 여기서 한 레이어만 뽑아냅니다. 이런 형태의 레이어가 있습니다. 이것을 리사이즈 합니다. 리사이즈 하면 비슷한 방법입니다. 여기서 사이즈를 작게 만드는 것을 말합니다. 풀링이라고 하는데, 복잡한 것이 별거 없습니다. 이것을 다시 쌓습니다. 한 레이어씩 뽑아서 샘플링을 하고 이것을 모아서 다음 단계로 넘기는 것입니다. 예를 들어보도록 하겠습니다. 4바이4의 이미지가 있습니다. 필터라는 개념을 사용합니다. 2바이2입니다. 맥스풀링의 개념에 대해서 알아보도록 하겠습니다. 몇개의 출력이 생길까요. 아웃풋이 주어질 텐데 여기의 한 필터가 값이 이렇게 있는데, 여러가지 방법을 생각할 수 있습니다. 평균을 내자, 큰 값을 고르자, 3을 주고 여기서 가장 큰 값은 4입니다. 이것을 샘플링이라고 부르는 이유는 전체값중에서 샘플링이라고 말합니다. 여기서 말하는게 풀링입니다. 여기서도 이미지 사이즈가 오케이요. 그러면 이제 우리가 콘벌루션에 대해서 렐루라는 것은 그냥 간단하게 콘볼루션에 대한 벡터를 렐루라는 함수에 입력하게 되면 쉽게 도니느 것입니다. 풀링, 샘플링 하는 방법은 이런 것을 원하는대로 쌓으시면 됩니다. 풀링을 하게 됩니다. 이 값들 전체가 있습니다. 예를 들어 전체가 3곱학 ㅣ3곱하기 깊이가 10이었습니다. 이 전체 값을 엑스라고 보면 좋습니다. 입력을 원하는 만큼 깊이의 정하면 됩니다. 일반적인 뉴럴네트우커ㅡ 마지막에 이것이 소프트 맥스 클래스파이어가 되겠습니다. 하나의 레이블을 고르게 됩니다. 이것이 어떻게 동작하는지 좋은 비주얼라이션과 어떻게 볼 수 있습니다. 


Conv 네트워크를 구성한것은 라쿤 교수님입니다. 이분의 설계도를 보면 이렇습니다. 알렉스 넷이 있습니다. 경진대회가 있습니다. 입력사이즈가 큽니다. 칼라이미지를 입력을 받습니다. 96개의 필터를 사용합니다. 11곱 11 3의 필터를 사용합니다. 스트라이드는 4입니다. 스트라이드를 2를 두었습니다. 풀링이었기 떄문에. 오케이요 콘벌브, 풀링 이런 형태로 깊습니다. 복잡하지만 한개씩 보면 어떻게 하면 압니다. 놈이라는 것이 있습니다. 노말라이제이션이 있습니다. 값들을 놈이 있습니다. 최근들어 사용하지 않습니다. 컨브 맥스풀 컨브컨브컨브 맥스풀 리허게 하고 최종적으로 이렇게 나옵값을 마지막 하나에 풀리커넥트 4096의 출력을 만들어 냅니다. 오케이요. 풀리커넥티를 사용합니다. 마지막 레이러를 입력받아서 1000개의 레이블을 만들어 냅니다. 오케이요. 3개의 풀리커넥티드 레이어를 사용했다 이것입니다. 알렉스 넷도 이런 의미이구나 충분히 이해할 수 있습니다. 


오케이. 이런 것들을 7개를 만든다음에 앙상블, 오케이. 이것들을 합쳤습니다. 오케이요. 15퍼센트 3프로정도의 에러를 줄이게 되었습니다. 사람들을 굉장히 놀라게 하였습니다 구글레넷이라는 것이 있습니다. 다르게 생긴것들이 있습니다. 흩어졌다 모이고 흩어졌다 모이고, 인셉셥 모듈이 있씁니다. 입력이 들어가고 이것이 1곱하기 1 컨볼루션 3가지가 있고, 풀링을 하고, 오케이요. 코콘불루션을 하고, 콘불루션을 하고 프리레이어 이것을 합칩니다. 이것을 과정을 거칩니다. 굉장히 재미있는 구조로 마치 레고를 쌓듯이 있습니다 2014년에 우승을 하게 됩니다. 굉장히 창의적이지만 만들어낼수 있습니다. 3.6로 사람의 5프로대를 능가한다고 볼 수 있는 레즈넷에서 이것을 홍공 중대 마이크로소프트 에이치알지에서 일을 하고 계신분이 계십니다. 알렉스는 8개의 레이어가 있습니다. 많이 사용했습니다 브지지는 여러개 입니다.  학습하기가 어려울 것 같은데라고 생각합니다. 렐루를 생각하고 학습하시면 어렵습니다. 어떻게 이것을 극복했을까요. 패시트 포워드라는 개념을 사용했씁니다. 이것이 여기에 있는 값이 점프해서 옵니다. 하나로 합쳐진다고 볼 수 있습니다. 레이어는 크치만, 그렇게 깊지 않은 느낌으로 학습할 수 있습니다. 잘 되는 이유 중에 하나 입니다. 왜 이렇게 잘되는지는 잘 모르고 있습니다. 엉뚱하지만 합치는 이유는 있습니다. 2015년도 1등을 먹었습니다. 2016년는 아직 발표되지 않았습니다. 2016년도에 얼마까지 에로를 줄일 수 있을까. 어떤 형태의 네트워크로 줄일까 하는 관전 포인트가 되겠습니다. 이미지 2가지가 상당히 비슷한 아이디어를 사용했다 이것입니다. 이미지 뿐만 아니라 다른 것도 있습니다. 김윤 박사님. 201년도에 창의적으로 만든 것이 텍스트를 컨볼루션으로 처리해보았습니다. 텍스트 클래스 분류를 하였습니다. 윤김 박사님을 따라서 컨볼루션을 따라서 마지막으로 보너스 입니다. 알파고 컨볼루션 뉴럴 네트워크를 사용하였습니다. 네이쳐에 나오는 논문입니다. 시엔엔에 대해 이해하였으니 한번 보도록 하겠습니다. 오케이 이렇게 알 수 있습니다. 여기에 케이스 스터디에서 구하는 것처럼 네트워크를 자기 마음대로 연결 시킨것입니다. 여러번 해보다 보니, 이렇게 저렇게 해보니 좋더라 직관적인 방법이 생겨서 잘되었습니다. 역시 네트워크를 원하는대로 구성할 수가 있고, 그것을 통해서 원하는 것을 오케이요.


가장 많이 사용될 수 있습니다. 많은 분들고 사용하고 있습니다. 이미지와 텍스트 분류 좋은 성능을 만들어서 사용하고 있습니다. 이미지를 벡터를 컨볼루션을 벡터를 방법을 통해서 필털르 사용하는 방법입니다. 여러가지 컨볼루션 레이어로 양이 많아지니 서브샘플링을 합니다. 아 이값들을 feature extraction 값들을 많이 사용했던 일반적인 포워드 뉴럴넷이라 풀리 커넥티드라는 것을 통해서 분류나 회귀를 할 수 있습니다. 시엔엔이 이미지에 큰 기여를 하고 잘 동작을 합니다. 한 예로, 아산 병원에서 컨테스트 텐서플로우 회원 시엔엔을 이용해서 시티이미지를 결과를 보는 것을 참가했습니다. 수상했습니다.  


간단한 이미지를 가지고 사용합니다. 2바이이 2바이를 가집니다. 오케이요. 간단한 콘볼루션 레이어를 가집니다. 한칸씩 움직이면 한값을 뽑아내는 과정을 거칩니다. 컨볼루션 과정이 있습니다. 오케이요 색은 하나의 색인 컨볼루션 데이터가 나옵니다. 계산을 할 수 있습니다. 이렇게 바로 이 값이 나오게 됩니다. 계산할 필요가 없습니다. 전번적으로 만 이해하면 됩니다. 이런형태의 이미지를 생각할 수 있습니다. 이 값은 엔개가 됩니다. 하나의 이미지만 가지고 해보겠다는 이야기 입니다. 이렇게 어레이를 만들수 있고, 라이브러리를 사용해서 시각화할 수 있습니다. 아 필터를 정의할떄 웨잇을 정의할 때 필터의 크기가 2바이 2이고, 칼라가 되겠습니다. 이 칼라이미지와 같은 값을 가져야합니다. 필터를 몇개 사용할 것인가. 이런형태의 어레이를 만들것입니다. 서로 마주보는 숫자끼리 곱해서, 값을 더해줘서 한 값을 뽑아주는 과정을 거칩니다. 오케이요.  이 값이 바로 2가 되겠습니다. 스트라이드가 1바이 1이라고 하였습니다. 필터를 이렇게 해서 이 값을 다 더해서 오른쪽에 씁니다. 오케이요. 패딩 사이즈가 있습니다. 원래 이미지와 같게 해주겠다 이 뜻입니다. 오케이요. 출력하는 것도 패딩을 새임이라고 하면 됩니다. 여기에 맞게 자동으로 필터 사이즈가 2바이2  인데 3바이3을 어떻게 하는지 제로 패딩이 어떻게 되는지 알아보면 됩니다. 실제로 해보면 이렇게  필터를 갖다 대어서 첫번째 값을 뽑아내겠습니다. 두번째 이렇게 해서 이값을 뽑아 내고, 마지막 이렇게 하기 위해서 제로 패딩을 한 것입니다. 마지막의 값을 3 0 0 0 9 해서 이렇게 되겠습니다. 밑으로 한칸씩 내려가고 지로패딩에 역할이고 지로 패딩을 함으로써 입력의 사이즈와 출력 사이즈가 같게 된다. 세임이라는 것입니다. 스트라이드는 매우 간단합니다. 똑같고 패딩만 새임이라고 줍니다. 출력하는 값이 출력값이 3바이3의 이미지가 출력되게 됩니다. 크게 신경쓰지 않아도 됩니다. 결론적으로 이런값 들이 나왔다. 컨볼루션을 이렇게 계산한다 이렇게 이해하면 됩니다. 여러개의 필터를 쓸 수 있습니다. 여러개를 쓰기 위해서는 필터의 개수 늘여주면 되는데, 이렇게 하면 결국 나오는 컨볼루션의 값들도 많아지게 됩니다. 3장의 이미자가 나온다 사용하는 방법은 굉장히 간단합니다. 바로 3장의 이밎지가 나오게 도비니다. 컨볼루션, 필터 몇장쓰느냐에 따라서 하나의 이미지에서 다른 형태의 피쳐이미지가 나오게 됩니다. 풀링이라는 작업이 있습니다. 


풀링 이미지가 있을 것입니다. 스트라이드 케이사이즈를 정해주고 오케이 패딩 이 나옵니다. 맥스풀링을 많이 사용합니다. 시엔엔과 잘 동작합니다. 시엔엔과 오케이요. 커널 사이즈 그리고 스트라이드 패딩 얼마나 할것인가 사용하면 됩니다. 입력과 출력 사이즈가 같게 해주세요. 이렇게 나옵니다. 지로 패딩을 하겠죠. 첫번째 첫번째 최대값을 뽑아내게 됩니다. 4가 됩니다. 4가 됩니다. 3이 됩니다. 이렇게 이렇게 해서 최대값 2가 되게됩니다. 15분봉이 있습니다. 여기저기 최대값을 뽑아서 쓸때는 이렇게 됩니다. 간단하게 맥스 풀링이 어떻게 동작하는지 살펴보게 됩니다. 실전 이미지에 어떻게 동작되는지 살펴보게 됩니다.  


출력하기 위해서 이해하면 됩니다. 출력 하기 위해서 오케이요. 그렇게 해보니 5장의 5개의 필터를 사용했기 때문입니다. 조금 다른 형태입니다. 오케이요. 이미지 하나에서 5개의 조금씩 다른 이미지를 컨볼루션 이미졸 뽑아냈다 이렇게 합니다. 맥스풀링을 할 것입니다. 이전에 나왔던 이미지에다가 앞에서 나온 이미지였고요, 5개의 이미지에서 커널 사이즈 2바이 2 스트라이드가 2가 되니, 1바이 14이미지에서 출려되는 것은 7바이 7이 되겠습니다. 그런 다음에 그런 실행을 시키고요. 그런 다음에 출력을 시켜보면 7바이 7의 이밎가 나옵니다. 이미지를 보면 알게씾만 서브 사이드가 되어 있습니다. 맥스풀링을 이라는 것을 이미지기 떄문에. 오케이요. 이렇게 됩니다. 다음 시간에 기본적으로 사용한 함수를 사용하여 엠니스트의 99 정확도에 도전해보도록 하겠습니다.  


사용하는 모든 코드 여기서 볼 수 있습니다. 시엔엔에 대해서 기본적으로 이야기해보겠습니다. 이미즐 받아서 콘불루션 서브샘플링 콘불로션 서브램플링 커넥티등 연결합니다. 간단한 시엔엔 할 수 있습니다. 생각해 볼 수 있겠습니다. 실제로 구현해볼텐데요. 가장 먼저 해야할 것은 인풋의 이미지를 원하는대로 할 수 있습니다. 텐서플로우 레이어를 읽어올 수 있습니다.  이미지 입력을 노허기 위해서 28 바이 28 이미지이고 하나의 색을 가집니다. 엔개 입니다. 우리가 중요하게 생각하는 것은 28 곱 28 곱 이미지 입니다. 오케이요 엑스 이미지 입니다. 입력이 됩니다. 이것의 엑스 이미지를 첫번째 콘볼브 이미지는 다음고 가타습니다. 앤가가 들어옵니다. 필터의 크기는 다음과 같습니다 3바이 3 색깔은 하나 그리고 동일한 값이 됩니다. 필터는 하나가 됩니다. 오케이요. 32개의 펄터가 있습니다. 여기에서 이 값을 한 번 통과시키도록 하겠습니다. 값 그리고 스트라이드를 얼마나 할 것입니다. 1로 하겠습니다. 패딩 세임으로 합니다. 


 패딩에 새임이라는 것은 1과 1이 기준이라는 것이 웨이트에 크게 상관없이 우리으 출력값은 입력의 이미지 사이즈오 가타습이다. 이런 형태의 28 곱 28이 될 것입니다. 32개를 사용했기 때문에 콘볼루션 값들이 생겨날 것 입니다. 오케이요. 엘원을 프린트 해보면 됩니다. 다음으로 렐루를 통과시킬 것입니다. 맥스 풀링을 할 것 입니다. 커널 사이즈의 2바이 2로 정해주었습니다. 패딩은 2곱하기 2로 정해졌습니다. 스트라이드 입니다. 패딩은 새임입니다. 스트라이드가 28곱 28의 그림이 나오지만 스트라이드가 2이기 때문에 14바이 14가 될 것입니다. 풀링을 거치면 이런 형태의 14바이 14 채널의 개수 32개가 나올 서입니다. 오케이요. 프린트를 하면 이런 형태로 나옵니다. 이런 형태로 나옵니다. 첫번째를 나옵것입니다. 사이즈를 기억해야 할 필요가 있습니다. 14바이 14곱하기 32채널 입니다. 2번쨰 콘볼루션으로 들어가게 됩니다. 앞에와 똑같이 필터를 정할때, 필터의 3바이 3바이 54개의 필터를 쓰겠습니다. 그런 다음에 렐루를 통과 시킵니다. 풀링을 2바이2로 주고 2바이이 입니다. 패딩 사이즈는 같게 됩니다. 패딩은 같게 됩니다. 2바이 2이기 때문에 7바이 7이 되겠습니다. 오케이요. 7곱하기 7에 64개 채널이 될 것 깉입니다. 2번쨰 풀링까지 마쳐씁니다. 풀리 커넥티드 레이어로 넣을 것 입니다. 이 값을 입체적으로 되어 있습니다. 그리고 이것을 펴쳐야 합니다. 이것을 하는 것이 리쉐입입니다. 이 값을 오케이요. 펼친다음에 풀리커넥트로 넣겠습니다. 이 값이 얼마인지 모르기 때문에 프린트를 넣습니다. 2디를 넣은 것 그리고 3디 이럴게 렐루를 통과 시키고 맥스풀을 합니다. 오케이 그 다음에 리 쉐임을 하면 됩니다. 그런 다음에 마지막에 펼치게 됩니다. 오케이요. 이 값이 3136 개 입니다. 특징이 됩니다. 역시 앤개의 데이터가 됩니다. 이 값을 풀리 커넥티드로 될 텐데 이미지가 있을텐데 784 이것을 컨볼루션 레이어 시원 시투를 거치니 어떻게 되었는지 살펴보도록 합니다. 이것을 이제 풀리커넥티드로 넣을 것입니다. 이렇게 연결되는 구조입니다. 바이어스 정할때 이렇게 정할 수 있습니다. 이렇게 되었습니다. 출력될 때 이렇게 도비니다. 하이파시스 곱하게 도비니다. 이것이 입력 이것이 입력 이렇게 보면 됩니다. 피쳐의 갯수를 왕창. 바이어스도 마찬가지이고요, 웨이트를 정해줄 수 있습니다. 그리고 가설을 이렇게 정하면 됩니다. 가설, 코스트, 옵티마이즈를 넣으면 됩니다. 오케이요. 이전에 했던 것은 똑같은 것으로 사용하면 됩니다. 컨볼루션 왕창 늘렸습니다. 그런다음에 학습하고 평가하면 됩니다. 세션을 열고요 에폭의 개념으로 루프를 돌고 각각에 대해서 거기에 맞게 ㅂ치사이즈에 맞게 하면 엑스 에스를 와이에스를넣으면 됩니다. 코스트 옵티마이즈를 실행시키면 됩니다. 이 피드를 넣으면 됩니다. 그런 다음에 이런 학습을 통해서 모델을 만들고, 정확한가, 똑같은 방밥으로 정확히 가설을 넣고 0부터 9까지 오이값 실제 같으면 0 , 1 트루 펄스로 나누어지는 평균을 구하면 됩니다. 실행 시키면 이렇게 됩니다. 오케이요. 98 퍼센트의 정확도로 가능합니다. 


조금만 더 깊게 만들수 있나요. 콘블 하나 더 추가하고 풀리 커넥트를 2개 더 쓰면 됩니다. 기계적으로 연결만 해주면 됩니다. 여기에 하나만 더 연결시켜주면 되고요, 이 값을 펼쳐내고, 잘 기억했다가 필요한 만큼 웨잇을 정해서 출력하게습니다. 입력으로 받아서 10개를 내는 아까와 똑같은데 한단한다만 더 가지면 됩니다. 기계적으로 연결하면 됩니다. 이렇게 하면 어떤 장점이 있ㅇ르까요. 정확도가 높아진다는 것입니다. 드랍아웃을 사용하여 갑이 변한다는 것을 나타냅니다. 몇단계의 추가적인 것을 레이어를 넣었을때 99까지 이룰 수 있다는 것입니다. 클래스와 레이어와 앙상블에 대해서 이야기 하겠습니다. 


이전 시간에 굉장히 높은 정확도를 구현하였습니다. 소스코드를 보면 관리하기 어려운데 파이선의 클래스로 구분하도록 하겠습니다. 클래스를 하겠습니다. 초기화하고 세션을 넘겨주면 좋습니다. 초기화하고 빌드 넷이라는 것을 만듭니다. 오케이요. 풀리커넥트를 만들었습니다. 그런 다음에 여기에서, 도움 함수를 만듭니다. 예측하는 것 정확도 그리고 학습합는 것을 만듭니다. 필요한 데이터를 받습니다.  이렇게 클래스로 만들게 되면 편리한 것이 무엇인가요 클래스는 무엇인가요 엠원이라는 것을 만들고 모델 하나입니다. 루프 하나를 만들고 여기서 필요한 엑스 와이에스를 받아오면 세션을 할 필요없이 트레인이라는 도움함수를 바로 호출하면 됩니다. 그렇게 하면 깔끔하게 관리가 됩니다. 여기서 복잡한 시스템을 만들데 오케이. 덴셔플로우의 레이어스르라는 패키지가 있습니다. cnrkrk ehldj dlTtmqslek. zhsqhffntusdlfkejswl epstmsptdlfksms vnfflzjsprxlsm aksemfdj 하이레벨의 에이피아이이가 있습니다. 이것을 단순하게 할 수 있습니다. 한번 예를 들어 보면, 이렇게 할때 처음에 이해하는 것이 중요한데, 골치가 아풀 수 있씁니. 레이어를 사용하면 2디 레이어를 사용하면 이렇게 텐서플로우 2디 인풋입력이 무엇인지 객수가, 필터갯수가 무엇인가 커널 사이즈가 얼마인가를 주면 됩니다. 똑같은 표현인데, 이것을 이런식으로 필터 사이즈를 몇개 주겠다. 나누어서 간략하게 입력을 줄 수 있습니다. 풀 사이즈를 어떻게 할 것인가. 스타리이드를 2로 할래 이렇게 간단하게 할 수 있습니다. 이렇게 만든 것을 이렇게 넣어서 필터 사이즈 커널 사이즈 몇개 하겠습니다. 줄 수 가 있습니다. 레이어를 사용할 수 있ㅅmqslek. 트레이닝 인지 트루 펄스로 줄 수 있습니다. 레잇을 자동으로 1일 됩니다. 오케이. 풀리 커넥티드 우에ㅣ 갯수를 얼마인가 덴스라고 하고 인풋을 주고, 알아낼 수 있는 것 유닛 몇개 출력할 것인가 정해주고 어떤 액티베이트 이전에 갯수 엑티베이션 한줄로 구현가능합니다. 사용하면 좋습니다. 앙상블 모델에 대해서 앙상블을 적용한다는 것은 여러개의 독립된 모델을 트레이닝 시키고 테스팅할 데이터가 들어왔다 할때 각각의 하나의 모델에 대해서 예측해보라고 해서 예측을 시킨다음에 예측한 결과를 조합을 한다는 것입니다. 이 조합의 결과를 최종적으로 나타냅니다. 이 앙상블의 기본적인 모델입니다. 상당히 좋습니다. 어떻게 적용할 수 있을까요. 독립된 모델을 만들어 두었습니다. 클래스를 사용하면 쉽게 모델을 만들 수 있습니다. 모델을 담아낼 것입니다. 모델을 7개 만듭니다. 오케이요. 각각 모델을 이렇게 만들어 내는 것입니다. 이렇게 클래스 인시턴스가 생겨납니다. 학습을 돌리게 됩니다. 에폭을 돌고, 배치 사이즈, 배치 엑스 와이에스를 불러와서 학습을 시킵니다. 기존에는 7개의 독립된 모델을을 꺼내옵니다. 이것을 트레인을 시키는 것입니다. 트레인되고, 코스트가 어떻게 되는지 보고 각각 별로 코스트가 어떻게 되는지 살펴봅니다. 각각의 모델을 학습시킵니다. 그런 다음에 피리딕션을 할 것입니다. 학습의 결과로 이렇게 여러개가 생겨 납니다. 조합을 하게 될텐데 여러가지 방법이 있습니다. 이것을 간단하게 합하게 됩니다. 새롱ㄴ 이미지가 들어왔습니다. 각각 모델들에게 물어봅니다. 


3이 될 확률이 높습니다. 이런 식으로 시엠까지 이렇게 되어 있습니다. 예측이 되어 있습니다. 이런 다음에 예측이 끝이 났습니다. 그런다음에 모두 합하여서 섬입니다. 여기서 합이 된것에서 섬을 해서 아그맥스 가장 간단한 모든 확률을 모두 더해서 각각의 가장 높은 것을 선택하겠다 이것입니다. 이것을 구현해보면 구현도 복잡하지 않습니다. 공간이 필욯겠습니다. 공간을 만들어두고, 루프를 돕니다. 모델을 하나씩 꺼내와서 테스트 데이터를 두고 에측을 하게 하고 예측한 값을 더합니다. 프리딕션은 최종 모델이 합을 가지고 있겠습니다. 프리딕션이 될 것 입니다. 오케이요. 이것이 각각 피였고요, 모두 합이 되면 최종합이 된 것이 들어와 있습니다. 그렇게 한다음에, 아그맥스를 통해서 구하고 레이블과 비교해서 예측합니다. 이렇게 하면 긑이납니다. 이렇게 실제로 돌려보면 각각의 모델의 에큐레시보다 상당히 더 높게 나타납니다. 좋은 성능으 발휘하게 됩니다. 오케이. 이제 엠니스트는 끝까지 가보았습니다. 몇가지 숙제를 써보았습니다. 딥하게 와이드 하게 갈 수 있습니다. 복잡한 이미지넷이라는 데이터도 있습니다.